DMDO package

Submodules

OMADS.POLL module

class DMDO.DMDO.BMMDO[source]

Bases: object

Simple testing problems

__init__() None
class DMDO.DMDO.USER[source]

Bases: object

Custom class to introduce user data

__init__() None
DMDO.DMDO.user

alias of DMDO.DMDO.USER

class DMDO.DMDO.double_precision(decimals: int)[source]

Bases: object

decimals: int

Decimal precision control

truncate(value: float) float[source]
__init__(decimals: int) None
class DMDO.DMDO.VAR_TYPE(value)[source]

Bases: enum.Enum

An enumeration.

CONTINUOUS = 1
INTEGER = 2
BINARY = 3
CATEGORICAL = 4
ORDINAL = 5
class DMDO.DMDO.VALIDATOR(value)[source]

Bases: enum.Enum

An enumeration.

PRE = 1
RUNNING = 2
POST = 3
class DMDO.DMDO.BARRIER_TYPE(value)[source]

Bases: enum.Enum

An enumeration.

EXTREME = 1
PROGRESSIVE = 2
FILTER = 3
class DMDO.DMDO.PSIZE_UPDATE(value)[source]

Bases: enum.Enum

An enumeration.

DEFAULT = 1
SUCCESS = 2
MAX = 3
LAST = 4
class DMDO.DMDO.w_scheme(value)[source]

Bases: enum.Enum

An enumeration.

MEDIAN = 1
MAX = 2
NORMAL = 3
RANK = 4
class DMDO.DMDO.MODEL_TYPE(value)[source]

Bases: enum.Enum

An enumeration.

SURROGATE = 1
DATA = 2
SIMULATION = 3
NEUTRAL = 4
class DMDO.DMDO.COUPLING_TYPE(value)[source]

Bases: enum.Enum

An enumeration.

SHARED = 1
FEEDBACK = 2
FEEDFORWARD = 3
UNCOUPLED = 4
DUMMY = 5
class DMDO.DMDO.COUPLING_STRENGTH(value)[source]

Bases: enum.Enum

An enumeration.

TIGHT = 1
LOOSE = 2
class DMDO.DMDO.MDO_ARCHITECTURE(value)[source]

Bases: enum.Enum

An enumeration.

MDF = 1
IDF = 2
class DMDO.DMDO.variableData(name: str, sp_index: int, coupling_type: int, link: str, dim: int, value: float, baseline: float, scaling: float, lb: float = None, ub: float = None, type: int = <VAR_TYPE.CONTINUOUS: 1>, index: int = None)[source]

Bases: object

name: str
sp_index: int
coupling_type: int
dim: int
value: float
baseline: float
scaling: float
lb: float = None
ub: float = None
type: int = 1
index: int = None
__init__(name: str, sp_index: int, coupling_type: int, link: str, dim: int, value: float, baseline: float, scaling: float, lb: Optional[float] = None, ub: Optional[float] = None, type: int = VAR_TYPE.CONTINUOUS, index: Optional[int] = None) None
class DMDO.DMDO.Process_data(*args, **kwargs)[source]

Bases: Protocol

term_critteria: List[Callable]
term_type: List[int]
term_status: List[bool]
variables: List[DMDO.DMDO.variableData]
responses: List[DMDO.DMDO.variableData]
__init__(*args, **kwargs)
class DMDO.DMDO.coordinator(*args, **kwargs)[source]

Bases: Protocol

clone_point()[source]
create_linking_list()[source]
calc_inconsistency()[source]
calc_penalty()[source]
update_multipliers()[source]
__init__(*args, **kwargs)
class DMDO.DMDO.process(*args, **kwargs)[source]

Bases: DMDO.DMDO.Process_data, Protocol

run()[source]
validation()[source]
setInputs()[source]
getOutputs()[source]
setup()[source]
__init__(*args, **kwargs)
class DMDO.DMDO.search(*args, **kwargs)[source]

Bases: Protocol

evaluateSamples()[source]
run()[source]
__init__(*args, **kwargs)
class DMDO.DMDO.ModelInadequacyData(type: int, relative_inadequacies: numpy.ndarray, absolute_inadequacies: numpy.ndarray, approx_rel_inadeq: numpy.ndarray, approx_abs_inadeq: numpy.ndarray, reference_model_index: int, errorSurrogateType: int)[source]

Bases: object

type: int
relative_inadequacies: numpy.ndarray
absolute_inadequacies: numpy.ndarray
approx_rel_inadeq: numpy.ndarray
approx_abs_inadeq: numpy.ndarray
reference_model_index: int
errorSurrogateType: int
__init__(type: int, relative_inadequacies: numpy.ndarray, absolute_inadequacies: numpy.ndarray, approx_rel_inadeq: numpy.ndarray, approx_abs_inadeq: numpy.ndarray, reference_model_index: int, errorSurrogateType: int) None
class DMDO.DMDO.DA_Data(inputs: List[DMDO.DMDO.variableData], outputs: List[DMDO.DMDO.variableData], blackbox: Callable, links: List[int], coupling_type: List[int], index: int = None, timeout: int = 1000000)[source]

