Середні точки рішення для лінійних програм


9

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

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

Мінімізуйте ϵ на тему fi(x¯)ϵ<0 з fi лінійний і xi>0 для усіх i і ixi=1.

Звичайно, ми ніколи не отримаємо властивості, що нагадує центральність, з симплексного алгоритму. Чи має будь-який із звичайних алгоритмів точок інтер'єру такі властивості? Чи будь-яка навіть гарантує, що вони будуть уникати вершин або граней нижнього розміру, коли це можливо?


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

Оновлення: я звів основну проблему до простої обмеженої задачі мінімізації, вирішуваної з множниками Лагранжа, але питання вище залишається цікавим у будь-якому разі.


2
не зовсім ваше запитання, але: обчислення центральної системи є # P-важким; Я не впевнений, що найкраще наближення, але для деяких застосувань вистачає політопу в ізотропному положенні та взяття середнього поліномічно багатьох рівномірних зразків із (трансформованого) політопа. див. цю примітку, лему 15, наприклад: cc.gatech.edu/~vempala/acg/notes.pdf
Ніколов

це більше теоретичне чи більш практичне питання? можливо, було б можливо сформувати всі вершини оптимальної грані, а потім використати якусь підходящу опуклу комбінацію їх.
анонімний

Відповіді:


4

У мене є кілька спостережень, які занадто довгі для коментарів. Ось підсумок

  1. Будь-який алгоритм, щоб точно вирішити вашу проблему, може бути точно використаний для вирішення лінійних програм (тобто "сильне лінійне програмування", яке використовується в рішенні Саріеля, і в даний час не має алгоритму поліноміального часу).

  2. Природне подальше спостереження - якщо приблизні рішення (тобто "слабке лінійне програмування") можуть забезпечити рішення. Хоча відповідь "так", виявляється, що умова зупинки для цієї процедури вимагає величин, які, наскільки мені відомо, неможливо обчислити за багаточлен. (тобто алгоритм знаходить щось хороше, але засвідчити це складно.) Моя головна пропозиція тут - зробити змістовне визначення поняття "ϵ-оптимальне рішення "для вашої проблеми. У такому випадку такий підхід є простежуваним. (Ця стратегія ефективно викидає крихітні грані багатогранника.)

Взагалі, думаючи про вашу теперішню заяву про вашу проблему, я продовжував стикатися з міркуваннями ефективності. Але в цьому є розумна інтуїція: об’єкти, які ми кидаємо навколо, - вершини, обличчя тощо - дискретні та експоненціально великі.

(1.) Припустимо, у нас є алгоритм, який точно вирішує вашу проблему. Зауважте, що будь-яка відкрита точка будь-якого обличчя, що містить надану середину, буде точним рішенням оригінальної лінійної програми. Тож поступайте так. Додайте нове лінійне обмеження, сказавши, що вихідне цільове значення повинно бути рівним оптимальному (яке ми тепер знаємо), і встановіть нове висловлювання цілі, щоб максимально досягти першої координати рішення. Повторіть цю процедуру один раз для кожного виміру, кожен раз додаючи обмеження та вибираючи нову координату для максимального збільшення. Цей процес щоразу зменшить розмірність розчину; обов'язково, коли процес завершується, ми маємо 0-мірний афінний набір, що означає одну точку. Таким чином зО(г) ітерації алгоритму вирішення середини (і лише збільшуючи опис проблеми на многочлен в кількості гщоразу) вирішується сильне лінійне програмування. Це показує, що хоча рішення Саріеля вимагає сильного лінійного програмування, точного рішення вашого питання не уникнути. ( Редагуйте : зауважте, що мій доказ передбачає компактний багатогранник (багатогранник) як вхідний; інакше йому доведеться трохи важче працювати, щоб знайти вершини.)

(2.) Ось ітераційна схема, що використовує повний роздутий опуклий розв'язувач у кожній ітерації, розв’язання якої буде сходитися до м'якого поняття розчину середньої точки. Виберіть позитивну, але зменшується послідовність параметрів штрафу{λi}i=10; доцільно, щоб вони спадали геометрично, тобтоλi=2-i. Тепер для кожногоi, приблизно мінімізуйте опуклу функцію

