atomica.optimization.AtMostMeasurable¶
- class atomica.optimization.AtMostMeasurable(measurable_name, t, threshold, pop_names=None)[source]¶
Bases:
Measurable
Enforce quantity is below a value
This Measurable imposes a penalty if the quantity is larger than some threshold The initial points should be ‘valid’ in the sense that the quantity starts out below the threshold (and during optimization it will never be allowed to cross the threshold).
Typically, this Measurable would be used in conjunction with other measurables - for example, optimizing one quantity while ensuring another quantity does not cross a threshold.
The measurable returns
np.inf
if the condition is violated, and0.0
otherwise.Methods
eval
Return cached baseline values
Return objective value
- get_baseline(model)¶
Return cached baseline values
Similar to
get_hard_constraint
, sometimes a relativeMeasurable
might be desired e.g. ‘Reduce deaths by at least 50%’. In that case, we need to perform a procedure similar to getting a hard constraint, where theMeasurable
receives an initialModel
object and extracts baseline data for subsequent use inget_objective_val
.Thus, the output of this function is paired to its usage in
get_objective_val
.- Parameters:
model
- Returns:
The value to pass back to the
Measurable
during optimization
- get_objective_val(model, baseline)[source]¶
Return objective value
This method should return the _unweighted_ objective value. Note that further transformation may occur
- Parameters:
model – A
Model
object after integrationbaseline – The baseline variable returned by this
Measurable
at the start of optimization
- Returns:
A scalar objective value