Bases: object

inputs: List[DMDO.DMDO.variableData]
outputs: List[DMDO.DMDO.variableData]
blackbox: Callable
coupling_type: List[int]
preCondition: Optional[Callable]
runningCondition: Optional[Callable]
postCondition: Optional[Callable]
model: Optional[object]
modelType: Optional[int]
validation_list: Optional[List[Callable]]
validation_type: Optional[List[int]]
validation_status: Optional[List[bool]]
index: int = None
timeout: int = 1000000
__init__(inputs: List[DMDO.DMDO.variableData], outputs: List[DMDO.DMDO.variableData], blackbox: Callable, links: List[int], coupling_type: List[int], index: Optional[int] = None, timeout: int = 1000000) None
class DMDO.DMDO.optimizationData(objectives: List[Callable], constraints: List[Callable], objectiveWeights: List[Any], constraintsHandling: int, solver: Callable)[source]

Bases: object

objectives: List[Callable]
constraints: List[Callable]
objectiveWeights: List[Any]
constraintsHandling: int
solver: Callable
__init__(objectives: List[Callable], constraints: List[Callable], objectiveWeights: List[Any], constraintsHandling: int, solver: Callable) None
class DMDO.DMDO.DA(inputs: List[DMDO.DMDO.variableData], outputs: List[DMDO.DMDO.variableData], blackbox: Callable, links: List[int], coupling_type: List[int], index: int = None, timeout: int = 1000000)[source]

Bases: DMDO.DMDO.DA_Data

setup(input)[source]
run()[source]
validation(vType: int)[source]
setInputsValue(values: List[Any])[source]
setOutputsValue(values: Any)[source]
getInputsList()[source]
getOutputs()[source]
getOutputsList()[source]
__init__(inputs: List[DMDO.DMDO.variableData], outputs: List[DMDO.DMDO.variableData], blackbox: Callable, links: List[int], coupling_type: List[int], index: Optional[int] = None, timeout: int = 1000000) None
class DMDO.DMDO.MDA_data(variables: List[DMDO.DMDO.variableData], responses: List[DMDO.DMDO.variableData], nAnalyses: int, analyses: List[DMDO.DMDO.DA], index: int = None)[source]

Bases: DMDO.DMDO.Process_data

nAnalyses: int
analyses: List[DMDO.DMDO.DA]
index: int = None
__init__(variables: List[DMDO.DMDO.variableData], responses: List[DMDO.DMDO.variableData], nAnalyses: int, analyses: List[DMDO.DMDO.DA], index: Optional[int] = None) None
class DMDO.DMDO.MDA(variables: List[DMDO.DMDO.variableData], responses: List[DMDO.DMDO.variableData], nAnalyses: int, analyses: List[DMDO.DMDO.DA], index: int = None)[source]

Bases: DMDO.DMDO.MDA_data

setup(input)[source]
run()[source]
validation(vType: int)[source]
setInputs(values: List[Any])[source]
getOutputs()[source]
__init__(variables: List[DMDO.DMDO.variableData], responses: List[DMDO.DMDO.variableData], nAnalyses: int, analyses: List[DMDO.DMDO.DA], index: Optional[int] = None) None
class DMDO.DMDO.coordinationData(nsp: int, budget: int = 20, index_of_master_SP: int = 1, display: bool = True, scaling: Any = 10.0, mode: str = 'serial', var_group: List[DMDO.DMDO.variableData] = <factory>, _linker: List[List[int]] = <factory>, n_dim: int = 0, index: int = None)[source]

Bases: object

nsp: int
budget: int = 20
index_of_master_SP: int = 1
display: bool = True
scaling: Any = 10.0
mode: str = 'serial'
var_group: List[DMDO.DMDO.variableData]
n_dim: int = 0
index: int = None
__init__(nsp: int, budget: int = 20, index_of_master_SP: int = 1, display: bool = True, scaling: typing.Any = 10.0, mode: str = 'serial', var_group: typing.List[DMDO.DMDO.variableData] = <factory>, _linker: typing.List[typing.List[int]] = <factory>, n_dim: int = 0, index: typing.Optional[int] = None) None
class DMDO.DMDO.ADMM_data(nsp: int, budget: int = 20, index_of_master_SP: int = 1, display: bool = True, scaling: Any = 10.0, mode: str = 'serial', var_group: List[DMDO.DMDO.variableData] = <factory>, _linker: List[List[int]] = <factory>, n_dim: int = 0, index: int = None, beta: float = 1.3, gamma: float = 0.5, q: numpy.ndarray = array([], shape=(0, 0), dtype=float64), qold: numpy.ndarray = array([], shape=(0, 0), dtype=float64), phi: float = 1.0, v: numpy.ndarray = array([], shape=(0, 0), dtype=float64), w: numpy.ndarray = array([], shape=(0, 0), dtype=float64), update_w: bool = False, M_update_scheme: int = <w_scheme.MEDIAN: 1>, eps_qo: List = None, save_q_in: bool = False, save_q_in_out: bool = False, eps_fo: List = None)[source]

