Ich verwende häufig die Minimierungsfunktion in JSL, um eine nichtlineare Gleichung zu lösen, und eine Sache, die mir aufgefallen ist, ist, dass die Funktion gelegentlich keine Konvergenz erreicht.Gibt es eine Möglichkeit, diese Ergebnisse aus dem Skript zu erhalten?
Ich schreibe ein Skript, um das Modell für viele verschiedene Teilmengen von Daten zu lösen, und obwohl ich die Parameter, das minimierte Ziel und die Anzahl der Iterationen für jedes gelöste Modell erhalten kann, weiß ich nicht, ob es zu einem Ergebnis geführt hat, weil es die maximalen Iterationen erreicht, konvergiert oder nicht konvergiert.Nachfolgend finden Sie ein Beispiel für die Funktion und die Ergebnisse eines großartigen Beitrags von Milo von JMP.
https://community.jmp.com/t5/JMPer-Cable/Minimize-and-Maximize-Functions-in-JSL/ba-p/36355
x = 0;
y = 0;
{objVal, iters, gradient, hessian} =
Minimize(
((2 * x ^ 2 + 12 * x * y - y * 3)),
{x( -1, 1 ), y( -1, 1 )},
<<MAXITER></MAXITER>
Diese Details unten werden in das Protokollfenster ausgegeben, und ich möchte den "Convergence SUCCESS" für die Ergebnisse jedes Modells erhalten, das ich ausführe.Irgendwelche Vorschläge würden geschätzt.
nParm=2 Newton ********************************************* ********
Iter nFree Objective RelGrad NormGrad2 Ridge nObj nGrad nHess Parm0 Parm1
0 2 0 0,125 0,5 0 1 1 1 0 0
1 1 -0,23568 29,52863 0,514107 2048 16 1 1 0,282987 -1
2 1 -1,92154 26,15693 0,310463 16 1 1 1 0,442808 -1
3 1 -6,6297 16,7406 0,002094 4 1 1 1 0,954236 -1
4 0 -7 . 0 1 1 1 1 1 -1
Konvergenz ERFOLG: Gradient
Zeit: 0.0166666666627862
x = 1;
y = -1;
objVal = -7;
Iter = 4;
Steigung = [-8, 9];
hessisch = [4 12, 12 0];
Dank @Mark_Bailey Das habe ich schließlich getan.Ich lösche das Protokoll, verwende dann get log(), um das Fenster zu greifen, und gehe dann durch, um das Element mit dem Begriff "Konvergenz" herauszuziehen.Ich hoffe jedoch, dass es einen direkteren Weg gibt, es zu bekommen.
Nachdem Minimize() zurückkehrt, könnten Sie die Funktion Get Log() aufrufen. Die Syntax lautet list = Get Log( < n > ). Das Ergebnis ist eine Liste von Zeilen aus dem Log-Fenster. Mit dem optionalen Integer-Argument können Sie die ersten n Zeilen (n positiv) oder die letzten n Zeilen (n negativ) auswählen.
Dann können Sie das Ergebnis der Konvergenz untersuchen.