Пошук точних кутових рішень лінійного програмування з використанням методів точок інтер'єру


11

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

Припустимо, що ми хочемо замість цього знайти куточок багатогранника. Наприклад, якщо ми хочемо виконати максимальну відповідність, зменшивши її до лінійного програмування, ми не хочемо отримати відповідь, що складається з "відповідність містить 0,34% краю XY та 0,89% краю AB та ...". Ми хочемо отримати відповідь з 0 і 1 (який симплекс дав би нам, оскільки всі кути складаються з 0 і 1). Чи є спосіб зробити це методом точок інтер'єру, який гарантує знайти точні рішення кутів у поліноміальний час? (наприклад, можливо, ми можемо змінити цільову функцію на користь кутів)


1
@JD: Чому ти не зробиш цю відповідь?
Рафаель

Відповіді:


6

Ви можете прочитати статтю:

Санджай Мехротра, Про пошук вершинного рішення за допомогою методів точок інтер'єру, Лінійна алгебра та її застосування, Том 152, 1 липня 1991 р., Сторінки 233-253, ISSN 0024-3795, 10.1016 / 0024-3795 (91) 90277-4. sciencedirect посилання на статтю


4

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


Це було скоріше теоретичним, а не практичним. Тим не менш, багато разів методи інтер'єру кращі швидше, ніж симплекс, тому можуть виникнути проблеми, коли це практичне питання;)
Жуль

3

Через брак деталей, це лише довший коментар:

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


Я не можу розібратися в оригінальному документі Кармаркара . Моя довідка - "Lineare Optimierung und Netzwerkoptimierung" (англійська: лінійна та мережева оптимізація) Hamacher та Klamroth, яка має німецький та англійський текст поряд.


1

Так, є простий метод, і я реалізував його в C ++, щоб поєднати швидкість методів точок інтер'єру з точністю симплексних методів (використовуючи ітераційне уточнення зворотного базової матриці, я можу досягти точності 1 частини 10 10 а краще на щільних матрицях обмеження з більш ніж 1000 змінних і обмежень).

Ключ полягає в симплекс-методі, який ви використовуєте. Припустимо, що метод симплекс має механізм рефакторингу основи (наприклад, після помилок сукупного округлення робить це необхідним), і що цей метод рефакторизації просто відтворює зворотну матрицю основи для бази, що містить весь бажаний список основних змінних. Крім того, припустимо, що навіть якщо бажану основу неможливо відтворити в повному обсязі, що алгоритм симплекс може продовжуватись із основи, яка містить 95% цільової основи, тоді відповідь дуже проста.

Все, що вам потрібно зробити - це взяти рішення з методу точки інтер'єру, усунути змінну, основні значення якої мають на увазі нульову додаткову нещільність, і задавши базовий розмір у симплексній задачі b, візьміть b змінні в інтер'єрі точкове рішення з найбільшими значеннями (або стільки, скільки є ненульових значень, якщо це менше b), і рефакторинг симплекс-бази, щоб містити ці b змінні. Потім продовжуйте симплекс-метод, поки він не вирішиться. Оскільки ви починаєте симплексну проблему близько до фінішу, це, як правило, дуже швидко.

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