Bases: DMDO.DMDO.coordinationData

beta: float = 1.3
gamma: float = 0.5
q: numpy.ndarray = array([], shape=(0, 0), dtype=float64)
qold: numpy.ndarray = array([], shape=(0, 0), dtype=float64)
phi: float = 1.0
v: numpy.ndarray = array([], shape=(0, 0), dtype=float64)
w: numpy.ndarray = array([], shape=(0, 0), dtype=float64)
update_w: bool = False
M_update_scheme: int = 1
eps_qo: List = None
save_q_in: bool = False
save_q_in_out: bool = False
eps_fo: List = None
__init__(nsp: int, budget: int = 20, index_of_master_SP: int = 1, display: bool = True, scaling: typing.Any = 10.0, mode: str = 'serial', var_group: typing.List[DMDO.DMDO.variableData] = <factory>, _linker: typing.List[typing.List[int]] = <factory>, n_dim: int = 0, index: typing.Optional[int] = None, beta: float = 1.3, gamma: float = 0.5, q: numpy.ndarray = array([], shape=(0, 0), dtype=float64), qold: numpy.ndarray = array([], shape=(0, 0), dtype=float64), phi: float = 1.0, v: numpy.ndarray = array([], shape=(0, 0), dtype=float64), w: numpy.ndarray = array([], shape=(0, 0), dtype=float64), update_w: bool = False, M_update_scheme: int = w_scheme.MEDIAN, eps_qo: typing.Optional[typing.List] = None, save_q_in: bool = False, save_q_in_out: bool = False, eps_fo: typing.Optional[typing.List] = None) None
class DMDO.DMDO.ADMM(nsp, beta, budget, index_of_master_SP, display, scaling, mode, M_update_scheme, store_q_o=False, store_q_io=False, index=None)[source]

Bases: DMDO.DMDO.ADMM_data

Alternating directions method of multipliers

__init__(nsp, beta, budget, index_of_master_SP, display, scaling, mode, M_update_scheme, store_q_o=False, store_q_io=False, index=None)[source]
clone_point(p: DMDO.DMDO.variableData)[source]
create_linking_list()[source]
calc_inconsistency()[source]
calc_inconsistency_old()[source]
update_master_vector(vars: List[DMDO.DMDO.variableData], resps: List[DMDO.DMDO.variableData])[source]
calc_penalty(q_indices)[source]
update_multipliers()[source]
class DMDO.DMDO.partitionedProblemData[source]

Bases: object

nv: int
nr: int
sp_index: int
vars: List[DMDO.DMDO.variableData]
resps: List[DMDO.DMDO.variableData]
is_main: bool
MDA_process: DMDO.DMDO.process
coupling: List[float]
solution: List[Any]
solver: Any
realistic_objective: bool = False
optFunctions: List[Callable] = None
obj: float = inf
constraints: List[float] = [inf]
frealistic: float = 0.0
scaling: float = 10.0
coord: DMDO.DMDO.ADMM
opt: Callable
fmin_nop: float
budget: int
display: bool
psize: float
psize_init: int
tol: float
scipy: Dict
class DMDO.DMDO.SubProblem(nv, index, vars, resps, is_main, analysis, coordination, opt, fmin_nop, budget, display, psize, pupdate, scipy=None, freal=None, tol=1e-12, solver='OMADS')[source]

Bases: DMDO.DMDO.partitionedProblemData

__init__(nv, index, vars, resps, is_main, analysis, coordination, opt, fmin_nop, budget, display, psize, pupdate, scipy=None, freal=None, tol=1e-12, solver='OMADS')[source]
get_minimizer()[source]
get_coupling_vars()[source]
get_design_vars()[source]
set_variables_value(vlist: List)[source]
set_pair()[source]
getLocalIndices()[source]
evaluate(vlist: List[float])[source]
solve(v, w)[source]
get_coupling_vars_diff(con)[source]
set_dependent_vars(vars: List[DMDO.DMDO.variableData])[source]
get_list_vars(vars: List[DMDO.DMDO.variableData])[source]
get_list_vars_ub(vars: List[DMDO.DMDO.variableData])[source]
get_list_vars_lb(vars: List[DMDO.DMDO.variableData])[source]
get_design_vars_scaling(vars: List[DMDO.DMDO.variableData])[source]
get_list_vars_names(vars: List[DMDO.DMDO.variableData])[source]
class DMDO.DMDO.MDO_data(variables: List[DMDO.DMDO.variableData], responses: List[DMDO.DMDO.variableData], Architecture: int, Coordinator: DMDO.DMDO.ADMM, subProblems: List[DMDO.DMDO.SubProblem], fmin: float, hmin: float, display: bool, inc_stop: float, stop: str, tab_inc: List, noprogress_stop: int, eps_qio: List[float] = None, eps_fio: List[float] = None)[source]

