Optimierung (API)¶
Optimizer Base¶
pyadm1ode_calibration.calibration.optimization.optimizer.Optimizer(bounds, max_iterations=100, tolerance=1e-06, verbose=True)
¶
Bases: ABC
Abstract base class for optimization algorithms.
All optimizers must implement the optimize() method and provide a consistent interface for parameter calibration.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
bounds
|
Dict[str, Tuple[float, float]]
|
Parameter bounds as {name: (min, max)}. |
required |
max_iterations
|
int
|
Maximum number of iterations. Defaults to 100. |
100
|
tolerance
|
float
|
Convergence tolerance. Defaults to 1e-6. |
1e-06
|
verbose
|
bool
|
Whether to enable progress output. Defaults to True. |
True
|
Source code in pyadm1ode_calibration/calibration/optimization/optimizer.py
Functions¶
optimize(objective_func, initial_guess=None)
abstractmethod
¶
Run the optimization process.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
objective_func
|
Callable
|
Function to minimize f(x) -> float. |
required |
initial_guess
|
Optional[ndarray]
|
Optional starting point for the optimizer. |
None
|
Returns:
| Name | Type | Description |
|---|---|---|
OptimizationResult |
OptimizationResult
|
The result of the optimization. |
Source code in pyadm1ode_calibration/calibration/optimization/optimizer.py
Zielfunktionen¶
pyadm1ode_calibration.calibration.optimization.objective.MultiObjectiveFunction(simulator, measurements_dict, objectives, weights, parameter_names, error_metric='rmse', normalize=True)
¶
Bases: ObjectiveFunction
Multi-objective function with weighted combination.
Combines errors from multiple plant outputs into a single scalar value.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
simulator
|
Callable
|
Function that takes parameters and returns outputs. |
required |
measurements_dict
|
Dict[str, ndarray]
|
Measured values for each objective. |
required |
objectives
|
List[str]
|
Names of variables to include in the objective. |
required |
weights
|
Dict[str, float]
|
Relative weights for each objective. |
required |
parameter_names
|
List[str]
|
Names of optimized parameters. |
required |
error_metric
|
str
|
Metric to minimize (e.g., 'rmse', 'mae'). Defaults to 'rmse'. |
'rmse'
|
normalize
|
bool
|
Whether to normalize errors by measurement mean. Defaults to True. |
True
|
Source code in pyadm1ode_calibration/calibration/optimization/objective.py
Functions¶
__call__(x)
¶
Evaluate the multi-objective weighted sum.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
x
|
ndarray
|
Parameter array. |
required |
Returns:
| Name | Type | Description |
|---|---|---|
float |
float
|
Total weighted error. |
Source code in pyadm1ode_calibration/calibration/optimization/objective.py
pyadm1ode_calibration.calibration.optimization.objective.WeightedSumObjective(simulator, measurements_dict, objectives, parameter_names, weights=None, **kwargs)
¶
Bases: MultiObjectiveFunction
Convenience class for MultiObjectiveFunction with equal weights by default.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
simulator
|
Callable
|
Function that takes parameters and returns outputs. |
required |
measurements_dict
|
Dict[str, ndarray]
|
Measured values for each objective. |
required |
objectives
|
List[str]
|
Names of variables to include in the objective. |
required |
parameter_names
|
List[str]
|
Names of optimized parameters. |
required |
weights
|
Optional[Dict[str, float]]
|
Optional custom weights. |
None
|
**kwargs
|
Any
|
Passed to MultiObjectiveFunction. |
{}
|
Source code in pyadm1ode_calibration/calibration/optimization/objective.py
Constraints¶
pyadm1ode_calibration.calibration.optimization.constraints.ParameterConstraints(penalty_function=None)
¶
Manager for parameter constraints.
Source code in pyadm1ode_calibration/calibration/optimization/constraints.py
Functions¶
add_box_constraint(parameter_name, lower, upper, hard=True, weight=1.0)
¶
Add box constraint.
Source code in pyadm1ode_calibration/calibration/optimization/constraints.py
add_linear_equality(coefficients, target, weight=1.0)
¶
Add linear equality.
Source code in pyadm1ode_calibration/calibration/optimization/constraints.py
add_linear_inequality(coefficients, lower_bound=None, upper_bound=None, weight=1.0)
¶
Add linear inequality.
Source code in pyadm1ode_calibration/calibration/optimization/constraints.py
add_nonlinear_constraint(name, function, constraint_type='inequality', weight=1.0)
¶
Add nonlinear constraint.
Source code in pyadm1ode_calibration/calibration/optimization/constraints.py
calculate_penalty(parameters)
¶
Calculate total penalty for all violated constraints.
Source code in pyadm1ode_calibration/calibration/optimization/constraints.py
get_scipy_constraints(parameter_names)
¶
Convert constraints to scipy format.
Source code in pyadm1ode_calibration/calibration/optimization/constraints.py
is_feasible(parameters)
¶
Check if parameters satisfy all hard constraints.
Source code in pyadm1ode_calibration/calibration/optimization/constraints.py
project_to_feasible(parameters)
¶
Project parameters to feasible region (box constraints only).
Source code in pyadm1ode_calibration/calibration/optimization/constraints.py
validate_parameters(parameters)
¶
Validate parameters and return detailed error messages.