Формулювання LP для умов, що виконують умови


10

У мене є наступний LP:

/ * Об'єктивна функція * /
хв: 1 w + 2 x + 0,5 y + z;

/ * Змінні межі * /
w + x <= T1;
w + y = U1;
x + z = U2;
Т1 = 50;
U1 = 70;
U2 = 25;

У цьому випадку U1 + U2> T1 і оптимальним рішенням є y = 70 і z = 25. Я хочу виконати умову, щоб w і x змінним присвоїли значення перед призначенням значень y і z. Якщо U1 + U2 <T1, то я хочу, щоб лише w і x мали значення, а y = z = 0. Чи є спосіб застосувати таке обмеження в LP або MILP?


не впевнений, чому голосно: це розумне, хоч і вузьке питання в LP
Suresh Venkat

Відповіді:


11

Ось відповіді на ваші два запитання. Деталі залежать від того, який вирішувач ви використовуєте:

  • wxyz

  • Комплект лінійного програмування GNU фактично має if-then-elseконструкцію для вираження умовних умов. Шукайте "умовне" в посібнику . Ви можете обернути пункти ви зацікавлені в в цій заяві: if U1 + U2 < T2 then y = 0 and z = 0 else true. (Зауважте, що я насправді цього не пробував, тому синтаксис може бути неправильним.)

  • U1U2T1U1+U2<T1U1+U2T1


Дякую за варіанти. Я зараз піду з варіантом 3.
Бала
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.