Functionality to handle individual designs and DOEs. These can either emerge from Actor calculation results or be manually constructed.:
import os import numpy as np import py_os_design as pod from py_os_parameter import PyParameterManager from py_omdb import PyOMDB def f(x): s = np.sum(x) if s >= 0: return np.sqrt(s) else: return np.nan # constants dim = 4 # problem dimension N = 12 # number of designs start_design = 23 # design numbers to start with this number param_names = ['x' + str(i) for i in range(dim)] lower_bounds = np.array(dim * [-2.0], dtype=float) upper_bounds = np.array(dim * [5.0], dtype=float) # creating new design points design_container = pod.PyOSDesignContainer() # creating an empty new design container for j in range(N): # creating an empty new design design = pod.PyOSDesign() # creating a new design params = pod.PyOSDesignPoint() # object for storing parameters for the new design resps = pod.PyOSDesignPoint() # object for storing responses for the new design design_number = startdesign + j design.set_number(design_number) # new chosen design number design.set_run_status(pod.AWAITING) # setting input parameters x = lower_bounds + np.random.rand(dim) * (upper_bounds - lower_bounds) for i in range(dim): params.add(param_names[i], x[i]) design.set_parameters(params) # setting response values y = f(x) resps.add('y', f(x)) design.set_responses(resps) msg = 'iter {}: new design has parameters = {}'.format(j, x) msg += ' and responses = {}'.format(y) print(msg) # setting additional flags and infos if np.isnan(y): design.add_status(pod.RunInfoMeta(pod.SOLVER_FAIL)) else: design.add_status(pod.RunInfoMeta(pod.NO_FAIL)) design.set_run_status(pod.DONE) # add the design to the design container design_container.push_back(design) # creating the parameter manager pm = PyParameterManager() for i, pname in enumerate(param_names): pm.add_deterministic_continuous_parameter(pname, lower_bounds[i], upper_bounds[i], 0.5 * (lower_bounds[i] + upper_bounds[i]), 0) # store the design and parameter manager information in an .omdb file db_file = PyOMDB() db_file.design_container = design_container db_file.parameter_manager = pm db_file.check_consistency() db_file.save_to_file(os.path.join(OSL_PROJECT_DIR, 'my_design_data.omdb')
| DesignRunStatus |
|---|
| AWAITING |
| INPROCESS |
| DONE |
| DesignStatus |
|---|
| NO_FAIL |
| SOLVER_FAIL |
| NO_SOLVER_FAIL |
| RESPONSE_NAN |
| CRITERIA_FAIL |
| EntryType |
|---|
| UNINITIALIZED |
| BOOL |
| REAL |
| INTEGER |
| STRING |
| VARIANT |
calculate_criteria( (PyOSDesign)design [, (bool)unsafe=False [, (bool)force=False [, (bool)log_design_number=True]]]) -> PyOSDesign
calculate_criteria_with_calc( (PyOSDesign)design, (object)calculator [, (bool)unsafe=False [, (bool)force=False [, (bool)log_design_number=True]]]) -> PyOSDesign
create_nvp_design_entry( (str)name, (PyOSDesignEntry)value) -> object
Create entry pair with name and value.
export_designs_to_csv( (PyOSDesignContainer)designs, (Path)file, (str)delimiter) -> None
import_designs_from_csv( (PyOSDesignPoint)inputs, (PyOSCriterionContainer)criteria, (Path)file, (str)delimiter) -> PyOSDesignContainer
write_design_to_file( (PyOSDesign)design, (Path)file, (bool)inputs_only, (str)source_file) -> None
Constructors
Constructors
Constructors
Methods
add_missing_criteria
add_missing_criteria( (PyOSDesign)reference) -> None
Add criteria from reference that are not defined in self.
add_missing_parameters
add_missing_parameters( (PyOSDesign)reference) -> None
Add parameters from reference that are not defined in self.
add_missing_responses
add_missing_responses( (PyOSDesign)reference) -> None
Add responses from reference that are not defined in self.
AddMissingCriteria deprecated
AddMissingParameters deprecated
AddMissingResponses deprecated
AddStatus deprecated
dominates
dominates( (PyOSDesign)design) -> bool
Whether the provided design dominates this design regarding fulfilment of criteria.
Dominates deprecated
get_parameters
get_parameters() -> PyOSDesignPoint
for name, value in design.get_parameters(): print(name, value.get())
get_responses
get_responses() -> PyOSDesignPoint
for name, value in design.get_responses(): print(name, value.get_scalar())
GetAlgorithmIteration deprecated
GetCriteria deprecated
GetDesignLeafNumber deprecated
GetDesignType deprecated
GetId deprecated
GetIteration deprecated
GetParameters deprecated
GetResponses deprecated
GetStatus deprecated
GetWorkflowId deprecated
has_everything_failed deprecated
HasErrorState deprecated
HasEverythingFailed deprecated
is_complete deprecated
IsActive deprecated
IsAwaiting deprecated
IsComplete deprecated
IsDone deprecated
IsIncomplete deprecated
IsViolated deprecated
NeedsReevaluation deprecated
set_parameters
set_parameters( (PyOSDesignPoint)parameters) -> None
design = PyOSDesign() params = PyOSDesignPoint() params.add("input", 5) design.set_parameters(params)
set_responses
set_responses( (PyOSDesignPoint)responses) -> None
design = PyOSDesign() responses = PyOSDesignPoint() responses.add("output", 200) design.set_responses(responses)
SetAwaiting deprecated
SetCriteria deprecated
SetDesignType deprecated
SetDuplication deprecated
SetId deprecated
SetNumber deprecated
SetParameters deprecated
SetResponses deprecated
SetRunStatus deprecated
SetWorkflowId deprecated
for des in design_container: print(des.is_succeeded())
Constructors
Methods
AppendDesigns deprecated
GetBestDesigns deprecated
RenameParameter deprecated
RenameResponse deprecated
SetDesignAwaiting deprecated
SetDesignsDone deprecated
entry = PyOSDesignEntry(3.5) entry.get_scalar().real
Constructors
Methods
GetDomainType deprecated
GetScalar deprecated
GetVariant deprecated
IsInf deprecated
IsNaN deprecated
IsScalar deprecated
IsUninitialized deprecated
Size deprecated
dp = PyOSDesignPoint() dp.add("param_01", 3.5) dp.add("param_02", PyOSDesignEntry(4.5))
Constructors
dp = PyOSDesignPoint() dp.add("param_01", 3.5) dp.add("param_02", PyOSDesignEntry(4.5))
Constructors
dp = PyOSDesignPoint() dp.add("param_01", 3.5) dp.add("param_02", PyOSDesignEntry(4.5))
Constructors
Constructors
Constructors
Constructors