simopt.models.contam
Simulate contamination rates.
Module Contents
- simopt.models.contam.NUM_STAGES: Final[int] = 5
- class simopt.models.contam.ContaminationConfig
Bases:
pydantic.BaseModelConfiguration model for Contamination simulation.
A model that simulates a contamination problem with a beta distribution. Returns the probability of violating contamination upper limit in each level of supply chain.
- contam_rate_alpha: Annotated[float, Field(default=1.0, description='alpha parameter of beta distribution for growth rate of contamination at each stage', gt=0)]
- contam_rate_beta: Annotated[float, Field(default=round(17 / 3, 2), description='beta parameter of beta distribution for growth rate of contamination at each stage', gt=0)]
- restore_rate_alpha: Annotated[float, Field(default=1.0, description='alpha parameter of beta distribution for rate that contamination decreases by after prevention effort', gt=0)]
- restore_rate_beta: Annotated[float, Field(default=round(3 / 7, 3), description='beta parameter of beta distribution for rate that contamination decreases by after prevention effort', gt=0)]
- initial_rate_alpha: Annotated[float, Field(default=1.0, description='alpha parameter of beta distribution for initial contamination fraction', gt=0)]
- initial_rate_beta: Annotated[float, Field(default=30.0, description='beta parameter of beta distribution for initial contamination fraction', gt=0)]
- stages: Annotated[int, Field(default=NUM_STAGES, description='stage of food supply chain', gt=0)]
- prev_decision: Annotated[tuple[float, Ellipsis], Field(default=(0, ) * NUM_STAGES, description='prevention decision')]
- class simopt.models.contam.ContaminationTotalCostContConfig
Bases:
pydantic.BaseModelConfiguration model for Contamination Total Cost Continuous Problem.
A problem configuration that minimizes total cost for continuous contamination control decisions.
- initial_solution: Annotated[tuple[float, Ellipsis], Field(default_factory=lambda: (1, ) * NUM_STAGES, description='initial solution')]
- budget: Annotated[int, Field(default=10000, description='max # of replications for a solver to take', gt=0, json_schema_extra={'isDatafarmable': False})]
- prev_cost: Annotated[list[float], Field(default_factory=lambda: [1] * NUM_STAGES, description='cost of prevention')]
- error_prob: Annotated[list[float], Field(default_factory=lambda: [0.2] * NUM_STAGES, description='error probability')]
- upper_thres: Annotated[list[float], Field(default_factory=lambda: [0.1] * NUM_STAGES, description='upper limit of amount of contamination')]
- class simopt.models.contam.ContaminationTotalCostDiscConfig
Bases:
pydantic.BaseModelConfiguration model for Contamination Total Cost Discrete Problem.
A problem configuration that minimizes total cost for discrete contamination control decisions.
- initial_solution: Annotated[tuple[int, Ellipsis], Field(default_factory=lambda: (1, ) * NUM_STAGES, description='initial solution')]
- budget: Annotated[int, Field(default=10000, description='max # of replications for a solver to take', gt=0)]
- prev_cost: Annotated[list[float], Field(default_factory=lambda: [1] * NUM_STAGES, description='cost of prevention')]
- error_prob: Annotated[list[float], Field(default_factory=lambda: [0.2] * NUM_STAGES, description='error probability')]
- upper_thres: Annotated[list[float], Field(default_factory=lambda: [0.1] * NUM_STAGES, description='upper limit of amount of contamination')]
- class simopt.models.contam.Contamination(fixed_factors: dict | None = None)
Bases:
simopt.base.ModelContamination model with contamination and restoration rates.
A model that simulates a contamination problem with a beta distribution. Returns the probability of violating contamination upper limit in each level of supply chain.
Initialize the Contamination model.
- Parameters:
fixed_factors (dict, optional) – Fixed factors for the model. Defaults to None.
- class_name_abbr: ClassVar[str] = 'CONTAM'
Short name of the model class.
- class_name: ClassVar[str] = 'Contamination'
Long name of the model class.
- config_class: ClassVar[type[pydantic.BaseModel]]
Configuration class for the model.
- n_rngs: ClassVar[int] = 2
Number of RNGs used to run a simulation replication.
- n_responses: ClassVar[int] = 1
Number of responses (performance measures).
- contam_model
- restore_model
- before_replicate(rng_list: list[mrg32k3a.mrg32k3a.MRG32k3a]) None
Prepare the model just before generating a replication.
- Parameters:
rng_list (list[MRG32k3a]) – RNGs used to drive the simulation.
- Raises:
NotImplementedError – If the subclass does not implement this hook.
- replicate() tuple[dict, dict]
Simulate a single replication for the current model factors.
- Parameters:
rng_list (list[MRG32k3a]) – Random number generators used to simulate the replication.
- Returns:
- A tuple containing:
- responses (dict): Performance measures of interest, including:
”level”: A list of contamination levels over time.
- gradients (dict): A dictionary of gradient estimates for each
response.
- Return type:
tuple[dict, dict]
- class simopt.models.contam.ContaminationTotalCostDisc(name: str = '', fixed_factors: dict | None = None, model_fixed_factors: dict | None = None)
Bases:
simopt.base.ProblemBase class to implement simulation-optimization problems.
Initialize a problem object.
- Parameters:
name (str) – Name of the problem.
fixed_factors (dict | None) – Dictionary of user-specified problem factors.
model_fixed_factors (dict | None) – Subset of user-specified non-decision factors passed to the model.
- class_name_abbr: ClassVar[str] = 'CONTAM-1'
Short name of the problem class.
- class_name: ClassVar[str] = 'Min Total Cost for Discrete Contamination'
Long name of the problem class.
- config_class: ClassVar[type[pydantic.BaseModel]]
Configuration class for problem.
- model_class: ClassVar[type[simopt.base.Model]]
Simulation model class for problem.
- n_objectives: ClassVar[int] = 1
Number of objectives.
- n_stochastic_constraints: ClassVar[int] = 5
Number of stochastic constraints.
- minmax: ClassVar[tuple[int, Ellipsis]]
Indicators of maximization (+1) or minimization (-1) for each objective.
- constraint_type: ClassVar[simopt.base.ConstraintType]
Description of constraints types.
- variable_type: ClassVar[simopt.base.VariableType]
Description of variable types.
- gradient_available: ClassVar[bool] = True
Indicates whether the solver provides direct gradient information.
- optimal_value: float | None = None
Optimal objective function value (if known).
- optimal_solution: tuple | None = None
Optimal solution if known; defaults to None.
- model_default_factors: ClassVar[dict]
Default values for overriding model-level default factors.
- model_decision_factors: ClassVar[set[str]]
Set of keys for factors that are decision variables.
- property dim: int
Number of decision variables.
- property lower_bounds: tuple
Lower bound for each decision variable.
- property upper_bounds: tuple
Upper bound for each decision variable.
- vector_to_factor_dict(vector: tuple) dict
Convert a vector of variables to a dictionary with factor keys.
- Parameters:
vector (tuple) – A vector of values associated with decision variables.
- Returns:
Dictionary with factor keys and associated values.
- Return type:
dict
- factor_dict_to_vector(factor_dict: dict) tuple
Convert a dictionary with factor keys to a vector of variables.
- Parameters:
factor_dict (dict) – Dictionary with factor keys and associated values.
- Returns:
Vector of values associated with decision variables.
- Return type:
tuple
- replicate(x: tuple) simopt.base.RepResult
Replicate the problem for a given solution.
- Parameters:
x (tuple) – The solution to evaluate.
- check_deterministic_constraints(x: tuple) bool
Check if a solution x satisfies the problem’s deterministic constraints.
- Parameters:
x (tuple) – A vector of decision variables.
- Returns:
- True if the solution satisfies all deterministic constraints;
False otherwise.
- Return type:
bool
- get_random_solution(rand_sol_rng: mrg32k3a.mrg32k3a.MRG32k3a) tuple
Generate a random solution for starting or restarting solvers.
- Parameters:
rand_sol_rng (MRG32k3a) – Random number generator used to sample the solution.
- Returns:
- A tuple representing a randomly generated vector of decision
variables.
- Return type:
tuple
- class simopt.models.contam.ContaminationTotalCostCont(name: str = '', fixed_factors: dict | None = None, model_fixed_factors: dict | None = None)
Bases:
simopt.base.ProblemBase class to implement simulation-optimization problems.
Initialize a problem object.
- Parameters:
name (str) – Name of the problem.
fixed_factors (dict | None) – Dictionary of user-specified problem factors.
model_fixed_factors (dict | None) – Subset of user-specified non-decision factors passed to the model.
- class_name_abbr: ClassVar[str] = 'CONTAM-2'
Short name of the problem class.
- class_name: ClassVar[str] = 'Min Total Cost for Continuous Contamination'
Long name of the problem class.
- config_class: ClassVar[type[pydantic.BaseModel]]
Configuration class for problem.
- model_class: ClassVar[type[simopt.base.Model]]
Simulation model class for problem.
- n_objectives: ClassVar[int] = 1
Number of objectives.
- n_stochastic_constraints: ClassVar[int] = 5
Number of stochastic constraints.
- minmax: ClassVar[tuple[int, Ellipsis]]
Indicators of maximization (+1) or minimization (-1) for each objective.
- constraint_type: ClassVar[simopt.base.ConstraintType]
Description of constraints types.
- variable_type: ClassVar[simopt.base.VariableType]
Description of variable types.
- gradient_available: ClassVar[bool] = True
Indicates whether the solver provides direct gradient information.
- optimal_value: ClassVar[float | None] = None
Optimal objective function value (if known).
- optimal_solution: tuple | None = None
Optimal solution if known; defaults to None.
- model_default_factors: ClassVar[dict]
Default values for overriding model-level default factors.
- model_decision_factors: ClassVar[set[str]]
Set of keys for factors that are decision variables.
- property dim: int
Number of decision variables.
- property lower_bounds: tuple
Lower bound for each decision variable.
- property upper_bounds: tuple
Upper bound for each decision variable.
- vector_to_factor_dict(vector: tuple) dict
Convert a vector of variables to a dictionary with factor keys.
- Parameters:
vector (tuple) – A vector of values associated with decision variables.
- Returns:
Dictionary with factor keys and associated values.
- Return type:
dict
- factor_dict_to_vector(factor_dict: dict) tuple
Convert a dictionary with factor keys to a vector of variables.
- Parameters:
factor_dict (dict) – Dictionary with factor keys and associated values.
- Returns:
Vector of values associated with decision variables.
- Return type:
tuple
- replicate(x: tuple) simopt.base.RepResult
Replicate the problem for a given solution.
- Parameters:
x (tuple) – The solution to evaluate.
- check_deterministic_constraints(x: tuple) bool
Check if a solution x satisfies the problem’s deterministic constraints.
- Parameters:
x (tuple) – A vector of decision variables.
- Returns:
- True if the solution satisfies all deterministic constraints;
False otherwise.
- Return type:
bool
- get_random_solution(rand_sol_rng: mrg32k3a.mrg32k3a.MRG32k3a) tuple
Generate a random solution for starting or restarting solvers.
- Parameters:
rand_sol_rng (MRG32k3a) – Random number generator used to sample the solution.
- Returns:
- A tuple representing a randomly generated vector of decision
variables.
- Return type:
tuple