Dynamic bounds in an optimizer
12 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
Spyros Polychronopoulos
il 18 Giu 2020
Risposto: Alan Weiss
il 19 Giu 2020
I would like to have relationship constraints between variables an optimizer is trying. For example: If variable x(1) is greater than 10 then 8<= x(2) <= 12.
O = @(x) x(1)+x(2)+x(3);
IN= [10 10 10]; % Initial Values
LB=[5 5 5]; % Low Bound
UB=[15 15 15]; % Upper Bound
[set_matrix,best_cost]=simulannealbnd(O,IN,LB,UB); % Simulated Annealing
% if x(1)>10 then x(2) has to take values between 8 and 12
0 Commenti
Risposta accettata
Alan Weiss
il 19 Giu 2020
You are describing a nonlinear constraint. This is a type of constraint that simulannealbnd cannot handle.
In fact, your constraint is not differentiable. This can be a problem for solvers. However, if your underlying variables are integer-valued, then you can use some techniques from integer linear programming to create the constraint. See Optimal Dispatch of Power Generators for an example.
Solvers that can handle nonlinear constraints include fmincon, patternsearch, ga, and the recent version of surrogateopt. Solvers that handle integer variables include intlinprog, ga, and surrogateopt.
Alan Weiss
MATLAB mathematical toolbox documentation
0 Commenti
Più risposte (0)
Vedere anche
Categorie
Scopri di più su Simulated Annealing in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!