Salut tout le monde,
J'ai un modèle dans le profileur et j'aimerais enregistrer de nombreux paramètres différents. Habituellement, j'utilise le paramètre Remember Parameter Setting dans le Profiler pour ce faire. Cependant, dans ce cas particulier, je souhaite enregistrer toutes les combinaisons des paramètres X1 à X4 de -1 à +1 par pas de 0,1.
J'ai besoin d'aide avec le code JSL suivant pour ce faire :
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">Mémoriser les paramètres( "Paramètre 1", Rapport de différences( 1 ) ), Valeur du terme( :"X1"n( 0, Lock( 0 ), Show( 1 ) ), :"X2"n( 0, Lock( 0 ), Afficher( 1 ) ), :"X3"n( 0, Verrouiller( 0 ), Afficher( 1 ) ), :"X4"n( 0, Verrouiller( 0 ), Afficher( 1 ) ) ) )</FONT>
);
Ce serait génial si quelqu'un pouvait modifier le code existant.
Merci d'avance!
Je ne sais pas à quel point JMP serait heureux d'ajouter autant d'options différentes au profileur (20*20*20*20 ou est-ce que j'ai raté quelque chose ?).
Mais vous pouvez ajouter une nouvelle ligne à votre table avec laquelle vous mettez à jour avec vos valeurs, puis boucler autant de fois que vous avez des paramètres différents tout en la mettant à jour et en utilisant << Définir sur les données dans la ligne
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
Merci beaucoup d'avoir fourni le code. Le code me fournit 21 paramètres mémorisés de -1 à +1 par pas de 0,1 pour tous les facteurs mais aucune combinaison entre eux. C'est en fait presque ce que je veux. J'ai pensé qu'il serait peut-être inutile que JMP ait des options 21*21*21*21, mais j'aimerais vraiment essayer. Pourriez-vous modifier le code pour que cela soit possible ?
Vous devriez pouvoir utiliser la conception factorielle complète pour créer toutes les combinaisons possibles.
Je suggérerais de NE PAS exécuter ceci avec toutes les combinaisons possibles
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();