-
Notifications
You must be signed in to change notification settings - Fork 2
ParetoController
controller = ParetoController( numScenarios )
The Pareto controller is built on top of the ExplicitController
. This means, that at each time step of the simulation (or when getInput
is called), the underlying optimization problem is prepared anew using parameter values instead of parameter variables. This base model is then wrapped into YALMIP optimizer
objects, depending on the configured Pareto method that shall be used to determine the Pareto fronts.
Having the ParetoController extend the ExplicitController
allows for it to be more scalable than the completely symbolic system representation, and the overhead caused by rebuilding the underlying problem at each time step is small compared to the increased performance gained by having a much smaller parametric optimizer
, which encodes only parameters necessary for determining a Pareto front.
The ParetoController
is interfaced almost identically to the other controller types. The controller will derive a pareto-optimal input trajectory
Property | Description |
---|---|
config | Struct with configuration parameters. |
status | Struct with informations of the current controller status. |
evaluatedPoints | Matrix with evaluated Pareto-optimal points. Can for example be used in front determination schemes. |
paretoCurrentStep | Variable with the current step number in front determination scheme. Is used for the Pareto progress bar. |
paretoMaxStep | Variable with the estimated max number of evaluations. Leave empty if max number cannot be estimated. |
Field | Default value | Description |
---|---|---|
drMin |
0.2 |
Minimal distance ratio, controls resolution of pareto front by predicting future changes |
dr2allMin |
0.2 |
Minimal distance to already found points, controls resolution of pareto front by discarding points with a lower distance to at least one other point |
printSolverStatus |
true |
Decide whether to log feasibility messages in the log file (true ) or print them as a MATLAB warning (false ) |
warmstart |
false |
If true, warmstart will be applied. This means that the initial guesses for the current iterations input are set to the predicted input of the previous iteration. This is useful for non-linear optimization problems to get more consistent inputs. For further information, refer to YALMIP's warmstarting entry |
minRatioWeights |
1e-5 |
Minimal ratio of weights as results in AWDS to prevent numerical errors |
focusPoint |
0 |
Focus point for the FPBI defining the search direction, with 0 marking the utopia point |
MWAweights |
5e-4 |
Lower weight for MWA and MWAN to approximate the extreme points |
interactivity |
false |
Toggles interactive Pareto-optimal point selection from the pareto front |
extremePointFunction |
'MWAN' |
Method for deriving extreme points, can be 'lexicographic', 'OAA' or a function handle |
metricFunction |
'CUP' |
Metric for selecting solution from pareto front, can be 'CUP', 'AEP', 'ATN', 'RoC' or a function handle |
frontDeterminationScheme |
'FPBI' |
Scheme for deriving a pareto front, can be 'AWDS', 'NBI' or a function handle |
normalization |
'dynamic' |
Method by which to normalize the front for metric application, can be 'dynamic' or 'fixed' |
fixedNormValues |
[] |
If normalization is set to 'fixed', objective values are normalised by fixedNormValues, thus fixedNormValues must be a vector of length(N_objectives) |
ignoreInPareto |
[] |
Indices of cost functions for that are ignored in Pareto optimization. Ignored cost functions are added to the scalarized cost function and weighted by their default weight. |
checkRedundancy |
false |
Flag to control if the redundancy of the cost functions is checked |
redundantCorrelation |
0.9 |
Threshold for the correlation of two objectives. If the correlation coefficient of two cost functions exceeds this they are considered to correlate. |
independantCorrelation |
0 |
Threshold for the correlation of two objectives. If the correlation coefficients of a cost functions with all others falls under this threshold it is considered to be independant and thus can be minimized without affecting the other cost functions. |
[extremePoints, inputsEP, slacksEP, parametersEP] = initializeExtremePointFunctionName(paretoObj, optimizeConstraints, costExpressions, agent)
Method to determine the Extreme Points of the optimization problem, meaning the points that minimize exactly one objective. The function can be selected by setting agent.config.pareto.extremePointFcn as a String or Function Handle. Possible functions are:
Function Handle | String | Description |
---|---|---|
@initializeLex |
'Lex' |
Minimizes one objective, sets this value as a constraint for the minimization of the next objective and continues this until all objectives are used in lexicographic order. |
@initializeMWA |
'MWA' |
Good approximization of the extreme points of a convex problem. Sets one weight to 1 and the rest to ParetoController.config.MWAweights. |
@initializeMWAN |
'MWAN' |
Better approximization of the extreme points of a convex problem. Calculates the Utopia and Nadir point first and normalizes the optimization problem before applying MWA. |
@ArbitraryFunctionHandle | ---- | User-defined Extreme Point Function Handle. |
[inputs, slacks, front, parameters] = determinefrontDeterminationSchemeName( paretoObj, agent, optimizer, extremePoints, preselectedParameters )
Method for the determination of Pareto-optimal points and thus the Pareto front. The function can be selected by setting agent.config.pareto.frontDeterminationScheme as a String or Function Handle. Possible functions are:
Function Handle | String | Description |
---|---|---|
@determineAWDS |
'AWDS' |
Adaptive Weight Determination Scheme: Uses the plane parameters of a hyperplane, spanned by n Pareto-optimal points as weights for the weighted sum method. |
@determineNBI |
'NBI' |
Normal Boundary Intersection: Evenly samples the Boundary Plane and projects these points in normal direction onto the Pareto front. |
@determineFPBI |
'FPBI' |
Focus Point Boundary Intersection: Uses the same scalarization technqiue as NBI, but the starting points and direction are different. As searching direction the focus vector connecting the planes midpoint with the focusPoint is used. |
@determineASBI |
'ASBI' |
Adaptive Search Boundary Intersection: Recursive Boundary Intersection Method, where the starting point is calculated as the mean of k known Pareto optimal points and the search direction as the normal vector of the connecting hyperplane. Best applied for two objectives. |
@ArbitraryFunctionHandle | ---- | User-defined Pareto Front Determination Scheme Function Handle |
[idx, utility] = metricFunction( paretoObj, timeStep )
Method for the automatic selection of a Pareto-optimal solution. The function can be selected by setting agent.config.pareto.metricFunction as a String or Function Handle. Since it proves useful to normalize a given Pareto front a dynamic normalization the Pareto fronts are normalized using the Utopia and Nadir point in any predefined metric. Possible functions are:
Function Handle | String | Description |
---|---|---|
@selectCUP |
CUP |
Closest to utopia point: Minimizes the distance to the utopia point in the normalized objective space |
@selectRoC |
RoC |
Radius of Curvature: Selects the point with the smallest radius of curvature in the normalized objective space as the knee point. |
@selectATN |
ATN |
Angle to Neighbors: Selects the point with the smallest angle to neighbors as the knee point. |
@selectAEP |
AEP |
Angle to Extreme Points: Calculates the angle from a Pareto optimal point to the extreme points. The point with the AEP most similar to the Utopia points AEP is selected. |
@ArbitraryFunctionHandle | ---- | User-defined Metric Function Handle |
- Prerequisites
- Installing PARODIS
- Creating an Ansatz
- Setting up an Agent
- Setting up a Simulation
- Setting up Figures
Pareto Optimization
Modules
- Simulation
- Agent
- Model
- Controllers
- Cost Functions
- Sources
- Plotting
Other