Klassische Optimierungsverfahren der nichtlinieren Programmierung: Lennard-Jones

Hallo Leute! ich brauche dringend euere Hilfe bei der Realisierung des Problems mit Java:
Lennard-Jones
Es sind n Atome im dreidimensionalen Raum derartig zu positionieren, dass die gesamte potentielle Energie minimal wird. Die zwischen
den Atomen wirkenden abstoßenden Kräfte bewirken ein Potential, das mit dem Kehrwert der 12. Potenz der Atomabstände abnimmt. Die
anziehenden Kräfte haben ein Potential, das mit der dem Kehrwert der 6. Potenz dieser Abstände zunimmt. Die zu optimierende Funktion
ist

Danke.

der Link ist ungültig.

bye
TT

Danke, hab es geändert!
Bye

Ich bring mal „den Klassiker“ : Was ist jetzt die Frage ?

Was hast du bereits ? Wo gibts Probleme ? Was hast du schon versucht um diese selbst zu lösen ?

Um mal einen ähnlichen Thread zu zitieren :

Du brauchst für dich selber und gar nicht für irgendeine Hausaufgabe ein Programm mit [Problem hier einfügen]. Komm verarschen kann ich mich selber auch, sogar besser. Wenn du hier ehrlich nach Hilfe fragst und auch bereit bist zu lernen wird dir auch geholfen, so nicht.

Oder einfacher : wir machen hier nicht deine Hausaufgaben …
Sorry, aber vielleicht mal drüber nach gedacht solche Aufgaben dazu gedacht sind das DU was lernst ? Völlig egal ob du n Studium oder ne Ausbildung machst … aber in der Prüfung wirst du uns auch nicht fragen können … und dann zurecht völlig auf die Schnauze fallen …

Mal von abgesehen das für die Lösung einiges an (zumindest mathematischem) Hintergrundwissen nötig sein dürfte das hier keiner haben wird …

vote 4 move/close

@Sen-Mithrarin : der einzige Punkt in dem ich dir zustimme ist, dass eine konkrete Frage fehlt. Eine komplette Lösung wird er nicht vorgekaut bekommen, bei konkreten Problemen aber sicher Hilfe bekommen.

Nur weil du das Wissen nicht hast, bedeutet das noch lange nicht, dass es niemand anders hat. Je nach Vertiefungsrichtung macht man so etwas im Informatikstudium (Stichwort: Vorlesungstitel „Optimierung“). Und hier tummeln sich einige herum, die studiert haben…

Seit wann wird hier abgestimmt, wie die Moderatoren mit Threads zu verfahren haben?
Mal wieder ein vollkommen fehlgeleiteter Beitrag von dir!

Naja, mein erstes Gefühl bei der Formel wäre es mit einer Art des Simulated Annealing zu versuchen, für viele Atome sieht mir das aber eher so aus als ob da etwas mehr Rechenpower benötigt würde, dann vll. eine parallele Version. Vll. kommt man auch schon mit einem Gradientenverfahren weiter. Schau mal ob du an der Uni die Encyclopedia of Optimization findest und ob da was zu dem Thema steht.

Das wirkt auf mich auch wie Hausaufgaben, deswegen habe ich das ganze mal in den entsprechenden Hausaufgaben-Bereich verschoben.

@micheletakenne : wir helfen dir natürlich hier gerne bei deinen Hausaufgaben. Was aber nicht impliziert, dass wir diese auch für dich lösen ;-). Aber wenn du Eigeninitiative zeigst und mal postest, was du bereits versucht hast - dann helfen dir die Leute hier auch sicher gerne weiter und sagen dir, wo du Fehler gemacht hast.

Vor allem stammt das doch sicher aus einer Vorlesung, in der schon ein Verfahren besprochen wurde, das man anwenden soll.

die Frage sollte eigentlich klar sein: Lösung zur Aufgabe bzw. jeden denkbaren Teil davon :wink:

