globale Optimierung einer min-Funktion

Neue Frage »

marocaine Auf diesen Beitrag antworten »
globale Optimierung einer min-Funktion
Hallo Matheboard-Gemeinde,

welcher globale und gradienten-basierte Optimierungsalgorithmus ist für folgendes Problem angemessen:




s.t.





mit


In einer Einführung zum Optimierungspaket nloptr für die Software R (Link) bin ich schließlich auf den Tip gestoßen, das Ganze wie folgt umzuschreiben:




s.t.







Nun ist die (triviale) Zielfunktion stetig differenzierbar und ich kann für sie einen Gradienten angeben.
Ebenso kann ich für die Nebenbedingungen eine exakte Jakobi-Matrix angeben, und wäre somit theoretisch in der Lage, einen gradienten-basierten globalen Optimierungsalgorithmus zu verwenden. Gradienten-basiert ist wichtig, weil ich über tausende von optimiere. Hat mir jemand Algorithmen-Namen, optimalerweise mit Implementierung in R?

Danke und beste Grüße,
maro
Frehmen Auf diesen Beitrag antworten »

hallo marocaine,

du kannst dir überlegen, dass für das Optimum die n+1 Gleichungen und gelten. Das Gleichungssystem lässt sich mit dem eindimensionalen Newtonverfahren lösen, da du aus berechnen kannst, somit erhältst du die Problemstellung . Da die Nullstelle einfach ist, konvergiet das Verfahren quadratisch.
marocaine Auf diesen Beitrag antworten »

Hi Frehmen,

danke für deine Antwort! Ich habe das ganze bei mir auf der Software R umgesetzt und in ein paar Sekunden eine Antwort erhalten. Allerdings macht sie grafisch betrachtet nicht viel Sinn, weshalb ich mal meine konkrete Ausführung darlege:

Durch die Bedingung erhalte ich . Ich löse nach auf und erhalte .

Daraus folgt dann

Ich habe das nun mit folgenden Werten für bzw. per Newton-Verfahren gelöst:

  • : 0.003847201 0.005128778 0.005964946 0.006183100 0.006773856 0.007548244 0.008244311 0.008709588 0.008903145 0.009909643 0.010064489
  • : 2.5 2.0 2.0 2.0 2.0 2.5 2.8 2.3 2.0 2.0 2.0 2.8 2.5 5.3 2.8 3.0 2.0 3.3 2.8


Für erhalte ich die Lösungen

  • 945695.9400 30553.4197 7916.6536 5910.3454 2944.0093 1741.1965 1122.1198 669.2062 514.3960 292.7472 271.1292
    353.0151 308.9265 570.0618 293.3868 235.6960 153.4734 249.8520 204.4255.


Wie man sieht, ist relativ zu den anderen Variablen enorm groß. Mir scheint das zu groß zu sein, weshalb ich einen Fehler meinerseits vermute. Habe ich im Post irgendwo einen Denkfehler gemacht? Falls nicht: Hat jemand die Möglichkeit, das Optimierungsproblem auf seinem Computer zu lösen und seine Ergebnisse zu posten? Dann kann ich sehen, ob der Fehler vielleicht in meinem R-Code liegt.

Danke und beste Grüße,
maro
marocaine Auf diesen Beitrag antworten »

Korrektur (K vergessen):

Neue Frage »
Antworten »



Verwandte Themen

Die Beliebtesten »
Die Größten »
Die Neuesten »