Nicht-monotone Ausgabe von Constrained Optimization in R

9

Problem

Die constOptim Funktion ist R gibt mir eine Reihe von Parameterschätzungen. Diese Parameterschätzungen geben Werte an 12 verschiedenen Punkten im Jahr aus und sollten monoton abnehmen.

Ich brauche sie monoton und für die Lücken zwischen den einzelnen Parametern für die Anwendung, die ich mir vorstelle. Für diese Zwecke ist das Muster der Ausgabenwerte wichtig und nicht die absoluten Werte. Ich denke, im Optimierungsbereich bedeutet das, dass ich die Toleranz im Vergleich zu den Unterschieden in den Parameterschätzungen klein halten muss.

Minimales Arbeitsbeispiel (mit einfacher Hilfefunktion)

%Vor%

Das Ergebnis:

Die Ausgabe der Funktion ist nicht monoton.

%Vor%

Meine Versuche, es zu beheben

Ich habe es versucht:

  • Erhöhung der Toleranz (Dies ist oben im Code mit outer.eps = 1e-10 )
  • Erhöhung der Anzahl der Iterationen (Dies ist oben im Code mit outer.iterations = 100 )
  • Verbesserung der Qualität der anfänglichen Parameterwerte. Ich tat dies mit meinem tatsächlichen Fall (derselbe, aber mit einer viel komplizierteren Dienstprogrammfunktion), aber löste das Problem nicht.
  • Skalierung des Problems durch Erhöhung des Budgets oder Multiplikation der Dienstprogrammfunktion mit einem Skalar.

Weitere Fragen zu constOptim

Andere SO-Fragen konzentrieren sich auf Schwierigkeiten beim Schreiben der Einschränkungen für constOptim wie:

  1. Einschränkungen in constrOptim festlegen
  2. Optimierungsprobleme in R einschränken

Ich habe nichts gefunden, das Toleranzen oder Unzufriedenheit mit der Ausgabe untersucht.

    
Stuart 19.05.2014, 14:49
quelle

1 Antwort

3

Dies ist nicht genau eine Antwort, aber es ist länger als ein Kommentar und sollte hilfreich sein.

Ich denke, Ihr Problem hat eine analytische Lösung - das ist gut zu wissen, wenn Sie einen Optimierungsalgorithmus testen.

Hier ist es, wenn das Budget auf 1.0 festgelegt ist.

%Vor%

Hier verbraucht der Verbraucher in den Perioden {0, 1, ..., T-1}. Die Lösung nimmt mit dem Zeitindex tatsächlich monoton ab. Ich habe das bekommen, indem ich einen Lagrangian eingerichtet habe und mit den Bedingungen erster Ordnung gearbeitet habe.

BEARBEITEN:

Ich habe Ihren Code umgeschrieben und alles scheint richtig zu funktionieren: constrOptim bietet eine Lösung, die mit meiner analytischen Lösung übereinstimmt. Das Budget ist auf 1 festgelegt.

%Vor%

Follow-up über Gradienten:

Die Optimierung scheint sogar mit grad = NULL zu funktionieren, was bedeutet, dass es wahrscheinlich einen Fehler in Ihrem Code gibt. Schau dir das an:

%Vor%

Follow-up über Rho = 0,996 Fall:

Als rho- & gt; 1 sollte die Lösung gegen rep (1 / T, T) konvergieren - das erklärt, warum schon kleine Fehler von constrOptim merklich beeinflussen, ob die Ausgabe monoton abnimmt oder nicht.

Bei rho = 0,996 scheint der Optimierungsparameter die Ausgabe von contrOptim so zu beeinflussen, dass die Monotonie geändert wird - siehe unten:

%Vor%

Wenn Sie den richtigen Abstimmparameter wählen, erhalten Sie ein monoton fallendes Ergebnis auch ohne den Gradienten.

    
Adrian 19.05.2014, 16:21
quelle

Tags und Links