Writing Constaints for simulannealbnd
3 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Saifullah Khalid
el 22 de Jun. de 2017
Comentada: Saifullah Khalid
el 23 de Jun. de 2017
I am trying to optimize an objective using simulannealbnd function. I have constraints of upper and lower bounds on decision variable x. The constraints are: x > 0 and sum(x)< Maximum_Average_Price. I have coded as follow but the resultant sum(x) goes beyond Maximum_Average_Price. I would appreciate any help.
x0=[price(1:4), priceDash(5:28)];
lb = ones(1,28);
ub= min(sum(x0), price_avg_max);
0 comentarios
Respuesta aceptada
Alan Weiss
el 22 de Jun. de 2017
The constraint you have is not a bound, it is a linear inequality constraint that cannot be represented by a bound.
I strongly suggest that you do not use simulannealbnd for this problem, and instead use fmincon if your objective function is smooth, and use patternsearch otherwise. If you are looking for a global solution, then start the solver from a variety of initial points
x0 = lb + rand(size(lb)).*(ub - lb);
By the way, you wrote that your lower bound is x >= 1, not x >= 0, since you said lb = ones and not zeros.
Alan Weiss
MATLAB mathematical toolbox documentation
4 comentarios
Alan Weiss
el 23 de Jun. de 2017
No and no. A linear constraint is not the same as a bound constraint. Draw yourself a picture of x1 + x2 <= 1, and see if you can figure out how to get that picture as a bound constraint. The answer is no, you cannot.
You will have to do one of several things:
- Write your own simulated annealing solver that accepts linear constraints.
- Use a different solver.
- Find a different problem.
Sorry, that is the set of choices.
Alan Weiss
MATLAB mathematical toolbox documentation
Más respuestas (0)
Ver también
Categorías
Más información sobre Surrogate Optimization en Help Center y File Exchange.
Productos
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!