How can I solve or re-write an optimization problem with equality constraints, some integer variables and a non-linear objective function?
2 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Dredging Production
el 19 de Dic. de 2018
Editada: Walter Roberson
el 13 de En. de 2019
Hi,
I'm trying to optimize the following (very simplified) problem:
Non_linear_objective = 500 * (x(1)+x(2)+x(3)+x(4)) + 200 * (x(5)+x(6)+x(7)+x(8)) + 95 * ( x(9)-1)^2 + (x10-x9)^2 + (x11-x10)^2 + (x12-x11)^2 + (1-x12)^2 );
5 equality constraints:
x(1)+x(5)+x(9) = 1
x(2)+x(6)+x(10) = 1
x(3)+x(7)+x(11) = 1
x(4)+x(8)+x(12) = 1
40 *( x(1)+x(2)+x(3)+x(4)) = 80
4 integer variables: x(9), x(10),x(11),x(12) (which actually means that x(1)+x(5) (etc) is binary)
Why I'm currently not able to solve this:
- fmincon does not support integer variables
- I can rewrite the problem to a linear objective, with non-linear constraints, and 4 integer variables. But intlinprog does not support non-linear constraints
- I can use the Genetic Algorithm, but this finds a local mimum only. I have to solve this simple problem >300 times, to find the correct answer. (I'm using lb and ub of 0 and 1 for all variables)
Is my reasoning correct?
How could I solve these kind of problems?
Thank you!
1 comentario
Torsten
el 19 de Dic. de 2018
Editada: Torsten
el 19 de Dic. de 2018
Are there positivity constraints on the x(i), i.e. x >= 0 e.g. ?
If this is the case, x(9)-x(12) can only have values 0 or 1. There are 2^4 = 16 combinations for x(9)-x(12) with 0 or 1 for the variables. So just solve your problem by running it 16 times using "quadprog" (or "fmincon").
Best wishes
Torsten.
Respuesta aceptada
Dredging Production
el 19 de Dic. de 2018
Editada: Dredging Production
el 19 de Dic. de 2018
8 comentarios
Torsten
el 7 de En. de 2019
If this task is important for you, I'd consider licencing "CPLEX". It's the best software package you can get in the field of optimization, I guess.
Más respuestas (1)
Dredging Production
el 19 de Dic. de 2018
Editada: Dredging Production
el 19 de Dic. de 2018
0 comentarios
Ver también
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!