Formulação LP para condições if

10

Eu tenho o seguinte LP:

/* Função objetiva */
min: 1 w + 2 x + 0,5 y + z;

/ * Limites variáveis ​​* /
w + x <= T1;
w + y = U1;
x + z = U2;
T1 = 50;
U1 = 70;
U2 = 25;

Nesse caso, U1 + U2> T1 e a solução ideal é y = 70 e z = 25. Quero impor a condição de que variáveis ​​w e x recebam valores antes de atribuir valores a y e z. Se U1 + U2 <T1, desejo que apenas we ex tenham valores ey = z = 0. Existe uma maneira de impor essa restrição em um LP ou MILP?

Bala
fonte
Não sei por que o downvote: é um razoável, embora questão estreita em LPs
Suresh Venkat

Respostas:

11

Aqui estão as respostas para suas duas perguntas. Os detalhes dependerão de qual solucionador você estiver usando:

  • Wxyz

  • O GNU Linear Programming Kit, na verdade, tem uma if-then-elseconstrução para expressar condicionais. Procure por "condicional" no manual . Você poderia envolver as cláusulas você estiver interessado em em tal declaração a: if U1 + U2 < T2 then y = 0 and z = 0 else true. (Observe que eu realmente não tentei isso, então a sintaxe pode estar errada.)

  • você1 1você2T1 1você1 1+você2<T1 1você1 1+você2T1 1

Dave Clarke
fonte
Obrigado pelas opções. Eu irei com a opção 3 por enquanto.
Bala