Hallo allerseits,
Ich habe ein Modell im Profiler und möchte eine Reihe verschiedener Einstellungen speichern. Normalerweise verwende ich dazu die Einstellung „Parameter merken“ im Profiler. In diesem speziellen Fall möchte ich jedoch alle Kombinationen für die Parameter X1 bis X4 von -1 bis +1 in 0,1-Schritten speichern.
Dazu benötige ich Hilfe mit dem folgenden JSL-Code:
Profiler(
Y( :Y ),
Profiler(
1,
Confidence Intervals( 1 ),
Term Value(
:"X1"n( 0, Lock( 0 ), Show( 1 ) ),
:"X2"n( 0, Lock( 0 ), Show( 1 ) ),
:"X3"n( 0, Lock( 0 ), Show( 1 ) ),
:"X4"n( 0, Lock( 0 ), Show( 1 ) )
),
<FONT color="#FF0000">Merken: Einstellungen( "Einstellung 1", Differenzbericht( 1 ) ), Termwert( :"X1"n( 0, Lock( 0 ), Show( 1 ) ), :"X2"n( 0, Lock( 0 ), Show( 1 ) ), :"X3"n( 0, Lock( 0 ), Show( 1 ) ), :"X4"n( 0, Lock( 0 ), Show( 1 ) ) ) )</FONT>
);
Es wäre großartig, wenn jemand den vorhandenen Code optimieren könnte.
Dank im Voraus!
Ich bin mir nicht sicher, wie glücklich JMP wäre, dem Profiler so viele verschiedene Optionen hinzuzufügen (20*20*20*20, oder übersehe ich etwas?).
Sie könnten Ihrer Tabelle jedoch eine neue Zeile hinzufügen, die Sie mit Ihren Werten aktualisieren, und dann so oft eine Schleife ausführen, wie Sie unterschiedliche Einstellungen haben, während Sie diese aktualisieren und << Auf Daten in Zeile festlegen verwenden
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Tiretread.jmp", Invisible);
obj = dt << Contour Profiler(
Y(
:Pred Formula ABRASION, :Pred Formula MODULUS,
:Pred Formula ELONG, :Pred Formula HARDNESS
),
Invisible
);
settings = As List(Repeat(-1::1::0.1, 3)`);
dt << Add Rows(1);
max_row = N Rows(dt);
For Each({setting}, settings,
dt[max_row, {"SILICA", "SILANE", "SULFUR"}] = setting;
obj << Set to Data in Row(max_row);
obj << Remember Settings;
);
dt << Delete Rows(max_row);
obj << show window;
@jthi
Vielen Dank für die Bereitstellung des Codes. Der Code liefert mir 21 gespeicherte Einstellungen von -1 bis +1 in 0,1-Schritten für alle Faktoren, jedoch keine Kombinationen zwischen ihnen. Das ist eigentlich fast das, was ich will. Ich dachte, dass es für JMP vielleicht taff wäre , 21*21*21*21-Optionen zu haben, aber ich würde es wirklich gerne versuchen. Könnten Sie den Code für mich optimieren, um das zu ermöglichen?
Sie sollten in der Lage sein, mit Full Factorial Design alle möglichen Kombinationen zu erstellen.
Ich würde vorschlagen, dies NICHT mit allen möglichen Kombinationen auszuführen
Names Default To Here(1);
Clear Log();
// Calculate combinations - START
doe_platform = DOE(
Full Factorial Design,
{Add Response(Maximize, "Y", ., ., .), Add Factor(
Continuous,
{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21},
"X1",
0
), Add Factor(
Continuous,
{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21},
"X2",
0
), Add Factor(
Continuous,
{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21},
"X3",
0
), Add Factor(
Continuous,
{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21},
"X4",
0
), Set Random Seed(6613116), Make Design, Simulate Responses(0),
Set Run Order(Sort Left to Right)},
Invisible
);
dt = doe_platform << Make Table(Invisible);
doe_platform << Close Window;
m = dt[0, 2::5];
Close(dt, no save);
Show(N Items(m), Dim(m), N Row(m) == 21^4); // N Items(m) = 777924; Dim(m) = [194481 4]; N Row(m) == 21 ^ 4 = 1;
settings = As List((m - 11) / 10);
m = Empty();
// Calculate combinations - END
dt = Open("$SAMPLE_DATA/Tiretread.jmp", Invisible);
dt << New Column("A", Numeric, Continuous, Formula(
:SILICA * :SILANE * :SULFUR * :ELONG
));
obj = dt << Contour Profiler(
Y(A),
Invisible
);
dt << Add Rows(1);
max_row = N Rows(dt);
For Each({setting}, settings[1::100],
dt[max_row, {"SILICA", "SILANE", "SULFUR", "ELONG"}] = setting;
obj << Set to Data in Row(max_row);
obj << Remember Settings;
);
dt << Delete Rows(max_row);
obj << show window;
Write();