Bases: DMDO.DMDO.Process_data

Architecture: int
Coordinator: DMDO.DMDO.ADMM
subProblems: List[DMDO.DMDO.SubProblem]
fmin: float
hmin: float
display: bool
inc_stop: float
stop: str
tab_inc: List
noprogress_stop: int
eps_qio: List[float] = None
eps_fio: List[float] = None
__init__(variables: List[DMDO.DMDO.variableData], responses: List[DMDO.DMDO.variableData], Architecture: int, Coordinator: DMDO.DMDO.ADMM, subProblems: List[DMDO.DMDO.SubProblem], fmin: float, hmin: float, display: bool, inc_stop: float, stop: str, tab_inc: List, noprogress_stop: int, eps_qio: Optional[List[float]] = None, eps_fio: Optional[List[float]] = None) None
class DMDO.DMDO.MDO(variables: List[DMDO.DMDO.variableData], responses: List[DMDO.DMDO.variableData], Architecture: int, Coordinator: DMDO.DMDO.ADMM, subProblems: List[DMDO.DMDO.SubProblem], fmin: float, hmin: float, display: bool, inc_stop: float, stop: str, tab_inc: List, noprogress_stop: int, eps_qio: List[float] = None, eps_fio: List[float] = None)[source]

Bases: DMDO.DMDO.MDO_data

setup(input)[source]
get_list_of_var_values()[source]
get_master_vars_difference()[source]
check_termination_critt(iter)[source]
run()[source]
validation(vType: int)[source]
setInputs(values: List[Any])[source]
getOutputs()[source]
__init__(variables: List[DMDO.DMDO.variableData], responses: List[DMDO.DMDO.variableData], Architecture: int, Coordinator: DMDO.DMDO.ADMM, subProblems: List[DMDO.DMDO.SubProblem], fmin: float, hmin: float, display: bool, inc_stop: float, stop: str, tab_inc: List, noprogress_stop: int, eps_qio: Optional[List[float]] = None, eps_fio: Optional[List[float]] = None) None
class DMDO.DMDO.problemSetup(data: Dict = None, Vs: List[DMDO.DMDO.variableData] = None, DAs: List[DMDO.DMDO.process] = None, MDAs: List[DMDO.DMDO.process] = None, Coords: List[DMDO.DMDO.coordinator] = None, SPs: List[DMDO.DMDO.SubProblem] = None, MDAO: DMDO.DMDO.MDO = None, Qscaling: List = None, userData: DMDO.DMDO.USER = None)[source]

Bases: object

data: Dict = None
Vs: List[DMDO.DMDO.variableData] = None
DAs: List[DMDO.DMDO.process] = None
MDAs: List[DMDO.DMDO.process] = None
Coords: List[DMDO.DMDO.coordinator] = None
SPs: List[DMDO.DMDO.SubProblem] = None
MDAO: DMDO.DMDO.MDO = None
Qscaling: List = None
userData: DMDO.DMDO.USER = None
setup_couplingList() List[source]

Build the list of the coupling types

getWupdateScheme(inp: str) int[source]
getCouplingType(inp: str) int[source]
getPollUpdate(inp: str) int[source]
getMDOArch(inp: str) int[source]
variablesSetup()[source]

Setup the list of global variables struct

getVariables(v: List[str]) List[DMDO.DMDO.variableData][source]

Find the variables by the input key assigned to them

getDA(d: List[int]) List[DMDO.DMDO.DA][source]

Get the list of corresponding disciplinary analyses

getSPs(sp: List[int]) List[DMDO.DMDO.SubProblem][source]

Get the list of corresponding disciplinary analyses

getMDA(M: int) DMDO.DMDO.MDA[source]

Get the MDA process from the provided index

getCoord(c: int) DMDO.DMDO.ADMM[source]

Get the coordinator from the provided index

setBlackboxes(bb: str, bb_type: str, copts: Optional[str] = None)[source]
DASetup()[source]

Setup discipliary Analyses

MDASetup()[source]

Setup the MDA process

COORDSetup()[source]

Setup coordinators definition

SPSetup()[source]

Setup subproblems definition

MDOSetup()[source]

Setup MDO process

UserData()[source]

Set user data attr

__init__(data: Optional[Dict] = None, Vs: Optional[List[DMDO.DMDO.variableData]] = None, DAs: Optional[List[DMDO.DMDO.process]] = None, MDAs: Optional[List[DMDO.DMDO.process]] = None, Coords: Optional[List[DMDO.DMDO.coordinator]] = None, SPs: Optional[List[DMDO.DMDO.SubProblem]] = None, MDAO: Optional[DMDO.DMDO.MDO] = None, Qscaling: Optional[List] = None, userData: Optional[DMDO.DMDO.USER] = None) None
autoProbSetup() DMDO.DMDO.MDO[source]

Setup the MDO problem

DMDO.DMDO.main(*args) Dict[str, Any][source]

