Setup optimization engine¶
The simplest approach, (see Getting started), just covers detail
of the more specific configurations, especially for the optimization engine
itself, however genopt provides different interfaces to make customized
adjustment.
Method¶
DakotaMethod is designed to handle method block, which is essential
to define the optimization method, e.g.
oc_method = genopt.DakotaMethod(method='ps', max_iterations=200,
contraction_factor=0.8)
# other options could be added, like max_function_evaluations=2000
oc_ins.set_method(oc_method)
Interface¶
DakotaInterface is designed to handle interface block, for the
general optimization regime, fork mode is the common case, only if
the analysis driver is compile into dakota, direct could be used.
Here is an example of user-defined interface:
bpms = [10,20,30]
hcors, vcors = [5, 10, 20], [7, 12, 30]
latfile = 'test.lat'
oc_inter = genopt.DakotaInterface(mode='fork',
driver='flamedriver_oc',
latfile=latfile,
bpms=bpms, hcors=hcors, vcors=vcors,)
# set interface
oc_ins.set_interface(oc_inter)
Note
Extra parameters could be added by this way: oc_inter.set_extra(deactivate=”active_set_vector”)
Responses¶
Objective function(s) and gradients/hessians could be set in
responses block, which is handled by DakotaResponses class.
Typical example:
oc_responses = DakotaResponses(gradient='numerical', step=2.0e-7)
oc_ins.set_responses(oc_responses)
Environment¶
Dakota environment block could be adjusted by instantiating class
DakotaEnviron, e.g.
datfile = 'dakota1.dat'
e = genopt.DakotaEnviron(tabfile=datfile)
oc_ins.set_environ(e)
tabfile option could be used to define where the dakota tabular data
should go, will not generate tabular file if not set.
Model¶
DakotaModel is designed to handle model block, recently, just use
the default configuration, i.e:
oc_ins.set_model()
# or:
m = genopt.DakotaModel()
oc_ins.set_model(m)