Определение того, является ли целочисленная программа невыполнимой

Предположим, у нас есть целочисленная или смешанно-целочисленная программа с парой тысяч ограничений.

Как мы можем определить, реализуем ли этот IP/MIP?


person Faraz Ramtin    schedule 20.09.2017    source источник
comment
В общем: просто бросьте его в решатель и посмотрите, вернет ли он невыполнимый результат или что-то еще. На практике: доказательство невозможности может быть довольно дорогим.   -  person Erwin Kalvelagen    schedule 20.09.2017
comment
en.wikipedia.org/wiki/Halting_problem — аналогичная проблема. (И количество ограничений на самом деле не играет роли, большое количество только усложняет звучание).   -  person Ronald    schedule 20.09.2017
comment
Нет, проблема остановок неразрешима, что означает, что даже если вы дадите компьютеру неограниченное количество времени, он не сможет ее решить. Выполнимый означает, можно ли рассчитать его в разумные сроки.   -  person Willem Van Onsem    schedule 20.09.2017
comment
Когда это просто целые числа, имеет значение количество переменных. ​   -  person    schedule 22.09.2017


Ответы (2)


Предположим, у нас есть задача целочисленного или смешанно-целочисленного программирования с парой тысяч ограничений.

Количество ограничений не обязательно масштабируется с невозможностью: обычно ограничения ограничивают количество возможностей, которые необходимо перечислить. Другая родственная проблема — это случайный 3-SAT, где, например, самые сложные задачи — это задачи, в которых количество ограничений увеличивается примерно в четыре раза по сравнению с количеством переменных.

Как мы можем понять, что эта проблема вообще разрешима?

Доступны хорошие (смешанные) целочисленные решатели, которые могут решить некоторые (сложные) проблемы за разумное время. Тем не менее, общие задачи целочисленного программирования известны как NP-трудные. Это означает, что маловероятно найти алгоритм, решающий эти задачи вообще за разумное время. Иногда нам везет, и проблема целочисленного программирования имеет некоторую структуру, которую мы можем использовать для эффективного поиска решения, но, как сказано: в целом это сложная проблема.

Решатели обычно работают с ветвями и границами, где посредством релаксации домены переменных ограничиваются до тех пор, пока не будет достигнуто стабильное состояние. Затем решатель выбирает значение для одной из переменных (какая переменная и какое значение в первую очередь тщательно исследуются, поскольку они оказывают большое влияние на поиск решения). Затем проблема ослабляется до тех пор, пока либо не будет доказано, что решения с таким значением не существует, либо система не должна присвоить новое значение. Если доказано, что модель неудовлетворительна для заданного набора назначенных переменных, система возвращается: она отменяет некоторые назначенные переменные, переназначает им значения и продолжает поиск. В конце концов решение будет найдено (но это может занять очень много времени), или решатель может доказать, что проблема неразрешима (решение не существует). В случае, если решение найдено, мы еще не закончили: поскольку обычно нас интересует оптимальное решение относительно некоторой функции оптимизации. В этом случае мы добавляем ограничение, что с этого момента мы ищем решения, которые лучше, чем найденное до сих пор. Мы продолжаем делать это до тех пор, пока у нас не закончатся новые решения, и в этом случае мы докажем оптимальность.

Если легко найти правильные решения (относительно жестких ограничений), но сложно получить наилучшее решение, можно использовать метаэвристику для аппроксимации< /strong> лучшее решение. Здесь рассматривается «пространство решений», состоящее из решений, удовлетворяющих жестким ограничениям. Построив ряд «функций мутации», которые принимают правильное решение и превращают его в другое решение, можно сгенерировать алгоритм, который ищет наилучшее решение, итеративно манипулируя решением. Если у нас заканчивается время, мы возвращаем лучшее решение на данный момент. Хотя у нас никогда нет гарантий, что у нас есть оптимальное решение, обычно метаэвристика работает достаточно хорошо и возвращает близкое к оптимальному решение. Некоторые метаэвристики, такие как Имитация отжига, могут предоставить статистические гарантии качества решения.

person Willem Van Onsem    schedule 20.09.2017
comment
Хороший обзор. Но имхо: комментарий о фазовом переходе к 3-SAT является наблюдением только для случайного 3SAT (иначе он мог бы выглядеть совсем иначе, например, классический проблема с голубями). И MIP-решатели активно используют секущие плоскости (разветвления и разрезы), которые здесь не упоминаются, что, по моему мнению, даже становится более важным в условиях невозможности доказательства. - person sascha; 21.09.2017
comment
Точные методы, такие как brand &bound, подходят к проблеме, решая LP-релаксацию. В случае большой задачи эти методы являются дорогостоящими в вычислительном отношении, и нет гарантии, что они могут найти целочисленное решение. Алгоритм эвристики также не будет работать в случае вопроса, который я поднял, потому что эти методы начинаются с допустимого решения! если у нас есть допустимое решение, то мы знаем, что наша проблема разрешима. Но в случае сложных и больших проблем у нас нет доступного возможного решения для начала, поэтому ни один из этих алгоритмов, таких как SA, не сработает. - person Faraz Ramtin; 26.09.2017
comment
@FarazRamtin: но если ослабление LP уже невозможно, то это определенно невозможно. Поскольку LP не является NP-трудным: он находится в P. Это означает, что он очень эффективен по сравнению с ILP. Итак, нет. В этом случае вам следует ослабить саму проблему: посмотреть, можно ли удалить детали и т. д. - person Willem Van Onsem; 26.09.2017

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

person mattmilten    schedule 22.09.2017