Существует система линейных ограничений . Я хочу найти строго положительный вектор который удовлетворяет этим ограничениям. Это означает, что требуется для каждого компонента из . Как я могу использовать LP-решатель, чтобы найти такой строго положительный вектор (или подтвердить, что существует)? Я не могу просто ввести другую систему ограничений , потому что в LP всегда должно быть разрешено равенство, но я могу использовать решатель LP несколько раз с изменением целевых функций. Я думаю, что я должен использовать метод слабой переменной, но я не знаю как.x > 0 x i > 0 x i x x x x i > 0
15
Для технико-экономического обоснования LP я бы не использовал стандартный симплекс. Стандартные простые (или двойственные) симплексные алгоритмы будут посещать только вершины допустимого набора первичных (или двойственных) задач.
Пусть допустимым набором проблемы, которую вы на самом деле хотите решить, будет , и предположим, что вместо этого вы должны были решить проблему ( F ε ):F= { x : A x ≤ b , x > 0 } Fε
Ближайший аппроксиматор задачи, которую вы хотите решить, это , который допускает немного слишком много точек. Проблема заключается в том, что граница положительного ортанта (т. Е. Множество B = { x : x ≥ 0 , ∃ i : x i = 0 } может составлять часть границы возможного множества F 0 . Я хотел бы исключить эти пункты. Один из способов сделать это - сделать то, что предложил Арон, а именно установить ε.F0 B = { x : x ≥ 0 , ∃ i : xя= 0 } F0 ε до некоторого небольшого положительного значения, а затем используйте любой стандартный алгоритм LP. Эта стратегия хороша и, вероятно, будет работать в самых разных ситуациях. Однако он потерпит неудачу, если неосуществимо. Мы знаем, что F 0 ⊂ F ⊂ F ε для всех ε > 0 (чтобы злоупотреблять обозначениями и ссылаться на выполнимое множество в соответствующей задаче), и возможно, что даже если вы выберете небольшие положительные значения ε , решатель LP покажет что ваш LP неосуществим.Fε F0⊂ F⊂ Fε ε > 0 ε
Для LP решателя, я хотел бы использовать любой алгоритм внутренней точки для грампластинок , который начинается с возможной точкой и пребыванием осуществимым, что является еще одним способом , чтобы исключить пункты в . Вам не нужно указывать возможные алгоритмы; Стандартные решатели сделают это за вас. Методы, такие как аффинное масштабирование, методы уменьшения потенциала и барьера, устанавливают вспомогательные LP, которые будут находить возможные решения, и итерации для этих алгоритмов пересекают внутреннюю область допустимой области. Вам нужно только найти одну точку в вашей выполнимой области, поэтому, пока вспомогательные проблемы, используемые решателями LP, находят выполнимую точку для вашей проблемы, и эта выполнимая точка строго положительна, у вас должно быть все в порядке. Если решение F ε не удается при малых положительных значениях εВ Fε ε Вы все еще могли бы использовать эти методы, чтобы найти строго положительную допустимую точку в пределах .F0
Однако не используйте симплекс, потому что он будет исследовать только вершины , чего вы и не хотите делать.Fε
источник
Проблемы выполнимости являются немного более сложной игрой, чем общие линейные задачи, которые вы отметили. Если вы решаете приблизительно (используя представление системы уравнений и ограничений с плавающей точкой), вполне закономерно требовать , где ϵ - очень небольшое числовое значение, достаточно большое, чтобы гарантировать, что x i на самом деле живет в ℜ + , но достаточно мал, чтобы решение на границе не рассматривалось.Икся> = ϵ ε Икся р+
Возможно, вам придется скорректировать , и ваше решение будет квалифицировано как «с коэффициентом ϵ », но этого достаточно для многих ситуаций.ε ε
источник
Ответ, данный aeismail, должен быть внимательно прочитан.
улица
Он имеет решения и ( 0 , 1 ), а также другие (вырожденные). Общность вопроса подразумевает, что эти случаи также должны рассматриваться.( 1 , 0 ) ( 0 , 1 )
Поскольку вы можете выбрать свою целевую функцию, вы можете попытаться изменить ее итеративно. Например, начните со всех коэффициентов для всех переменных, равных единице, проверьте, получите ли вы подходящее решение. Если одна переменная равна нулю, увеличьте ее коэффициент и начните снова ...
Хотя я не могу дать математическое доказательство того, что это работает (или четко определенную процедуру, как изменить целевую функцию). Надеюсь, это поможет :)
источник