@@ -292,6 +292,16 @@ def generate_synthetic(args):
292292 for dockerproblem in dockersimbenches
293293})
294294
295+ from problems .DockerHospitalBenchmark import dockerhospitalsimbenches
296+ problems .update ({
297+ dockerproblem .name .lower (): {
298+ 'args' : set (),
299+ 'defaults' : {},
300+ 'constructor' : generate_construct_synthetic (dockerproblem )
301+ }
302+ for dockerproblem in dockerhospitalsimbenches
303+ })
304+
295305def nop (* x , ** y ):
296306 pass
297307
@@ -325,6 +335,7 @@ def execute_IDONE(params, problem, max_eval, log):
325335 assert rand_evals >= 1 , "IDONE requires at least one initial random evaluation."
326336 return optimize_IDONE (problem , max_eval , rand_evals = rand_evals , model = type_model , binarize_categorical = binarize_categorical , binarize_int = binarize_int , sampling = sampling , enable_scaling = enable_scaling , log = log , exploration_prob = expl_prob , idone_log = idone_log )
327337
338+ ## MVRSM
328339def execute_MVRSM (params , problem , max_eval , log ):
329340 from solvers .MVRSM .wMVRSM import optimize_MVRSM
330341 if params ['--model' ] not in ['basic' , 'advanced' ]:
@@ -333,21 +344,27 @@ def execute_MVRSM(params, problem, max_eval, log):
333344 raise ValueError ("--binarize-categorical should be a boolean." )
334345 if params ['--scaling' ] not in ['true' , 't' , 'yes' , 'y' , 'false' , 'f' , 'no' , 'n' ]:
335346 raise ValueError ("--scaling should be a boolean." )
347+ if params ['--optimizer' ] not in ['adam' , 'L-BFGS-B' , 'CMA-ES' ]:
348+ raise ValueError ("Valid optimizers are `adam` and 'L-BFGS-B'" )
336349
337350 type_model = params ['--model' ]
338351 binarize_categorical = params ['--binarize-categorical' ] in ['true' ,'t' , 'yes' , 'y' ]
339352 enable_scaling = params ['--scaling' ] in ['true' ,'t' , 'yes' , 'y' ]
340353 rand_evals = int (params ['--rand-evals' ]) - 1
354+ optimizer = params .get ('--optimizer' )
355+ bound_h = params ['--boundary-handler' ]
341356 assert rand_evals >= 0 , "MVRSM requires at least one initial random evaluation."
342357
343- return optimize_MVRSM (problem , max_eval , rand_evals = rand_evals , model = type_model , binarize_categorical = binarize_categorical , enable_scaling = enable_scaling , log = log )
358+ return optimize_MVRSM (problem , max_eval , rand_evals = rand_evals , model = type_model , binarize_categorical = binarize_categorical , enable_scaling = enable_scaling , optimizer = optimizer , bound_h = bound_h , log = log )
344359
345- # SA
360+ ## SA
346361def execute_SA (params , problem , max_eval , log ):
347362 from solvers .SA .wSA import optimize_SA
348363
349364 return optimize_SA (problem , max_eval , log = log )
350365
366+
367+ ## DONE
351368def check_DONEjl ():
352369 from solvers .DONEjl .wDONEjl import minimize_DONEjl
353370 import numpy as np
@@ -376,7 +393,7 @@ def execute_DONEjl(params, problem, max_eval, log):
376393
377394 return optimize_DONEjl (problem , rand_evals , max_eval , hyperparams , log = log )
378395
379- # Hyperopt TPE
396+ ## Hyperopt TPE
380397def execute_hyperopt (params , problem , max_eval , log ):
381398 from solvers .hyperopt .whyperopt import optimize_hyperopt_tpe
382399 rand_evals = int (params ['--rand-evals' ])
@@ -396,7 +413,7 @@ def execute_hyperopt_rnd(params, problem, max_eval, log):
396413
397414 return optimize_hyperopt_rnd (problem , max_eval , cparams = conversion_params , log = log )
398415
399- # pyGPGO
416+ ## pyGPGO
400417def execute_pygpgo (params , problem , max_eval , log ):
401418 from solvers .pyGPGO .wpyGPGO import optimize_pyGPGO
402419 from pyGPGO .covfunc import matern32
@@ -410,14 +427,14 @@ def execute_pygpgo(params, problem, max_eval, log):
410427 acq = Acquisition (mode = 'ExpectedImprovement' )
411428 return optimize_pyGPGO (problem , max_eval , gp , acq , random_init_evals = rand_evals , log = log )
412429
413- # bayesian-optimization
430+ ## bayesian-optimization
414431def execute_bayesianoptimization (params , problem , max_eval , log ):
415432 from solvers .bayesianoptimization .wbayesianoptimization import optimize_bayesian_optimization
416433 rand_evals = int (params ['--rand-evals' ])
417434 # TODO: Allow picking different configurations?
418435 return optimize_bayesian_optimization (problem , max_eval , random_init_evals = rand_evals , log = log )
419436
420- # smac
437+ ## smac
421438def execute_smac (params , problem , max_eval , log ):
422439 from solvers .smac .wsmac import optimize_smac
423440 rand_evals = int (params ['--rand-evals' ])
@@ -428,12 +445,20 @@ def check_smac():
428445 from solvers .smac .wsmac import optimize_smac
429446 pass
430447
431- # CoCaBO
448+ ## CoCaBO
432449def execute_cocabo (params , problem , max_eval , log ):
433450 from solvers .CoCaBO .wCoCaBo import optimize_CoCaBO
434451 rand_evals = int (params ['--rand-evals' ])
435452 return optimize_CoCaBO (problem , max_eval , init_points = rand_evals , log = log )
436453
454+ ## CMA
455+ def execute_cma (params , problem , max_eval , log ):
456+ from solvers .CMA .wCMA import optimize_CMA
457+ bound_h = params ['--boundary-handler' ]
458+
459+ return optimize_CMA (problem , max_eval , bound_h = bound_h , binarize_categorical = False , log = log )
460+
461+ ## Basinhopping
437462def execute_scipy_basinhopping (params , problem , max_eval , log ):
438463 from solvers .scipy .wscipy import optimize_basinhopping
439464 T = float (params ['--T' ])
@@ -442,6 +467,7 @@ def execute_scipy_basinhopping(params, problem, max_eval, log):
442467
443468 return optimize_basinhopping (problem , max_eval , T = T , stepsize = stepsize , localmethod = method , log = log )
444469
470+ ## Local search
445471def execute_scipy_local (params , problem , max_eval , log ):
446472 from solvers .scipy .wscipy import optimize_scipy_local
447473 method = params ['--method' ]
@@ -466,12 +492,14 @@ def execute_scipy_local(params, problem, max_eval, log):
466492 'check' : nop
467493 },
468494 'mvrsm' : {
469- 'args' : {'--model' , '--binarize-categorical' , '--rand-evals' , '--scaling' },
495+ 'args' : {'--model' , '--binarize-categorical' , '--rand-evals' , '--scaling' , '--optimizer' , '--boundary-handler' },
470496 'defaults' : {
471497 '--model' : 'advanced' ,
472498 '--binarize-categorical' : 'false' ,
473499 '--rand-evals' : '5' ,
474- '--scaling' : 'true'
500+ '--scaling' : 'true' ,
501+ '--optimizer' : 'L-BFGS-B' ,
502+ '--boundary-handler' : 'transform'
475503 },
476504 'executor' : execute_MVRSM ,
477505 'check' : nop
@@ -544,6 +572,14 @@ def execute_scipy_local(params, problem, max_eval, log):
544572 'executor' : execute_cocabo ,
545573 'check' : nop
546574 },
575+ 'cma' : {
576+ 'args' : {'--boundary-handler' },
577+ 'defaults' : {
578+ '--boundary-handler' : 'penalty'
579+ },
580+ 'executor' : execute_cma ,
581+ 'check' : nop
582+ },
547583 'scipy-basin' : {
548584 'args' : {'--T' , '--stepsize' , '--method' },
549585 'defaults' : {
@@ -645,6 +681,7 @@ def execute_scipy_local(params, problem, max_eval, log):
645681 print (f" --binarize-categorical=<t|true|f|false> \t Whether to binarize categorical variables. (default: false)" )
646682 print (f" --scaling=<t|true|f|false> \t Whether scaling is applied. (default: true)" )
647683 print (f" --rand-evals=<int> \t Number of random evaluations. (default: 1)" )
684+ print (f" --optimizer=<adam|LBFGSB> Optimizer for the surrogate model (default: LBFGSB)" )
648685 print ()
649686 # HyperOpt
650687 print (f" hyperopt" )
0 commit comments