c,х-λij=1мln(аj,х-б),

де c,х - ваша початкова мета, і j діапазони над моригінальні обмеження, тепер розміщені в цілі через логарифмічні бар'єри (зверніть увагу, це стандарт). Тепер, якщо ми подумаємо про мінімізацію обличчя (найбільшого розміру) вашого багатогранника, зауважте, що для цього досить малоλi і толерантність τна ваш опуклий чорний ящик, ваш приблизний оптимум буде близький до цього обличчя, однак бар'єри підштовхують його якнайдалі від інших обмежень. Сказав інший спосіб, якλi зменшується, початкова лінійна мета врешті-решт буде домінувати над деякими хитрими бар'єрами, які відштовхують вас від відповідного обличчя, але не впливатимуть на бар'єри, що стримують вас від інших меж, зокрема, цільових.

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

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

З цієї причини моя рекомендація - побудувати поняття ``ϵ-закрийте оптимальну середину '' та вирішіть її, вибравши λ і ваш опуклий відпуск до чорного поля τвідповідним чином. Я думаю, що це розумний вибір, тому що ви, можливо, не піклуєтесь про обличчя, які мають найбільшу ширинуϵ.

(Деякі заключні коментарі.) Здається, поняття "середина" є вирішальним; У коментарі Сашо вказується, що центроїд (центр маси?) Є надзвичайно складною проблемою, тоді як знайти, скажімо, найбільшу вписану кулю легко. Логарифмічні бар'єри, які я запропонував вище, взагалі не узгоджуються з жодним із цих понять середини. З іншого боку, для бар'єрів та кулі можна вивести нижню межу на відстань від вашого центроїда до відносної межі обличчя; можливо, це вам корисніше?

Нарешті, з вашого опису, я вважаю, ви мали на увазі "цільове обличчя", щоб мати якомога більший розмір? Це чітко визначено, проте є також грані рішення для всіх можливих менших розмірів. У будь-якому випадку, і підхід Саріеля, і вище бар'єрний підхід працюватимуть з найбільшою мірою.


Так, я розглядав подібні трюки, але врешті-решт пішов з мінімізацією ifi(х)2+jхj2 на тему jхj=1використовуючи множники Лагранжа. Це дає слабку властивість центральності дляхна діагоналі, яка може бути не мінімізуючою поверхнею, але, безумовно, є однією з обмежувальних поверхонь, яка ніколи не рухається. Я просто запускаю окрему лінійну програму, як тільки протипоказання перестають розвиватися, і мені фактично потрібен реальний мінімумϵ. Зрештою, не потрібно було триматиϵмінімізовано, щоб допомогти обмеженням розвиватися швидше. Дякую, хоча! :)
Джефф Бурджес

Аааааааааааааааааааааааааааааааааааооооааааааоооооооооооооооооооооооооооооооооооча к тому, що я спочатку думав, це цікаво. милий! Як я вже сказав, прощаюхза те, щоб не приземлятися до мінімізуючого обличчя, якщо це швидко пройде десь розумно. Я пограю з цим в якийсь момент. Насправді, мені потрібно буде прочитати про опуклу оптимізацію в будь-якому випадку, оскільки я знайшов причину зробити свій об'єктивний білінеар замість лінійного.
Джефф Бурджес

Я не розумію сенсу про "сильне лінійне програмування", і я ніколи раніше не чув цього виразу. невідомо, як розв’язати ЛП у сильний многочлен. але розв'язання полінома LP у часі у вхідному описі (тобто слабкий час полінома), звичайно, добре відоме. якщо ОП хоче, щоб алгоритм працював у слабкий поліноміальний час, тоді рішення Саріеля + алгоритм точок внутрішніх точок зробить роботу, ні?
Сашо Ніколов

