Проблема можливостей лінійного програмування із суворими обмеженнями позитивності


15

Існує система лінійних обмежень . Я хочу знайти суто позитивний вектор який задовольняє цим обмеженням. Це означає, потрібно для кожного компонента з . Як я можу за допомогою розв'язувача LP знайти такий строго позитивний вектор (або підтвердити, що немає )? Я не можу просто ввести іншу систему обмежень , тому що рівність завжди повинна бути дозволена в LP - але я можу використовувати вирішувач LP кілька разів, змінюючи цільові функції. Я думаю, я повинен використовувати метод змінної змінної, але я не знаю як.x > 0 x i > 0 x i x x x x i > 0Axbx>0xi>0xixxxxi>0

Відповіді:


15

Можна обійти проблему вибору малого ϵ>0 , бути трохи амбітнішим: Спробуйте знайти x таким, що Axb і щоб найменший запис у x був максимально можливим.

З цією метою введіть нову змінну

y=[xϵ]Rn+1
(якщо x було в Rn ) і розв’яжіть наступну задачу за допомогою LP-розв'язувача
maxy[00 1]ys.t.[A 0]yband0[10010101011]y.

Це переформулювання наступної проблеми:

maxϵs.tAxbandxϵ1.


молодець, це рівнозначно трюку співавтора, і я щойно використав у недавній роботі, і, безумовно, перевершує підхід, який я запропонував.
Арон Ахмадія

Домовились. Добре зіграно, сер.
Джефф Оксберрі

Переформульована проблема може мати необмежену мету у випадках, коли відповідь на початкову проблему є тривіальною. Наприклад, якщо система обмежень просто . Це добре, якщо ви перевіряєте, чи є можливим, оптимальним чи необмеженим стан повернення lp-розв'язувача або явно обмежуєте ϵ . х-1ϵ
Девід Неме

@DavidNehme: Можна додати обмеження щоб отримати обмежену ціль. ун+11
Арнольд Ноймаєр

5

Для проблеми технічної можливості LP я б не використовував стандартний симплекс. Стандартні первісні (або подвійні) симплексні алгоритми відвідуватимуть вершини можливого набору первинних (або подвійних) задач.

Нехай можливий набір задачі, яку ви насправді хочете вирішити, , і припустимо, замість цього ви вирішили проблему ( F ε ):Ж={х:Ахб,х>0}Жε

хвх0вулАхбхε1.

Найближчим наближенням задачі, яку ви хочете вирішити, є , що допускає занадто багато балів. Проблема полягає в тому, що межа позитивного ортанта (тобто множина B = { x : x0 , i : x i = 0 } могла скласти частину межі доцільної множини F 0. Ми б як виключити ці моменти. Один із способів зробити це - зробити те, що запропонував Арон, а це встановити εЖ0Б={х:х0,i:хi=0}Ж0εдо невеликого додатного значення, а потім використовувати будь-який стандартний алгоритм LP. Ця стратегія є хорошою і, ймовірно, буде працювати в самих різних ситуаціях. Однак він не вийде, якщо нездійсненний. Ми знаємо, що F 0F F ε для всіх ε > 0 (зловживати позначеннями і посилатися на можливий набір відповідною задачею), і можливо, навіть якщо ви виберете невеликі позитивні значення ε , вирішувач LP вкаже що ваш LP непереборний.ЖεЖ0ЖЖεε>0ε

Для LP решателя, я хотів би використовувати будь-який алгоритм внутрішньої точки для грамплатівок , який починається з можливою точкою і перебуванням здійсненним, що є ще одним способом , щоб виключити пункти в . Вам не потрібно буде надавати ці алгоритми можливої ​​точки; стандартні вирішувачі зроблять це за вас. Такі методи, як афінне масштабування, зменшення потенціалу та бар'єрний метод, встановлюють допоміжні ЛП, які знайдуть можливі рішення, і ітерати для цих алгоритмів обходять всередині можливої ​​області. Вам потрібно знайти лише одну точку у вашому здійсненому регіоні, якщо допоміжні проблеми, які використовуються вирішувачами LP, знаходять можливу точку для вашої проблеми, і ця можлива точка є суто позитивною, ви повинні мати все в порядку. Якщо розв'язання F ε не вдається для малих позитивних значень εБЖεε, можливо, ви все ще зможете скористатися цими методами для пошуку суто позитивної можливої ​​точки у межах .Ж0

Однак не використовуйте симплекс, тому що він буде досліджувати лише вершини , саме цього ви хочете уникати.Жε


4

Проблеми з техніко-економічним обгрунтуванням є дещо складнішою грою, ніж загальні лінійні проблеми, які ви зазначили. Якщо ви вирішуєте приблизно (використовуючи подання з плаваючою комою системи рівнянь та обмежень), справедливо вимагати , де ϵ - якесь дуже мале числове значення, досить велике, щоб гарантувати, що x я насправді живе в + , але досить малий, що рішення на кордоні не розглядається.xi>=ϵϵxi+

Можливо, вам доведеться скорегувати , і ваше рішення буде кваліфіковано "в межах коефіцієнта ϵ ", але цього достатньо для багатьох ситуацій.ϵϵ


2

Відповідь, яку надає aeismail, слід уважно читати, враховуючи lp

макс(х1+х2)

вул

х1+х21

х1,х20

Він має розчини і ( 0 , 1 ) , а також інші (вироджені). Загальність питання означає, що ці випадки потрібно також розглянути.(1,0)(0,1)

Оскільки ви можете обрати вам об'єктивну функцію, ви можете спробувати змінити її ітеративно. Наприклад, почніть зі всіх коефіцієнтів для всіх змінних, рівних одиниці, перевірте, чи отримаєте ви відповідне рішення. Якщо одна змінна дорівнює нулю, підніміть її коефіцієнт і почніть знову ...

Хоча я не можу дати математичного доказу, що це працює (або чітко визначена процедура, як змінити цільову функцію). Сподіваюся, це допомагає :)


Однак якщо у вас є велика кількість вироджених рішень, як би ви вирішили це чисельно? Не дуже багато чисельних вирішувачів підкине попередження (або ще гірше) про вирішення цієї проблеми?
aeismail

Ні, вони не будуть; вони просто повернуть перше знайдене оптимальне рішення. Таким чином, ви б продовжували генерувати рішення - це додавання площин різання (або інших обмежень), які виключають раніше обчислені оптимальні рішення. У цьому випадку додавання таких ріжучих площин дозволить повернути дискретне наближення нескінченного набору оптимальних рішень.
Джефф Оксберрі

Я б розглядав це як дивне програмне рішення; чому б ви не хотіли сказати користувачеві, що цільова функція робила щось дивне в околицях звітного рішення? Щодо нелінійного вирішувача, я міг бачити, що виникає проблема з з'ясуванням того, що відбувається; але чи не повинно бути простіше сказати це за допомогою лінійної системи?
aeismail

Мені довелося б подумати про те, як можна було б виявити виродження, фактично будуючи проблеми, але зазвичай користувачі хочуть оптимального рішення, тому найважливішою інформацією для LP є повернення, якщо рішення є оптимальним, можливим (але не оптимальним), нездійсненний або необмежений. (Насправді, ці статуси - це те, до чого повернеться вирішувач, як CPLEX.) Виродженість - це насамперед теоретична проблема; Єдиною причиною, про яку це буде обговорюватися в числовому контексті, є або в розробці алгоритму, або на практиці, щоб зазначити, що виродження, як правило, уповільнює вирішення.
Джефф Оксберрі
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.