The DMDO main routine

Module contents

class DMDO.BMMDO[source]

Bases: object

Simple testing problems

__init__() None
class DMDO.USER[source]

Bases: object

Custom class to introduce user data

__init__() None
class DMDO.double_precision(decimals: int)[source]

Bases: object

decimals: int

Decimal precision control

truncate(value: float) float[source]
__init__(decimals: int) None
class DMDO.VAR_TYPE(value)[source]

Bases: enum.Enum

An enumeration.

CONTINUOUS = 1
INTEGER = 2
BINARY = 3
CATEGORICAL = 4
ORDINAL = 5
class DMDO.VALIDATOR(value)[source]

Bases: enum.Enum

An enumeration.

PRE = 1
RUNNING = 2
POST = 3
class DMDO.BARRIER_TYPE(value)[source]

Bases: enum.Enum

An enumeration.

EXTREME = 1
PROGRESSIVE = 2
FILTER = 3
class DMDO.PSIZE_UPDATE(value)[source]

Bases: enum.Enum

An enumeration.

DEFAULT = 1
SUCCESS = 2
MAX = 3
LAST = 4
class DMDO.w_scheme(value)[source]

Bases: enum.Enum

An enumeration.

MEDIAN = 1
MAX = 2
NORMAL = 3
RANK = 4
class DMDO.MODEL_TYPE(value)[source]

Bases: enum.Enum

An enumeration.

SURROGATE = 1
DATA = 2
SIMULATION = 3
NEUTRAL = 4
class DMDO.COUPLING_STRENGTH(value)[source]

Bases: enum.Enum

An enumeration.

TIGHT = 1
LOOSE = 2
class DMDO.COUPLING_TYPE(value)[source]

Bases: enum.Enum

An enumeration.

SHARED = 1
FEEDBACK = 2
FEEDFORWARD = 3
UNCOUPLED = 4
DUMMY = 5
class DMDO.MDO_ARCHITECTURE(value)[source]

Bases: enum.Enum

An enumeration.

MDF = 1
IDF = 2
class DMDO.variableData(name: str, sp_index: int, coupling_type: int, link: str, dim: int, value: float, baseline: float, scaling: float, lb: float = None, ub: float = None, type: int = <VAR_TYPE.CONTINUOUS: 1>, index: int = None)[source]

Bases: object

name: str
sp_index: int
coupling_type: int
dim: int
value: float
baseline: float
scaling: float
lb: float = None
ub: float = None
type: int = 1
index: int = None
__init__(name: str, sp_index: int, coupling_type: int, link: str, dim: int, value: float, baseline: float, scaling: float, lb: Optional[float] = None, ub: Optional[float] = None, type: int = VAR_TYPE.CONTINUOUS, index: Optional[int] = None) None
class DMDO.Process_data(*args, **kwargs)[source]

Bases: Protocol

term_critteria: List[Callable]
term_type: List[int]
term_status: List[bool]
variables: List[DMDO.DMDO.variableData]
responses: List[DMDO.DMDO.variableData]
__init__(*args, **kwargs)
class DMDO.coordinationData(nsp: int, budget: int = 20, index_of_master_SP: int = 1, display: bool = True, scaling: Any = 10.0, mode: str = 'serial', var_group: List[DMDO.DMDO.variableData] = <factory>, _linker: List[List[int]] = <factory>, n_dim: int = 0, index: int = None)[source]

Bases: object

nsp: int
budget: int = 20
index_of_master_SP: int = 1
display: bool = True
scaling: Any = 10.0
mode: str = 'serial'
var_group: List[DMDO.DMDO.variableData]
n_dim: int = 0
index: int = None
__init__(nsp: int, budget: int = 20, index_of_master_SP: int = 1, display: bool = True, scaling: typing.Any = 10.0, mode: str = 'serial', var_group: typing.List[DMDO.DMDO.variableData] = <factory>, _linker: typing.List[typing.List[int]] = <factory>, n_dim: int = 0, index: typing.Optional[int] = None) None
class DMDO.coordinator(*args, **kwargs)[source]

Bases: Protocol

clone_point()[source]
create_linking_list()[source]
calc_inconsistency()[source]
calc_penalty()[source]
update_multipliers()[source]
__init__(*args, **kwargs)
class DMDO.process(*args, **kwargs)[source]

Bases: DMDO.DMDO.Process_data, Protocol

run()[source]
validation()[source]
setInputs()[source]
getOutputs()[source]
setup()[source]
__init__(*args, **kwargs)
class DMDO.search(*args, **kwargs)[source]

Bases: Protocol

evaluateSamples()[source]
run()[source]
__init__(*args, **kwargs)
class DMDO.ModelInadequacyData(type: int, relative_inadequacies: numpy.ndarray, absolute_inadequacies: numpy.ndarray, approx_rel_inadeq: numpy.ndarray, approx_abs_inadeq: numpy.ndarray, reference_model_index: int, errorSurrogateType: int)[source]

