Borrar filtros
Borrar filtros

MILP: constraints on absolute value of difference

48 visualizaciones (últimos 30 días)
Chiara
Chiara el 26 de Jun. de 2024 a las 15:31
Editada: Subhajyoti el 17 de Jul. de 2024 a las 9:27
Hi everyone,
I am using intlinprog to solve an optimization problem where I have to define 24 real values P1, P2, .... P24 (zero or positive, limited by a real upper bound).
These P values are variables of the intlinprog (with other binary variables and other stack variables used for other purposes) and the optimizer can decide to keep the same value for consecutive instants or change (increase or decrease).
I need to implement constraints which define abs(Pi+1 - Pi) >= 1000, while keeping the possibility that Pi+1 can be also = Pi.
I have tried to implement 4 kind of constraints by binary variables b and big M, but it doesn't work. I copy here the structure.
it is clear that if bi = 1, first and second constraints cannot be respected at the same time.
Please help me to find a way:
I need the constraints to allow to have (Pi+1 = Pi) or (Pi+1~=Pi) with a limit on minimum delta in the second case.
Thanks a lot.

Respuestas (1)

Subhajyoti
Subhajyoti el 17 de Jul. de 2024 a las 9:21
Editada: Subhajyoti el 17 de Jul. de 2024 a las 9:27
Hello Chiara,
To efficiently solve the optimization, we can use a formulation that introduces auxiliary variables (say '') to manage the absolute value constraint. The auxiliary variables ‘ represents the absolute difference. Also, using a large constant ‘M’ effectively turns off the constraints when ''.
Thus, for each ‘i’ from 1 to : ''.
This can be translated into the following constraints:
These constraints can be further broken down into simple conditions and can be separately handled, since '' are binary variables.
Case 1: ''
(i.e. '')
Case 2: ''
Upper Bound of :
Lower Bound of :
Note: The objective function ‘f’ will be an array of all ones, since we are minimizing the sum. Specifying ’ finds a feasible point without trying to minimize an objective function.
Refer to the following MathWorks Documentation to understand more about ‘intlinprog’.
Hope the above information is helpful.

Categorías

Más información sobre Linear Programming and Mixed-Integer Linear Programming en Help Center y File Exchange.

Productos


Versión

R2014b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by