ich habe Zweifel dass die Aufgabe überhaupt in Java ist, klingt nach allgemeiner Betrachtung, n ist auch gar nicht konkret gegeben?
wobei natürlich ein Programm nett wäre das eine Lösung für ein bestimmtes n ausrechnet,
aber würde das zur Aufgabe helfen?

„klassische Optimierungsverfahren der nichtlinieren Programmierung“ klingt natürlich nach Programmierung und sonstige Lösungen auch nicht leicht denkbar


das Problem ist eines von denen, die man nicht notfalls in kleinen Schritten nach und nach erarbeiten kann,
da braucht es wahrscheinlich schon eine geniale Idee für Anordnungsstrategien, Gitterstruktur, Bienenwagen oder sowas

als Vorleistung kann aber auch jeden Fall viel drumherum schon angegangen werden, Atome, Kraft/Potentialberechnung,
3D-Raum, Beispiel mit 4 Atomen festgesetzt + Endrechnung,
hilft letzlich nicht unbedingt, damit hier das Forum vollzuspammen, aber davon was zu zeigen würde die eigene Ernsthaftigkeit besser bezeugen als nur die Aufgabe zu posten

Die Aufgabe erinnert mich an Keplers Apfelsinenproblem. Das scheint mittlerweile irgendwie gelöst worden zu sein, aber leicht war’s wohl nicht…
Hast du mal mathematische Werkzeuge wie Lagrange-Multiplikatoren versucht?

Nö, da geht gar nichts mit so einfachen Mitteln. Der soll n Flugzeuge im dreidimensionalen Raum so platzieren, dass die gegenseitige potenzielle Energie minimal wird, dabei gibt es eine komplizierte Wechselwirkung (wenn sehr nah, Abstossung weil d^12 das d^6 überwiegt, wenn weit entfernt, dann Anziehung weil dann d^6 überwiegt)

Man könnte das natürlich dynamisch machen und die Dinger einfach losfliegen lassen und schauen, was passiert…

@DowJones

“Gelöst” sind die viele Optimierungsprobleme, es stellt sich da eher die Frage wie schnell kommt man zu der Lösung. Und das Beschriebene ist ein Problem welches schon vielfältig angesehen wurde. Eine ähnliche Aufgabe für genau 2 Atome findet sich z.B. hier Simulated Annealing, oder hier http://www.mat.univie.ac.at/~neum/glopt/mss/Fan02.pdf eine Ausarbeitung für kleine Instanzen mit Gradientenmethoden, oder hier Global optimization of Lennard-Jones clusters by a parallel fast an… - PubMed - NCBI mit Hybridmethoden und das geht immer so weiter. Ich bin mir sicher das der OT auch Optimierungsmethoden kennengelernt hat die mit vertretbarem Aufwand in Java zu realisieren sind und für kleine Instanzen zu einem Ergebnis führen.

Hallo Leute!
ich danke euch für ihre Teilnahme.
Ja es ist eine Aufgabe, die ich bekommen habe, die Vorlesung heisst “Problemlösen”. Ich kenne mich nicht mit java aus aber ich habe versuch einen Entwurf zu machen. ielleicht hilft es weiter:

Klassenbeschreibung
Unser Programm zur Minimierung nichtlinearer Funktionen besitzt zwei grundlegende Klassentypen. Der eine Typ sind die Problemklassen Lennard - Jones und Polynom. Der andere Klassentyp besteht aus den Lösungsalgorithmen HookeJeeves, MutationSelek, HillClimbing und Differential-Evolutionsverfahren.
Problemklassen
Die Problemklassen sind von der abstrakten Klasse abgeleitet. Diese Klasse besitzt ein Array und ermöglicht den Algorithmus der Unterklassen Lennard-Jones und Polynom zuzugreifen. Außerdem kann man das Array auslesen oder bearbeiten.
Des Weiteren ist in den Problemklassen alles implementiert, was zur Beschreibung und Berechnung des jeweiligen Problems benötigt wird.
Algorithmusklassen
Die Lösungsalgorithmen bekommen Objekte übergeben. Es muss möglich sein die Algorithmen zu starten.
EingabeAusgabe
Die Klasse EingabeAusgabe dient zum Einlesen der .txt-Datei und zum Ausgeben des Ergebnisses in eine .csv-Datei, welche in Excel weiter verarbeitet wird.
Main
Die Mainklasse steuert letztendlich, welches Problem mit welchem Algorithmus gestartet wird.