Bases: object

type: int
relative_inadequacies: numpy.ndarray
absolute_inadequacies: numpy.ndarray
approx_rel_inadeq: numpy.ndarray
approx_abs_inadeq: numpy.ndarray
reference_model_index: int
errorSurrogateType: int
__init__(type: int, relative_inadequacies: numpy.ndarray, absolute_inadequacies: numpy.ndarray, approx_rel_inadeq: numpy.ndarray, approx_abs_inadeq: numpy.ndarray, reference_model_index: int, errorSurrogateType: int) None
class DMDO.DA_Data(inputs: List[DMDO.DMDO.variableData], outputs: List[DMDO.DMDO.variableData], blackbox: Callable, links: List[int], coupling_type: List[int], index: int = None, timeout: int = 1000000)[source]

Bases: object

inputs: List[DMDO.DMDO.variableData]
outputs: List[DMDO.DMDO.variableData]
blackbox: Callable
coupling_type: List[int]
preCondition: Optional[Callable]
runningCondition: Optional[Callable]
postCondition: Optional[Callable]
model: Optional[object]
modelType: Optional[int]
validation_list: Optional[List[Callable]]
validation_type: Optional[List[int]]
validation_status: Optional[List[bool]]
index: int = None
timeout: int = 1000000
__init__(inputs: List[DMDO.DMDO.variableData], outputs: List[DMDO.DMDO.variableData], blackbox: Callable, links: List[int], coupling_type: List[int], index: Optional[int] = None, timeout: int = 1000000) None
class DMDO.optimizationData(objectives: List[Callable], constraints: List[Callable], objectiveWeights: List[Any], constraintsHandling: int, solver: Callable)[source]

Bases: object

objectives: List[Callable]
constraints: List[Callable]
objectiveWeights: List[Any]
constraintsHandling: int
solver: Callable
__init__(objectives: List[Callable], constraints: List[Callable], objectiveWeights: List[Any], constraintsHandling: int, solver: Callable) None
class DMDO.DA(inputs: List[DMDO.DMDO.variableData], outputs: List[DMDO.DMDO.variableData], blackbox: Callable, links: List[int], coupling_type: List[int], index: int = None, timeout: int = 1000000)[source]

Bases: DMDO.DMDO.DA_Data

setup(input)[source]
run()[source]
validation(vType: int)[source]
setInputsValue(values: List[Any])[source]
setOutputsValue(values: Any)[source]
getInputsList()[source]
getOutputs()[source]
getOutputsList()[source]
__init__(inputs: List[DMDO.DMDO.variableData], outputs: List[DMDO.DMDO.variableData], blackbox: Callable, links: List[int], coupling_type: List[int], index: Optional[int] = None, timeout: int = 1000000) None
class DMDO.MDA_data(variables: List[DMDO.DMDO.variableData], responses: List[DMDO.DMDO.variableData], nAnalyses: int, analyses: List[DMDO.DMDO.DA], index: int = None)[source]

Bases: DMDO.DMDO.Process_data

nAnalyses: int
analyses: List[DMDO.DMDO.DA]
index: int = None
__init__(variables: List[DMDO.DMDO.variableData], responses: List[DMDO.DMDO.variableData], nAnalyses: int, analyses: List[DMDO.DMDO.DA], index: Optional[int] = None) None
term_critteria: List[Callable]
term_type: List[int]
term_status: List[bool]
variables: List[DMDO.DMDO.variableData]
responses: List[DMDO.DMDO.variableData]
class DMDO.MDA(variables: List[DMDO.DMDO.variableData], responses: List[DMDO.DMDO.variableData], nAnalyses: int, analyses: List[DMDO.DMDO.DA], index: int = None)[source]

Bases: DMDO.DMDO.MDA_data

setup(input)[source]
run()[source]
validation(vType: int)[source]
setInputs(values: List[Any])[source]
getOutputs()[source]
__init__(variables: List[DMDO.DMDO.variableData], responses: List[DMDO.DMDO.variableData], nAnalyses: int, analyses: List[DMDO.DMDO.DA], index: Optional[int] = None) None
class DMDO.ADMM(nsp, beta, budget, index_of_master_SP, display, scaling, mode, M_update_scheme, store_q_o=False, store_q_io=False, index=None)[source]

Bases: DMDO.DMDO.ADMM_data

Alternating directions method of multipliers

