Ciao,
Vorrei creare uno script, in cui, in base a una variabile di input precedente, viene inviato un messaggio all'oggetto DOE[] per funzionare con un fattore aggiuntivo.
La generazione del design DOE ora è pesante da eseguire (circa 30 secondi), quindi sto cercando un modo snello (ad es. modificarlo prima di inviare il messaggio "make design").
Idealmente mi piacerebbe lavorare con una clausola if, controllando se una detta variabile booleana è vera e in tal caso aggiungere il fattore al design personalizzato.
Qualche 'pseudocodice':
AddSpecialFactor = 1; /* decision rule to add factor, will be retrieved from a modal window based on some more complex molecule chemistry input */
D = DOE(
custom design,
Add Factor(continuous, "A",.....),
Add Factor( ...),
..
If (AddSpecialFactor = 1) then Add Factor(....),
Add Term(),
..
If (AddSpecialFactor = 1) then Add Term() ...,
Tutti i suggerimenti sono più che benvenuti
È un'idea interessante per la generazione del design.
Stavo lavorando solo per prendere i progetti da un CSV e generare DOE. https://community.jmp.com/t5/Byron-Wingerd-s-Blog/Automating-Design-Generation/ba-p/407039
Potrebbe funzionare se il tuo concetto di script genera una tabella di dati e quindi utilizza lo script nel blog sopra per caricare ed eseguire la piattaforma DOE.
Forse ottieni un elenco di nomi di colonne e, se quell'elenco contiene determinate parole, aggiungi colonne con i livelli di fattore appropriati?
Grazie Byron,
Caricare da una tabella è una bella idea.
Anche se devo adattare il modello in quanto è più complicato come RSM: ha fattori di ramificazione come nella pubblicazione di Peter Goos e Bradley Jones:
Goos e Jones (2019) Progettazione sperimentale ottimale in presenza di fattori nidificati. Tecnometria.
https://doi.org/10.1080/00401706.2018.1562986
Hai anche esempi in cui il codice è compilato in formato testo e quindi utilizzato per un'espressione Evaluation().
Piace:
DOECODE = "Part of the code " || if(..,) || etc...
.
.
DOEcommand = evaluate(DOECODE);
DOETable = (DOEcommand << Make Table);
Ecco un esempio di come potresti scrivere questo processo.
Names Default to Here( 1 );
dialog = New Window( "Optional Factor", << Modal,
Outline Box( "Choice",
Text Box( "Add X4?" ),
Text Box( "Click OK to add" ),
Text Box( "Click Cancel to skip" )
),
H List Box(
Button Box( "OK" ),
Button Box( "Cancel" )
)
);
doe = DOE( Custom Design,
{Add Response( Maximize, "Y", ., ., . ),
Add Factor( Continuous, -1, 1, "X1", 0 ),
Add Factor( Continuous, -1, 1, "X2", 0 ),
Add Factor( Continuous, -1, 1, "X3", 0 ), Set Random Seed( 30650037 ),
Add Term( {1, 0} ), Add Term( {1, 1} ), Add Term( {2, 1} ), Add Term( {3, 1} ),
Add Term( {1, 1}, {2, 1} ), Add Term( {1, 1}, {3, 1} ),
Add Term( {2, 1}, {3, 1} ), Set Sample Size( 12 ), Simulate Responses( 0 ),
Save X Matrix( 0 )}
);
// add 4th factor and the associated main effect and interaction terms
If( dialog["Button"] == 1,
doe
<< Add Factor( Continuous, -1, 1, "X4", 0 )
<< Add Term( {4, 1} )
<< Add Term( {1, 1}, {4, 1} )
<< Add Term( {2, 1}, {4, 1} )
<< Add Term( {3, 1}, {4, 1} )
);