Du hast noch immer keine konkrete Frage gestellt. Was auch nicht deutlich wird: was ist bereits implementiert / vorgegeben?
@micheletakenne : besuchst du die Hochschule Fulda?

@cmrudolph :ja ich besuche die HS Fulda.

Allgemeine Beschreibung
Für die Approximation wird zwischen den folgenden klassischen Optimierungsverfahren: 1. Hill Climbing-Methode, 2. Rastersuche nach Hooke-Jeeves und 3. Mutations-Selektions-Verfahren nach Rechenberg 4. Differential-Evolution-Verfahren gewählt.
Ziel ist es, von n-Atomen in einem dreidimensionalen Raum den Punkte zu finden, an den eine möglichst geringe potentielle Energie auftritt und zwar mit Hilfe der oben genannten klassischen Optimierungsverfahren.

Es fehlt immer noch die bisher erbrachte Eigenleistung und die konkrete Frage, wo du nicht weiter kommst.

obwohl ich ja allgemein der Meinung bin, die Frage wäre klar → ‚bitte Lösung‘
zu

wäre es günstig, wenn du dir ein oder mehrere diese Verfahren allgemein anschauen würdest, sie nach bekannten Referenz-Beispielen implementierst,
sie dann in irgendeiner Weise auf den aktuellen Fall losläßt (dazu wie auch schon gesagt günstig, wenn entsprechende Dinge wie Atom + Kraft-Rechnung auch bereits modelliert),
und dann irgendwelche Ergebnisse präsentierst die noch nicht optimal sind (oder wahrscheinlicher nicht laufen) und Genialität anderer erfordern

das würde deine Arbeit zeigen, bei der andere vielleicht nur noch 5% beitragen müssen

natürlich muss nicht alles bis zu diesem Punkt funktionieren, wenn du dabei andere Probleme hast a la

  • was ist überhaupt Hill Climbing-Methode, wie zum implementieren
  • ich bekomme die Kraft-Rechnung mit folgenden Code folgenden zwei Beispielatomen nicht hin
  • was ist eine Klasse, was ist Java?
    dann hätte man wenigstens etwas konkretes zu besprechen

unabhängig von solchen Strohhalmen sieht alles insgesamt viel zu groß aus, hier in einen Forumthread zu passen,
wieviel Zeit hast du? eine Woche → hier kam man bisher ja gar nicht vom Fleck
1-n Monate? → dein Mega-Projekt wird kaum zu wesentlichen Teilen im Forum entstehen

[quote=SlaterB]wieviel Zeit hast du? eine Woche -> hier kam man bisher ja gar nicht vom Fleck
1-n Monate? -> dein Mega-Projekt wird kaum zu wesentlichen Teilen im Forum entstehen[/quote]
Deshalb hatte ich nach der Uni gefragt. Normalerweise scheint diese Aufgabe an der HS Fulda ein Gruppenprojekt über einen längeren Zeitraum zu sein.

Hallo Leute!
ich lerne gerade die Sprache Java und ich habe versuche ein Program Name" LennardJonesProblem" , wo den Abstand di,j und potenzial berechnet werden sollen zu schreiben. Aber wie kriege ich die Ergebnisse für zum Bespiel : n=1,2,3,4,…?
Danke

Das wird ganz schwer, nochmal zur Klarstellung:

Du willst

  1. ein Java-Programm schreiben, dass so ein LennardJonesProblem löst

  2. du lernst gerade Java

das wird sehr schwer…

Zu deiner Frage: Das n steckt bei dir in

double[] x

bei n Partikeln hätte das etwa die Länge 3n.