__init__(nsp, beta, budget, index_of_master_SP, display, scaling, mode, M_update_scheme, store_q_o=False, store_q_io=False, index=None)[source]
clone_point(p: DMDO.DMDO.variableData)[source]
create_linking_list()[source]
calc_inconsistency()[source]
calc_inconsistency_old()[source]
update_master_vector(vars: List[DMDO.DMDO.variableData], resps: List[DMDO.DMDO.variableData])[source]
calc_penalty(q_indices)[source]
update_multipliers()[source]
class DMDO.ADMM_data(nsp: int, budget: int = 20, index_of_master_SP: int = 1, display: bool = True, scaling: Any = 10.0, mode: str = 'serial', var_group: List[DMDO.DMDO.variableData] = <factory>, _linker: List[List[int]] = <factory>, n_dim: int = 0, index: int = None, beta: float = 1.3, gamma: float = 0.5, q: numpy.ndarray = array([], shape=(0, 0), dtype=float64), qold: numpy.ndarray = array([], shape=(0, 0), dtype=float64), phi: float = 1.0, v: numpy.ndarray = array([], shape=(0, 0), dtype=float64), w: numpy.ndarray = array([], shape=(0, 0), dtype=float64), update_w: bool = False, M_update_scheme: int = <w_scheme.MEDIAN: 1>, eps_qo: List = None, save_q_in: bool = False, save_q_in_out: bool = False, eps_fo: List = None)[source]

Bases: DMDO.DMDO.coordinationData

beta: float = 1.3
gamma: float = 0.5
q: numpy.ndarray = array([], shape=(0, 0), dtype=float64)
qold: numpy.ndarray = array([], shape=(0, 0), dtype=float64)
phi: float = 1.0
v: numpy.ndarray = array([], shape=(0, 0), dtype=float64)
w: numpy.ndarray = array([], shape=(0, 0), dtype=float64)
update_w: bool = False
M_update_scheme: int = 1
eps_qo: List = None
save_q_in: bool = False
save_q_in_out: bool = False
eps_fo: List = None
__init__(nsp: int, budget: int = 20, index_of_master_SP: int = 1, display: bool = True, scaling: typing.Any = 10.0, mode: str = 'serial', var_group: typing.List[DMDO.DMDO.variableData] = <factory>, _linker: typing.List[typing.List[int]] = <factory>, n_dim: int = 0, index: typing.Optional[int] = None, beta: float = 1.3, gamma: float = 0.5, q: numpy.ndarray = array([], shape=(0, 0), dtype=float64), qold: numpy.ndarray = array([], shape=(0, 0), dtype=float64), phi: float = 1.0, v: numpy.ndarray = array([], shape=(0, 0), dtype=float64), w: numpy.ndarray = array([], shape=(0, 0), dtype=float64), update_w: bool = False, M_update_scheme: int = w_scheme.MEDIAN, eps_qo: typing.Optional[typing.List] = None, save_q_in: bool = False, save_q_in_out: bool = False, eps_fo: typing.Optional[typing.List] = None) None
nsp: int
var_group: List[DMDO.DMDO.variableData]
class DMDO.partitionedProblemData[source]

Bases: object

nv: int
nr: int
sp_index: int
vars: List[DMDO.DMDO.variableData]
resps: List[DMDO.DMDO.variableData]
is_main: bool
MDA_process: DMDO.DMDO.process
coupling: List[float]
solution: List[Any]
solver: Any
realistic_objective: bool = False
optFunctions: List[Callable] = None
obj: float = inf
constraints: List[float] = [inf]
frealistic: float = 0.0
scaling: float = 10.0
coord: DMDO.DMDO.ADMM
opt: Callable
fmin_nop: float
budget: int
display: bool
psize: float
psize_init: int
tol: float
scipy: Dict
class DMDO.SubProblem(nv, index, vars, resps, is_main, analysis, coordination, opt, fmin_nop, budget, display, psize, pupdate, scipy=None, freal=None, tol=1e-12, solver='OMADS')[source]

Bases: DMDO.DMDO.partitionedProblemData

__init__(nv, index, vars, resps, is_main, analysis, coordination, opt, fmin_nop, budget, display, psize, pupdate, scipy=None, freal=None, tol=1e-12, solver='OMADS')[source]
get_minimizer()[source]
get_coupling_vars()[source]
get_design_vars()[source]
set_variables_value(vlist: List)[source]
set_pair()[source]
getLocalIndices()[source]
evaluate(vlist: List[float])[source]
solve(v, w)[source]
get_coupling_vars_diff(con)[source]
set_dependent_vars(vars: List[DMDO.DMDO.variableData])[source]
get_list_vars(vars: List[DMDO.DMDO.variableData])[source]
get_list_vars_ub(vars: List[DMDO.DMDO.variableData])[source]
get_list_vars_lb(vars: List[DMDO.DMDO.variableData])[source]
get_design_vars_scaling(vars: List[DMDO.DMDO.variableData])[source]
get_list_vars_names(vars: List[DMDO.DMDO.variableData])[source]
class DMDO.MDO_data(variables: List[DMDO.DMDO.variableData], responses: List[DMDO.DMDO.variableData], Architecture: int, Coordinator: DMDO.DMDO.ADMM, subProblems: List[DMDO.DMDO.SubProblem], fmin: float, hmin: float, display: bool, inc_stop: float, stop: str, tab_inc: List, noprogress_stop: int, eps_qio: List[float] = None, eps_fio: List[float] = None)[source]

Bases: DMDO.DMDO.Process_data