@SashoNikolov, ось моє теперішнє розуміння. Будь-який існуючий (слабкий багаторазовий) вирішувач прийме допускτ як вхід, і повернути a τ-оптимальне рішення. Тим часом рішення Саріеля вирішальним чином залежить від точного рішення: зокрема, метод внутрішніх точок поверне відносно приблизний оптимальний інтер'єр, а це означає, що крок, що визначає афінний корпус бажаного оптимального обличчя, фактично вибере корпус усієї можливої набір. Я погоджуюся, що мені слід переглянути те, що я писав про сильних / слабких, де ключовим питанням є отримання будь-якого способу точного рішення.
матус

@SashoNikolov, тепер, коли я думаю про це, те саме поняття оптимальності (з тими ж питаннями) може бути вироблене у вирішенні Саріеля, наприклад, обробляючи обмеження, які знаходяться в межах якоїсь крихітної толерантності, щоб насправді бути жорсткою, і правильно налаштовуючи це значення. Я оновлю своє рішення сьогодні ввечері.
матус

6

Спочатку знайдіть оптимальне рішення, а потім додайте лінійне обмеження, що рішення має мати значення, яке дорівнює бажаному оптимальному, і перезавантажте свій LP як той, що шукає найбільшу кулю в межах можливої ​​області. Вирішіть цей модифікований LP, і у вас є те, що ви хочете.

Чому другу проблему можна вирішити за допомогою LP - це симпатична мила проблема в обчислювальній геометрії ...

===============

Більш формально ви знаходите афінний підпростір, що охоплює можливі точки, що містять оптимальне рішення. Отже, припустимо, що оптимальне рішення лежить на гіперпланігодcх=α (тобто хвcхбула оригінальною цільовою функцією LP). ЯкщоП - це реальна область оригінального LP, ми шукаємо найбільшу кулю в Пгод. Для цього нам потрібно обчислити найменший розмірний афінний підпростір, що містить цей набір. Після того як ви знайшли цей підпростір, змініть змінні так, щоб ви розглядали лише цей афінний підпідряд. Тепер ваш політоп є повномірним, і ви можете використовувати другий LP, як я описав вище.

Отже, нехай vбути вершиною, обчисленою першим LP. Враховуючи всі сусідні вершини доv. Розглянемо афінний підпростірv разом із усіма сусідами, які мають однакове цільове значення (тобто α). Не важко зрозуміти, що цей афінний підпростір є бажаним підпростором.

Отже, для літнього часу: (A) вирішити LP, щоб виявити оптимальне значення. (B) Обчисліть найменший розмірний підпростір, що містить можливе рішення з оптимальним значенням. (C) Перепишіть оригінальний LP у цей афінний підмесок (тобто, скинувши всі неактуальні розміри), додайте змінну та перетворіть її на LP для пошуку найбільшої кулі у цьому політопі.


Що означає "найбільша куля" в багатограннику не повного розміру?
Крістофер Арнсфельт Хансен

@ KristofferArnsfeltHansen багатогранник, безумовно, є опуклим набором, що лежить у афінному підпросторі деякого виміру.
Сашо Ніколов

щоб це працювало, вам потрібно буде вказати обмеження, що обмежує вас обличчям (іми), які ви знайшли на першому кроці. Вам також потрібно знати, що рішення було незмінним на цьому обличчі (імовірно, додаткова в'ялість виявить це)
Суреш Венкат,

Чи є якийсь спосіб зробити кроки після початкової оптимізації в поліноміальний час? Як написано, схоже, потрібно вимагати врахування всіх вершин на цільовій грані, яких може бути багато експоненціально.
матус

1
Простіше, ніж це - потрібно враховувати лише вершини, що примикають до оптимальної вершини - є максимум г що прилягає до нього, і ви можете обчислити їх у поліномічний час .... Щоб зрозуміти, чому це правда, розгляньте політоп на афінному підпросторі - його охоплюють сусіди vщо лежать на цьому афінному підпросторі, але це підмножина вершин, що примикають до v в початковому політопі. І так - мені це знадобилося зовсім небагато часу.
Саріель Хар-Пелед
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.