У мене є кілька спостережень, які занадто довгі для коментарів. Ось підсумок
Будь-який алгоритм, щоб точно вирішити вашу проблему, може бути точно використаний для вирішення лінійних програм (тобто "сильне лінійне програмування", яке використовується в рішенні Саріеля, і в даний час не має алгоритму поліноміального часу).
Природне подальше спостереження - якщо приблизні рішення (тобто "слабке лінійне програмування") можуть забезпечити рішення. Хоча відповідь "так", виявляється, що умова зупинки для цієї процедури вимагає величин, які, наскільки мені відомо, неможливо обчислити за багаточлен. (тобто алгоритм знаходить щось хороше, але засвідчити це складно.) Моя головна пропозиція тут - зробити змістовне визначення поняття "ϵ-оптимальне рішення "для вашої проблеми. У такому випадку такий підхід є простежуваним. (Ця стратегія ефективно викидає крихітні грані багатогранника.)
Взагалі, думаючи про вашу теперішню заяву про вашу проблему, я продовжував стикатися з міркуваннями ефективності. Але в цьому є розумна інтуїція: об’єкти, які ми кидаємо навколо, - вершини, обличчя тощо - дискретні та експоненціально великі.
(1.) Припустимо, у нас є алгоритм, який точно вирішує вашу проблему. Зауважте, що будь-яка відкрита точка будь-якого обличчя, що містить надану середину, буде точним рішенням оригінальної лінійної програми. Тож поступайте так. Додайте нове лінійне обмеження, сказавши, що вихідне цільове значення повинно бути рівним оптимальному (яке ми тепер знаємо), і встановіть нове висловлювання цілі, щоб максимально досягти першої координати рішення. Повторіть цю процедуру один раз для кожного виміру, кожен раз додаючи обмеження та вибираючи нову координату для максимального збільшення. Цей процес щоразу зменшить розмірність розчину; обов'язково, коли процес завершується, ми маємо 0-мірний афінний набір, що означає одну точку. Таким чином зВиведення (д) ітерації алгоритму вирішення середини (і лише збільшуючи опис проблеми на многочлен в кількості гщоразу) вирішується сильне лінійне програмування. Це показує, що хоча рішення Саріеля вимагає сильного лінійного програмування, точного рішення вашого питання не уникнути. ( Редагуйте : зауважте, що мій доказ передбачає компактний багатогранник (багатогранник) як вхідний; інакше йому доведеться трохи важче працювати, щоб знайти вершини.)
(2.) Ось ітераційна схема, що використовує повний роздутий опуклий розв'язувач у кожній ітерації, розв’язання якої буде сходитися до м'якого поняття розчину середньої точки. Виберіть позитивну, але зменшується послідовність параметрів штрафу{λi}∞i = 1↓ 0; доцільно, щоб вони спадали геометрично, тобтоλi=2- я. Тепер для кожногоi, приблизно мінімізуйте опуклу функцію
⟨ З , х ⟩ -λi∑j = 1мln( ⟨аj, Х ⟩ - б ) ,
де ⟨ З , х ⟩ - ваша початкова мета, і j діапазони над моригінальні обмеження, тепер розміщені в цілі через логарифмічні бар'єри (зверніть увагу, це стандарт). Тепер, якщо ми подумаємо про мінімізацію обличчя (найбільшого розміру) вашого багатогранника, зауважте, що для цього досить малоλi і толерантність τна ваш опуклий чорний ящик, ваш приблизний оптимум буде близький до цього обличчя, однак бар'єри підштовхують його якнайдалі від інших обмежень. Сказав інший спосіб, якλi зменшується, початкова лінійна мета врешті-решт буде домінувати над деякими хитрими бар'єрами, які відштовхують вас від відповідного обличчя, але не впливатимуть на бар'єри, що стримують вас від інших меж, зокрема, цільових.
У досконалому світі ми б сіли і аналітично визначили ідеальну цінність λабо, принаймні, час зупинки, щоб вам не довелося вирішувати, ну, нескінченно багато проблем. На жаль, це здається важким. Одна ідея полягає у, скажімо, визначенні найменшої ширини будь-якого обличчя, що має розмір більше 0; це чітко визначена проблема мінімізації з позитивним оптимумом, оскільки гранично багато граней (а ширина обчислюється відносно кожного). За допомогою цього ми можемо встановитиλдосить малий, що вплив бар’єрів є крихітним у центрі кожного обличчя. На жаль, облич може бути експоненціально багато, тому обчислювати цю кількість - це нісенітниця.
Усі умови зупинки, з якими я міг придуматись, мали подібні обчислювальні труднощі. (Більше того, багато хто знову може бути використаний, щоб перетворити це на сильну лінійну програмування.)
З цієї причини моя рекомендація - побудувати поняття ``ϵ-закрийте оптимальну середину '' та вирішіть її, вибравши λ і ваш опуклий відпуск до чорного поля τвідповідним чином. Я думаю, що це розумний вибір, тому що ви, можливо, не піклуєтесь про обличчя, які мають найбільшу ширинуϵ.
(Деякі заключні коментарі.) Здається, поняття "середина" є вирішальним; У коментарі Сашо вказується, що центроїд (центр маси?) Є надзвичайно складною проблемою, тоді як знайти, скажімо, найбільшу вписану кулю легко. Логарифмічні бар'єри, які я запропонував вище, взагалі не узгоджуються з жодним із цих понять середини. З іншого боку, для бар'єрів та кулі можна вивести нижню межу на відстань від вашого центроїда до відносної межі обличчя; можливо, це вам корисніше?
Нарешті, з вашого опису, я вважаю, ви мали на увазі "цільове обличчя", щоб мати якомога більший розмір? Це чітко визначено, проте є також грані рішення для всіх можливих менших розмірів. У будь-якому випадку, і підхід Саріеля, і вище бар'єрний підхід працюватимуть з найбільшою мірою.