Architecture: int
Coordinator: DMDO.DMDO.ADMM
subProblems: List[DMDO.DMDO.SubProblem]
fmin: float
hmin: float
display: bool
inc_stop: float
stop: str
tab_inc: List
noprogress_stop: int
eps_qio: List[float] = None
eps_fio: List[float] = None
__init__(variables: List[DMDO.DMDO.variableData], responses: List[DMDO.DMDO.variableData], Architecture: int, Coordinator: DMDO.DMDO.ADMM, subProblems: List[DMDO.DMDO.SubProblem], fmin: float, hmin: float, display: bool, inc_stop: float, stop: str, tab_inc: List, noprogress_stop: int, eps_qio: Optional[List[float]] = None, eps_fio: Optional[List[float]] = None) None
term_critteria: List[Callable]
term_type: List[int]
term_status: List[bool]
variables: List[DMDO.DMDO.variableData]
responses: List[DMDO.DMDO.variableData]
class DMDO.MDO(variables: List[DMDO.DMDO.variableData], responses: List[DMDO.DMDO.variableData], Architecture: int, Coordinator: DMDO.DMDO.ADMM, subProblems: List[DMDO.DMDO.SubProblem], fmin: float, hmin: float, display: bool, inc_stop: float, stop: str, tab_inc: List, noprogress_stop: int, eps_qio: List[float] = None, eps_fio: List[float] = None)[source]

Bases: DMDO.DMDO.MDO_data

setup(input)[source]
get_list_of_var_values()[source]
get_master_vars_difference()[source]
check_termination_critt(iter)[source]
run()[source]
validation(vType: int)[source]
setInputs(values: List[Any])[source]
getOutputs()[source]
__init__(variables: List[DMDO.DMDO.variableData], responses: List[DMDO.DMDO.variableData], Architecture: int, Coordinator: DMDO.DMDO.ADMM, subProblems: List[DMDO.DMDO.SubProblem], fmin: float, hmin: float, display: bool, inc_stop: float, stop: str, tab_inc: List, noprogress_stop: int, eps_qio: Optional[List[float]] = None, eps_fio: Optional[List[float]] = None) None
class DMDO.problemSetup(data: Dict = None, Vs: List[DMDO.DMDO.variableData] = None, DAs: List[DMDO.DMDO.process] = None, MDAs: List[DMDO.DMDO.process] = None, Coords: List[DMDO.DMDO.coordinator] = None, SPs: List[DMDO.DMDO.SubProblem] = None, MDAO: DMDO.DMDO.MDO = None, Qscaling: List = None, userData: DMDO.DMDO.USER = None)[source]

Bases: object

data: Dict = None
Vs: List[DMDO.DMDO.variableData] = None
DAs: List[DMDO.DMDO.process] = None
MDAs: List[DMDO.DMDO.process] = None
Coords: List[DMDO.DMDO.coordinator] = None
SPs: List[DMDO.DMDO.SubProblem] = None
MDAO: DMDO.DMDO.MDO = None
Qscaling: List = None
userData: DMDO.DMDO.USER = None
setup_couplingList() List[source]

Build the list of the coupling types

getWupdateScheme(inp: str) int[source]
getCouplingType(inp: str) int[source]
getPollUpdate(inp: str) int[source]
getMDOArch(inp: str) int[source]
variablesSetup()[source]

Setup the list of global variables struct

getVariables(v: List[str]) List[DMDO.DMDO.variableData][source]

Find the variables by the input key assigned to them

getDA(d: List[int]) List[DMDO.DMDO.DA][source]

Get the list of corresponding disciplinary analyses

getSPs(sp: List[int]) List[DMDO.DMDO.SubProblem][source]

Get the list of corresponding disciplinary analyses

getMDA(M: int) DMDO.DMDO.MDA[source]

Get the MDA process from the provided index

getCoord(c: int) DMDO.DMDO.ADMM[source]

Get the coordinator from the provided index

setBlackboxes(bb: str, bb_type: str, copts: Optional[str] = None)[source]
DASetup()[source]

Setup discipliary Analyses

MDASetup()[source]

Setup the MDA process

COORDSetup()[source]

Setup coordinators definition

SPSetup()[source]

Setup subproblems definition

MDOSetup()[source]

Setup MDO process

UserData()[source]

Set user data attr

__init__(data: Optional[Dict] = None, Vs: Optional[List[DMDO.DMDO.variableData]] = None, DAs: Optional[List[DMDO.DMDO.process]] = None, MDAs: Optional[List[DMDO.DMDO.process]] = None, Coords: Optional[List[DMDO.DMDO.coordinator]] = None, SPs: Optional[List[DMDO.DMDO.SubProblem]] = None, MDAO: Optional[DMDO.DMDO.MDO] = None, Qscaling: Optional[List] = None, userData: Optional[DMDO.DMDO.USER] = None) None
autoProbSetup() DMDO.DMDO.MDO[source]

Setup the MDO problem

DMDO.main(*args) Dict[str, Any][source]

The DMDO main routine