Задачи целочисленного линейного программирования онлайн: Метод Гомори онлайн

Содержание

Метод Гомори. Решение задач и контрольных работ по линейному программированию онлайн

Краткая теория


Метод Гомори является одним из методов решения задач целочисленного линейного программирования. Идея метода Гомори заключается в следующем.

Отбрасывается условие целочисленности  и полученная задача линейного программирования  решается симплекс-методом. Если оптимальное решение задачи  является целочисленным, то оно является и решением исходной задачи. Если оптимальное решение задачи  не является целочисленным, то к основным ограничениям добавляется новое линейное ограничение, обладающее следующими свойствами:

1) оптимальный нецелочисленный план задачи ему не удовлетворяет;

2) любой целочисленный план задачи ему удовлетворяет.

Затем решается расширенная задача. Процесс повторяется до получения целочисленного решения. Способы построения дополнительного линейного ограничения различны для полностью и частично целочисленных задач линейного программирования.

В силу свойств 1 и 2 дополнительное ограничение еще называют отсечением Гомори, а метод Гомори - методом отсечения.

Если задача разрешима в целых числах, то через конечное число итераций оптимальный целочисленный план будет найден.

Если в процессе решения появится строка с нецелым свободным членом и целыми остальными коэффициентами, то соответствующее уравнение не имеет решения в целых числах. В таком случае и исходная задача неразрешима в целых числах.

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

Алгоритм метода Гомори рассмотрим на конкретном примере.

Пример решения задачи


Решить задачу целочисленного программирования методом Гомори.

 – целые

Решение

Приведем задачу к каноническому виду.

Решаем задачу симплекс-методом.

Заполняем симплексную таблицу 0-й итерации.

БП Симплексные
отношения
7 -9
0
0 0
0 9 2 1 1 0 0 9/2
0 7 0 3 0 1 0
0 5 4 5 0 0 1 5/4
0 -7 9 0 0 0  

Переходим к таблице 1-й итерации:

БП
Симплексные
отношения
7 -9 0 0 0
0 13/2 0 -3/2
1
0 -1/2  
0 7 0 3 0 1 0  
7 5/4 1 5/4 0 0 1/4  
35/4 0 71/4 0 0 7/4  

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

 

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

Выбираем базисную переменную с наибольшей дробной частью.

По 1-й строке строим дополнительное ограничение:

Ограничение принимает вид:

Введем в ограничение дополнительную переменную:

Домножим последнее ограничение на -1:

Припишем это ограничение к последней симплексной таблице, и, следуя методу Гомори, выполним симплексные преобразования:

БП Симплексные
отношения
7 -9 0 0 0 0
0 13/2 0 -3/2 1 0 -1/2 0
0 7
0
3 0 1 0 0 7/3
7 5/4 1 5/4 0 0 1/4 0 1
0 -1/2
0
-1/2 0 0 -1/2 1 1
35/4 0 71/4 0 0 7/4 0  

Просматриваем строку, содержащую отрицательное число в столбце свободных членов, и выбираем любое отрицательное число в этой строке. Выбранное число будет определять разрешающий столбец.

Ключевой столбец соответствует .

Находим ключевую строку, для этого определяем:

На пересечении ключевого столбца и ключевой строки находим разрешающий элемент, т.е. 5/4.

Вектор  выводим из базиса и вводим вектор .

Если не находите примера, аналогичного вашему, если сами не успеваете выполнить работу, если впереди экзамен по предмету и нужна помощь — свяжитесь со мной:

ВКонтакте
WhatsApp
Telegram

Я буду работать с вами, над вашей проблемой, пока она не решится.

Переходим к таблице 1-й итерации:

БП Симплексные
отношения
7 -9 0 0 0 0
0 8 6/5 0 1 0 -1/5 0 20/3
0 4 -12/5 0 0 1 -3/5 0
-9 1 4/5 1 0 0 1/5 0 5/4
0 0 2/5 0 0 0 -2/5 1 0
-9 -71/5 0 0 0 -9/5 0  

Переходим к таблице 2-й итерации:

БП Симплексные
отношения
7 -9 0 0 0 0
0 8 0 0 1 0 1 -3 8
0 4 0 0 0 1 -3 6
-9 1 0 1 0 0 1 -2 1
7 0 1 0 0 0 -1 5/2
-9 0 0 0 0 -16 71/2  

Переходим к таблице 3-й итерации:

БП Симплексные
отношения
7 -9 0 0 0 0
0 7 0 -1 1 0 0 -1  
0 7 0 3 0 1 0 0  
0 1 0 1 0 0 1 -2  
7 1 1 1 0 0 0 1/2  
7 0 16 0 0 0 7/2  

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

Найденное оптимальное решение удовлетворяет условию целочисленности и является решением исходной задачи.

Метод Гомори

Метод Гомори решения задач целочисленного программирования является методом отсечения.

Суть метода заключается в построении ограничений, отсекающих нецелочисленные решения задачи линейного программирования, но не отсекающих ни одного целочисленного плана. Для этого сначала решается ослабленная задача линейного программирования без учета условия целочисленности переменных.

Если полученное решение задачи линейного программирования является целочисленным, то задача целочисленного программирования также решена и найденное решение является оптимальным и для нее. Если же в найденном решении задачи линейного программирования одна или большее число переменных не целые, то для отыскания целочисленного решения задачи добавляются новое линейное ограничение, которое отсекает нецелочисленные решения. При продолжении решения расширенной задачи двойственным симплексным методом с учетом этого ограничения получается целочисленный план.

Для нахождения целочисленного решения задачи методом Гомори используется следующий алгоритм.

  1. Решаем ослабленную задачу симплексным методом без учета условия целочисленности. Если все компоненты оптимального плана целые, то он является оптимальным и для задачи целочисленного программирования. Если обнаруживается неразрешимость задачи, то и неразрешима задача целочисленного программирования.

  2. Если в результате решения задачи линейного программирования в полученном оптимальном плане есть нецелая базисная переменная, то к ограничениям задачи добавляется новое ограничение, обладающее следующими свойствами:

— оно должно быть линейным;

— должно отсекать найденный оптимальный нецелочисленный план;

— не должно отсекать ни одного целочисленного плана.

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

Этой переменной соответствует строка симплексной таблицы, называемая строкой, производящей отсечение (производящей строкой).

Для изложения метода вводим следующие понятия. Пусть a – действительное число.

Под целой частью некоторого числа а понимается максимальное целое число [a], не превосходящее данного.

Под дробной частью некоторого числа а понимается наименьшее неотрицательное число такое, что разность между ним иа есть [a] – целая часть числа).

Для выбранной базисной переменной с наибольшей дробной частью находим дробную часть этой переменной и дробные части всех коэффициентов при переменныхi — й строки системы ограничений (производящей строкой).

Обозначим ицелые части чисел и . Величины дробных частейи() определяются следующим образом

  1. Составляем неравенство Гомори и включаем его в систему ограничений исходной задачи.

Для этого по производящей строке симплексной таблицы выписывается уравнение, предполагая, что первые m переменных являются базисными для данного оптимального плана

или

Переносим все целые части коэффициентов в одну сторону, оставляя все дробные в другой:

Так как <1, то заменяя в правой части , получим строгое неравенство

Так как левая часть неравенства должна принимать целые значения, то, следовательно, необходимое условие ее целочисленности можно записать только в следующем виде:

  1. Неравенство преобразуется в уравнение путем введения дополнительной неотрицательной переменной и включается в оптимальную симплексную таблицу.

  2. Решаем задачу, используя двойственный симплексный метод. Если новый оптимальный план расширенной задачи будет целочисленным, то задача решена. Если же решение нецелое, то нужно повторять алгоритм метода Гомори вплоть до получения целочисленного решения.

Пример. Методом Гомори найти решение задачи целочисленного программирования, состоящей в определении максимального значения функции при условии

Решение. Выравнивая неравенства с помощью вспомогательных переменных х3, х4, получаем задачу линейного программирования в канонической форме:

Решаем задачу линейного программирования симплексным методом, используя поэтапный переход от одного базиса к другому. Ход решения задачи и полученное оптимальное решение представлены в таблицах.

Б

СБ

В

С1=5

С2=11

С3=0

С4=0

а1

а2

а3

а4

а3

0

3

4

1

0

а4

0

10

2

5

0

1

j =Zj–Сj

0

-5

-11

0

0

СБ

В

С1=5

С2=11

С3=0

С4=0

а1

а2

а3

а4

а2

11

1

0

а4

0

0

1

j =Zj–Сj

0

0

В найденном оптимальном плане значение переменной х2 равно дробному числу. Находим его дробную часть и дробные части всех элементов строки, содержащей переменную х2 , а именно:

Теперь составляем для найденных значений дробных частей неравенство Гомори:

.

Выравниваем неравенство Гомори с помощью новой вспомогательной переменной х5, переносим свободный член уравнения в правую часть и получаем новое ограничение:

.

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

Б

СБ

В

С1=5

С2=11

С3=0

С4=0

С5=0

а1

а2

а3

а4

а5

а2

110

1

0

0

а4

0

0

1

0

а5

0

0

0

1

j=ZjСj

0

0

0

Б

СБ

В

С1=5

С2=11

С3=0

С4=0

С5=0

а1

а2

а3

а4

а5

а2

11

1

0

1

0

0

1

а4

0

0

0

1

а1

0

1

0

0

j=ZjСj

0

0

0

Полученное оптимальное решение расширенной задачи содержит нецелое значение переменной х1, поэтому находим для этой строки дробные части всех нецелых чисел, а именно:

и новое неравенство Гомори имеет вид:

Выравниваем неравенство Гомори с помощью новой вспомогательной переменной х6, переносим свободный член уравнения в правую часть и получаем новое ограничение: .

Добавляем его к решаемой задаче, выравниваем с помощью вспомогательной переменной и решаем расширенную задачу

Б

СБ

В

С1=5

С2=11

С3=0

С4=0

С5=0

С6=0

а1

а2

а3

а4

а5

а6

а2

110

1

0

1

0

0

1

0

а4

0

0

0

1

0

а1

0

1

0

0

0

а6

0

0

0

0

1

j=ZjСj

0

0

0

0

Б

СБ

В

С1=5

С2=11

С3=0

С4=0

С5=0

С6=0

а1

а2

а3

а4

а5

а6

а2

110

1

0

1

0

0

1

0

а4

0

5

0

0

0

1

-1

-2

а1

0

0

1

0

0

0

-2

1

а3

0

0

0

1

0

2

-3

j=ZjСj

11

0

0

0

0

1

5

Таким образом, найдено оптимальное решение задачи целочисленного программирования: Zmax =11 при .

Замечания:

Если в процессе решения в симплексной таблице появится уравнение с нецелой компонентой и целыми коэффициентами в соответствующей строке системы ограничений, то данная задача не имеет целочисленного решения.

6 Целочисленное программирование. Метод отсекающих плоскостей (метод…

Привет, сегодня поговорим про целочисленное программирование, обещаю рассказать все что знаю. Для того чтобы лучше понимать что такое целочисленное программирование, метод отсекающих плоскостей, метод гомори, метод ветвей и границ , настоятельно рекомендую прочитать все из категории Математические методы исследования операций .Теория игр и расписаний..

целочисленное программирование .

Общая постановка задачи целочисленного программирования отличается от общей задачи ЛП лишь наличием дополнительного ограничения. Этим ограничением является требование целочисленности: значения всех или части переменных модели в оптимальном решении являются целыми неотрицательными числами, то есть принадлежат множеству N. Если это требование распространяется на все переменные, то задачу ЦП называют полностью целочисленной задачей. Если оно относится лишь к части переменных, задача называется частично целочисленной. Задача ЛП, отличающаяся от задачи ЦП лишь отсутствие требований целочисленности, называют задачей с ослабленными ограничениями, соответствующей данной задаче ЦП.

Задача целочисленного программирования — это задача математической оптимизации или выполнимости, в которой некоторые или все переменные должны быть целыми числами. Часто термин адресуется к целочисленному линейному программированию (ЦЛП), в котором целевая функция и ограничения (за исключением требования целочисленности) линейны.

Целочисленное программирование является NP-трудной задачей. Специальный случай, 0-1 целочисленное линейное программирование, в которой переменные принимают значения 0 или 1, является одной из 21 NP-полных задач Карпа.

Каноническая и стандартная виды ЦЛП

Задача целочисленного линейного программирования в каноническом виде выражается как

максимизировать
при условиях
и ,

а в стандартном виде

максимизировать
при условиях
и

где — векторы, а — матрица, все элементы которых являются целыми числами. Заметьте, что, как и в случае линейного программирования, ЦЛП-задача, не находящаяся в стандартном виде, может быть приведена к стандартному виду путем исключения неравенств введением дополнительных и искусственных переменных и заменой переменных, на которые не наложено ограничение неотрицательности, двумя переменными.

Пример

Целочисленный многогранник с линейным ослаблением

Рисунок справа показывает следующую задачу.

Допустимые целые точки показаны красным и красные пунктирные линии показывают выпуклую оболочку этих точек, которая является наименьшим многоугольником, содержащим все эти точки. Синие линии вместе с координатными осями определяют многоугольник линейного ослабления, который задается неравенствами без требования целочисленности. Цель оптимизации — сдвинуть черную пунктирную линию так, чтобы она была как можно выше, но касалась многоугольника. Оптимальные решения целочисленной задачи — точки и , на которых целевая функция принимает значение 2. Единственное решение ослабленной (линейной) задачи — точка , в которой целевая функция принимает значение 2.8. Заметим, что если мы округлим решение задачи линейного программирования до ближайших целых, решение будет недопустимо для ЦЛП.

Доказательство NP-трудности

Следующее рассуждение является сведением задачи минимизации вершинного покрытия к задаче целочисленного программирования, что доказывает NP-трудность.

Пусть — неориентированный граф. Определим задачу линейного программирования следующим образом:

Если наложить требование, чтобы принимали значения 0 или 1, любое допустимое решение для целочисленного программирования является подмножество вершин. Из первого ограничения следует, что по меньшей мере один конец каждого ребра включена в подмножество. Таким образом, решение дает покрытие вершин. Кроме того, если задано вершинное покрытие C, можно присвоить значение 1 для любого и 0 для любого , что дает нам допустимое решение задачи целочисленного программирования. Отсюда мы может заключить, что при минимизации суммы мы получим также минимальное вершинное покрытие.

Варианты

В смешанном целочисленном линейном программировании (СЦЛП) только для части переменных требуется целочисленность, в то время как остальные переменные могут быть нецелочисленными.

В булевом программировании переменные должны принимать значения 0 или 1. Заметим, что любая ограниченная целочисленная переменная может быть выражена как комбинация булевых переменных. Например, если есть целочисленная переменная , ее можно выразить через булевых переменных:

Приложения

Есть две основные причины для использования целых переменных при моделировании задач линейного программирования:

  1. Целочисленные переменные представляют величины, которые могут быть исключительно целыми. Например, невозможно построить 3.7 автомобилей.
  2. Целочисленные переменные представляют решения, которые принимают значения 0 или 1.

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

Производственное планирование

Смешанное целочисленное программирование имеет много приложений в производстве, включая моделирование календарного планирования. Один из примеров встречается при производственном планировании[en] в сельском хозяйстве для определения выхода продукции, которая может иметь общие ресурсы (такие как земля, труд, расходы, семена, удобрения и т.д.). Возможной целью оптимизации может быть максимизация дохода без выхода за границы имеющихся ресурсов. В некоторых случаях задача может быть выражена как задача линейного программирования, но переменные при этом должны быть целыми.

Планирование

В этих задачах нужно обеспечить обслуживание и расписание работы транспортной сети . Об этом говорит сайт https://intellect.icu . Например, задача может состоять в расстановке автобусов или поездов по маршрутам, чтобы соблюсти расписание, а также обеспечить подвижный состав водителями. Здесь булевы переменные (т.е. принимающее значение 0 или 1) определяют, назначен ли автобус или поезд на маршрут, и назначен ли водитель на конкретный автобус/поезд.

Сети передачи данных

Целью этой задачи является построение сети передачи данных так, чтобы обеспечить предопределенные требования за минимальную цену. В этой задаче требуется оптимизация как топологии сети, так и пропускной возможности элементов сети. Во многих случаях пропускная способность выражается дискретными величинами, что приводит к целочисленным переменным. Обычно накладываются зависящие от применяемой технологии другие ограничения, которые могут моделироваться целочисленными или булевыми переменными.

Сотовые сети

Задача планирования частот в мобильных сетях GSM требует распределение допустимых частот по антеннам, чтобы обеспечить связь и минимизировать интерференцию между антеннами. Эту задачу можно сформулировать как задачу линейного программирования, в которой булевы переменные отражают, назначена ли конкретная частота конкретной антенне.

Методы решения задач ЛП.

Наивный путь решения задачи ЦЛП — просто игнорировать ограничение целочисленности на переменные

x, решить соответствующую задачу ЛП (которая называется линейным ослаблением ограничений задачи ЦЛП), а затем округлить компоненты решения полученной задачи. Однако полученное решение может оказаться не только не оптимальным, оно может оказаться даже недопустимым, то есть некоторые ограничения могут быть нарушены.

На первый взгляд естественным методом решения задачи ЦП является метод округления, реализация которого состоит из двух этапов. На первом этапе находят оптимальное решение задачи ЛП с ослабленными ограничениями. На втором этапе значения переменных в оптимальном решении X*, не являющиеся целыми, округляют так, чтобы получить допустимое решение X** с целочисленными значениями.

Состоятелен ли такой метод?

Пример. Рассмотрим полностью целочисленную задачу:

x1 + 1,5x2 max

2x1 + 4x2 17, 10x1 + 4x245

x1, x20, x1, x2 N.

Задача ЛП с ослабленными ограничениями получается снятием ограничений

x1, x2 N. Ее оптимальное решение может быть получено графическим методом.

Оптимальное решение достигается в точке А. Целевая функция равна при этом f=7,25. Оптимальное решение X*=(7/2, 5/2)Т. По методу округления примем X**=(3, 2) Т. Значение целевой функции при этом равно 6. Однако на самом деле оптимальное решение Xo=(2, 3) Т, а fопт=6,5.

Итак, метод округления дает неоптимальное решение. Поэтому он не состоятелен как общий метод решения задач ЦП. Кроме того, многие задачи ИО могут быть сформулированы как задачи ЦП, в которых переменные модели принимают значения из множества .

Рассмотрим метод, известный как метод отсечений.

Рассмотрим целочисленную задачу.

Допустимым решениям этой задачи соответствуют не все точки множества допустимых решений G, а лишь те, которые удовлетворяют требованиям целочисленности. Теоретически из множества G всегда можно выделить множество G* такое, что:

а) оно содержит все точки множества G, удовлетворяющие требованию целочисленности;

б) оно является выпуклым множеством;

в) координаты всех его крайних точек удовлетворяют требованиям целочисленности.

Если множество G допустимых решений заменить множеством G*, это не может привести к изменению оптимального решения, так как G* получено из G путем отсечения от него подмножества, заведомо не содержащего допустимых решений, удовлетворяющих требованию целочисленности. Но в этом случае оптимальное решение задачи ЛП с ослабленными ограничениями и множеством G* допустимых решений соответствует крайней точке множества G*. Как следствие, оно удовлетворяет требованию целочисленности и обеспечивает экстремальное значение не только на G*, но и на G.

В основе комбинаторных методов решения задач ЦП лежит идея перебора всех элементов множества G допустимых решений, удовлетворяющих требованию целочисленности.

Наиболее известным комбинаторным методом является метод ветвей и границ . Он начинается с решением задачи ЛП с ослабленными ограничениями. Если оптимальное решение X* (точка B) не удовлетворяет требованию целочисленности, то из множества G выделяют два пересекающихся выпуклых подмножества K1 иK2, содержащих все допустимые решения из G, удовлетворяющие требованию целочисленности, но не содержащие X*. Этим задача ЦП заменяется совокупностью двух эквивалентных ей (в смысле оптимального решения Xo G) задач с множествами допустимых решений K1 и K2, т.к. XoK1 или XoK2.

Разработано много методов решения задач ЦП. Почти все эти методы можно описать на основе единой принципиальной схемы, состоящей из трех элементов.

Элемент 1. Предусматривается процедура формирования и решения последовательности взаимосвязанных задач, которые называют задачами, порожденными исходной задачей или задачами – истоками. При этом оптимальное решение по крайней мере одной из задач – истоков должно совпадать с оптимальным решением породившей их задачи.

Элемент 2. Каждой задаче, порожденной исходной задачей, ставится в соответствие так называемая ослабленная задача (задача с ослабленными ограничениями). Ее оптимальное решение может быть найдено с гораздо меньшими затратами, чем оптимальное решение соответствующей ей задачи – истока.

Элемент 3. В результате анализа решения ослабленной задачи принимается решение, относящееся к задаче – истоку:

а) исключить ее из рассмотрения;

б) заменить одной порожденной задачей, выбранной по определенному правилу;

в) заменить системой порожденных задач.

Использование полной унимодулярности

Хотя, в общем случае, целочисленность решения ослабленной задачи не гарантирована, если ЦЛП имеет вид при условиях , где и имеют в качестве элементов целых чисел и является вполне унимодулярной, тогда любое базисное допустимое решение будет целочисленным. Следовательно, решение, которое дает симплекс-метод, будет заведомо целочисленным. Чтобы показать, что любое базисное решение такой задачи целочисленно, пусть — произвольное допустимое решение. Поскольку допустимо, мы знаем, что . Пусть — элементы, соответствующие базисным столбцам базисного решения . По определению базиса существует некоторая квадратная подматрица матрицы с линейно независимыми столбцами, такая, что .

Поскольку столбцы линейно независимы и матрица квадратная, матрица неособенная, а потому при предположениях, что унимодулярна, выполняется . Поскольку не является особенной, матрица обратима, а потому . По определению, . Здесь означает союзную матрицу для и она целочисленна, поскольку целочисленна. Таким образом,

целочисленна

целочисленен

Любое базисное допустимое решение целочисленно.

Таким образом, если матрица ЦЛП вполне унимодулярна, вместо решения задачи ЦЛП можно использовать линейное ослабление задачи, которое даст целочисленное решение.

Точные алгоритмы

Если матрица не является вполне унимодулярной, существует ряд алгоритмов, решающих задачу целочисленного линейного программирования точно. Один из классов таких алгоритмов — методы секущих плоскостей (методы Гомори), которые работают путем решения ослабленной линейной задачи с последующим добавлением линейных ограничений, которые отсекают нецелочисленное решение задачи без отсечения целочисленных допустимых решений.

Другой класс алгоритмов — варианты метода ветвей и границ. Например, метод ветвей и отсечений[en], комбинирующий метод ветвей и границ с методами секущих плоскостей. Методы ветвей и границ имеют ряд преимуществ перед алгоритмами, использующими исключительно отсекающие плоскости. Одно из преимуществ — алгоритм можно завершить рано, как только хотя бы одно допустимое целочисленное решение найдено, хотя и не оптимальное. Кроме того, решение ослабленной линейной задачи может быть использовано для оценки, насколько далеко полученное от оптимального. Наконец, методы ветвей и границ можно использовать, чтобы получить несколько оптимальных решений.

Ленстра в 1983 показал, что в случае фиксированного числа переменных допустимое решение задачи целочисленного программирования может быть найдено за полиномиальное время.

Эвристические методы

Поскольку задачи целочисленного линейного программирования NP-трудны, многие задачи трудноразрешимы, так что приходится использовать эвристические методы. Например, может быть использован поиск с запретами. Для использования поиска с запретами для решения задачи ЦЛП шаг алгоритма можно определить как увеличение или уменьшение целочисленной переменной, в то время как остальные целочисленные переменные остаются неизменными. Затем находится решение для переменных, на которых ограничение целочисленности не наложено. Для хранения предыдущих попыток может использоваться кратковременная память, в то время как более долговременная память может состоять из значений целочисленных переменных, для которых получены бо́льшие значения целевой функции (в предположении задачи максимизации). Наконец, долгая память может быть использована для поиска целочисленных значений, которые еще не пробовали.

Другие эвристические методы, которые могут быть применены для решения ЦЛП

  • Восхождение по выпуклой поверхности[en]
  • Алгоритм имитации отжига
  • Пассивная поисковая оптимизация
  • Муравьиный алгоритм
  • Нейронная сеть Хопфилда

Есть также некоторые другие, зависящие от задачи эвристические методы, такие как k-opt эвристика для задачи коммивояжера. Заметим, что недостатком эвристических методов является то, что в случае неудачи поиска решения метод не определяет, произошло это вследствие отсутствия допустимого решения, или просто алгоритм его найти не может. Далее обычно невозможно определить, насколько близко к оптимальному полученное этим методом решение.

метод отсекающих плоскостей ( метод гомори ).

Метод разработан Р. Гомори в 1957- 1958 гг. МОП относится к методам отсечений и называется методом правильных отсечений.

Пример. Пусть необходимо найти решение полностью целочисленной задачи:

2x1 + x2max

0,75x1 + 1,5x2 4,8 (1)

x1, x2 0, x1, x2 N.

Пусть есть некоторая задача ЛП:

с ограничениями:

, i= (2)

xj 0, j= (3)

с целочисленными ограничениями:

xj N, j= (4)

Целой частью вещественного числа а называется наибольшее целое число [a], не превышающее а. Дробная часть а есть число {a}=a – [a].

Метод Гомори состоит в следующем. Пусть решена ослабленная задача (1) – (3) и на последней итерации получена система:

x11m+1xm+1+…+ α1nxn1,

x22m+1xm+1+…+ α2nxn2, (5)

. . . . . . . . . . . . . .

xmnm+1xm+1+…+ αmnxnm

т.е. решение задачи есть

1,…, βm, 0, …,0) (6)

Предположим, что это решение не удовлетворяет условию целочисленности (4), т.е. некоторое βi, i=1,…, m, нецелое.

Добавим к системе (6), которая эквивалентна системе (2) ограничение:

{ βi } — (7)

Строка i называется производящей. Это ограничение отсекает от исходного многогранника решений оптимальную точку (β1,…, βm, 0, …,0), не затрагивая ни одной из целочисленных точек множества.

Покажем, что допустимое целочисленное решение удовлетворяет соотношению (7). Из системы (5) мы имеем:

xi+, или xi+

Пусть x=(x1, …,xn) – целочисленное допустимое решение. Тогда левая часть последнего выражения целочисленна, т.е. целочисленным является и значение:

i} —

Тогда, если бы соотношение (7), не выполнялось, т.е. выполнялось бы:

{ βi } — ,

то в силу того, что 0 {βi}<1 , 0{αik}<1, xk 0, должно было бы выполняться соотношение:

{ βi } — ,

а это противоречит целочисленности {βi} — .

Теперь проверим условие отсечения. Т.к. для оптимального решения { βi }>0, xi=0, i=m+1, …,n, т. е. это решение действительно не удовлетворяет (7).

Итак, если к (6) или к (2) – что равносильно – добавить ограничение (7) и решить задачу (1) – (3) и (7), то получим решение, отличное от (β1,…, βm, 0, …,0), которое тоже может оказаться нецелочисленным. Это потребует добавления новых ограничений вида (7). Если при этом каждый раз индекс i в ограничениях (7) выбирать так, чтобы это был индекс первый по порядку переменной с нецелочисленным значением, допустимое множество задачи (1) – (3) ограниченно и не пусто, значит алгоритм Гомори конечен, т.е. заканчивается за конечное число шагов решением целочисленной задачи.

Несмотря на то, что метод Гомори – надежное решение для задач ЦП, его практическое применение нецелесообразно, если исходная задача имеет большую размерность.

Иллюстрация метода Гомори.

Z=7x1+10x2,

-x1+3x2 6,

7x1+x235,

x1, x2 0, x1, x2 N.

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

Метод ветвей и границ.

Впервые его предложили Ленд и Дойч в 1960г. затем усовершенствовали Литтл, Мурти, Суни, Кэрол.

Рассмотрим следующую целочисленную задачу ЛП:

z=5x1+4x2max

x1+x2 5

10x1+6x245

x1,x20,

Соответствующая ослабленная задача ЛП имеет решение: x1=3.75, x2=1.25, z=23.75

Оптимальное решение задачи ЛП0 (обозначим ее так) не удовлетворяет условию целочисленности.

Метод ветвей и границ изменяет пространство решений задачи ЛП так, что в конечном счете образуется оптимальное решение задачи ЦП. Для этого сначала выбирается одна из целочисленных переменных, значение которой в оптимальном решении ЛП0 не является целочисленным. Например, выбирая x1(=3.75), замечаем, что область 31<4 пространства допустимых решений задачи ЛП0 не содержит целочисленных значений x1, и следовательно ее можно исключить из рассмотрения как бесперспективную. Это эквивалентно замене исходной задачи ЛП0 двумя новыми задачами ЛП1 и ЛП2:

Пространство допустимых решений ЛП1=Пространство допустимых решений ЛП0+(x1 3),

Пространство допустимых решений ЛП2=Пространство допустимых решений ЛП0+(x14).

Все допустимые решения задачи ЦП остались, задачи ЛП1 и ЛП2 «не потеряют» ни одного решения.

Новые ограничения (x13) и (x14) взаимно исключаемы, так что задачи ЛП1 и ЛП2 нужно рассматривать как независимые. Дихотомизация задач ЛП — основа концепции ветвления в методе ветвей и границ. В этом случае x1 называется переменной ветвления.

Оптимальное решение находится либо в ПДЗ задачи ЛП1, либо задачи ЛП2. Следовательно обе задачи должны быть решены.

Решаем ЛП1:

z=5x1+4x2max

x1+x2 5

10x1+6x245

x13

x1,x20

Решение: x1=3, x2=2, z=23.

Оптимальное решение задачи ЛП1 удовлетворяет условию целочисленности переменных x1 и x2 . В этом случае говорят, что задача ЛП1 прозондирована. Это значит, что задача ЛП1 не должна больше зондироваться, она не может содержать лучшего решения задачи ЦП, чем уже есть.

Пока мы можем сказать, что z=23 – нижняя граница.

Теперь переходим к задаче ЛП2. Так как в задаче ЛП0 оптимальное значение z=23,75 и все ее коэффициенты целые числа, невозможно получить целочисленное решение в задаче ЛП2. Задачу ЛП2 отбрасываем и считаем ее прозондированной.

Реализация метода ветвей и границ завершена. Оптимальное решение: x1=3, x2=2, z=23.

Остались без ответа два вопроса:

1) Можно ли было в задаче ЛП0 выбрать переменную x2 в качестве переменной ветвления вместо x1?

2) Можно ли было сначала решить задачу ЛП2 вместо ЛП1?

Оба ответа положительные, но дальнейший ход решения может отличаться. Если решать задачу ЛП2, то получим такую схему:

Последовательность подзадач наихудшая. Пример указывает на основную слабость метода ветвей и границ: как выбирать переменную ветвления и как выбирать следующую подзадачу? На этот счет нет строгой теории.

См. также

  • Метод наименьших квадратов с ограничениями
  • Методы оптимизации
  • Метод золотого сечения
  • Дихотомия
  • Метод парабол
  • Перебор по сетке
  • Метод равномерного блочного поиска
  • Метод Фибоначчи
  • Троичный поиск
  • Метод Пиявского
  • Метод Стронгина

Я хотел бы услышать твое мнение про целочисленное программирование Надеюсь, что теперь ты понял что такое целочисленное программирование, метод отсекающих плоскостей, метод гомори, метод ветвей и границ и для чего все это нужно, а если не понял, или есть замечания, то нестесняся пиши или спрашивай в комментариях, с удовольствием отвечу. Для того чтобы глубже понять настоятельно рекомендую изучить всю информацию из категории Математические методы исследования операций .Теория игр и расписаний.

Целочисленного программирования — КиберПедия

Навигация:

Главная Случайная страница Обратная связь ТОП Интересно знать Избранные

Топ:

Генеалогическое древо Султанов Османской империи: Османские правители, вначале, будучи еще бейлербеями Анатолии, женились на дочерях византийских императоров…

Особенности труда и отдыха в условиях низких температур: К работам при низких температурах на открытом воздухе и в не отапливаемых помещениях допускаются лица не моложе 18 лет, прошедшие…

Отражение на счетах бухгалтерского учета процесса приобретения: Процесс заготовления представляет систему экономических событий, включающих приобретение организацией у поставщиков сырья…

Интересное:

Мероприятия для защиты от морозного пучения грунтов: Инженерная защита от морозного (криогенного) пучения грунтов необходима для легких малоэтажных зданий и других сооружений. ..

Наиболее распространенные виды рака: Раковая опухоль — это самостоятельное новообразование, которое может возникнуть и от повышенного давления…

Уполаживание и террасирование склонов: Если глубина оврага более 5 м необходимо устройство берм. Варианты использования оврагов для градостроительных целей…

Дисциплины:

Автоматизация Антропология Археология Архитектура Аудит Биология Бухгалтерия Военная наука Генетика География Геология Демография Журналистика Зоология Иностранные языки Информатика Искусство История Кинематография Компьютеризация Кораблестроение Кулинария Культура Лексикология Лингвистика Литература Логика Маркетинг Математика Машиностроение Медицина Менеджмент Металлургия Метрология Механика Музыкология Науковедение Образование Охрана Труда Педагогика Политология Правоотношение Предпринимательство Приборостроение Программирование Производство Промышленность Психология Радиосвязь Религия Риторика Социология Спорт Стандартизация Статистика Строительство Теология Технологии Торговля Транспорт Фармакология Физика Физиология Философия Финансы Химия Хозяйство Черчение Экология Экономика Электроника Энергетика Юриспруденция

⇐ ПредыдущаяСтр 5 из 6Следующая ⇒

 

Если в задаче целочисленного программирования количество управляю­щих переменных равно двум, а ограничения имеют вид неравенств, то ее можно решить графическим методом. При этом процесс решения состоит из двух этапов.

 

Этап 1. Решение исходной задачи обычным графическим мето­дом. Если найденное оптимальное решение является целочисленным, то решение прекращают. Если же найденное оптимальное решение содержит хотя бы одно дробное значение, то переходят к этапу 2.

Этап 2. В непосредственной близости от границ ОДР задачи со стороны, где расположена вершина оптимального решения нецелочисленной задачи (т.е. вблизи тех границ ОДР, куда указывает вектор градиента целевой функции), строят точки, координатами которых являются целые числа. Дальнейшее решение в точности повторяет графическое решение обычной задачи линейного программирования, с тем лишь отличием, что, прод­вигая в направлении вектора градиента линию уровня целевой функции, находят последнюю из целочислен­ных точек на пути продвижения. Именно ее координаты и будут являться опти­мальным целочисленным решением исходной задачи.

 

ПРИМЕР: Найдите графическим методом оптимальное решение целочисленной задачи линейного программирования, заданной моделью вида:

Вначале решим поставленную задачу графическим методом без ограничения на целочисленность управляющих переменных.

Рис. 4.

 

Как следует из рассмотрения рис. 4, ОДР задачи есть трапеция ОАВС, а оптимальным решением задачи будут являться координаты точки В, т.е. получено нецелочисленное оптимальное решение задачи в виде: .

Построим внутри ОДР целочисленную сетку и примем во внимание точки D, E и F, имеющие целые значения координат. Очевидно, что наиболее близкой к точке В оказывается точка Е, координаты которой и будут являться искомым целочисленным решением:  и при этом .

Метод Гомори решения задач целочисленного

Программирования

 

Для решения задач целочисленного программирования с любым количест­вом управляющих переменных может быть успешно применен метод Гомори. Алгоритм решения задачи этим методом содержит два этапа.

 

Этап 1. Решение задачи линейного программирования без условия цело­численности управляющих переменных обычным симплекс – методом. Если все значения управляющих переменных оптимального плана – целые числа, то решение заканчивают. Если же полученное оптимальное ре­шение содержит хотя бы одно дробное значение управляющих переменных, то переходят к этапу 2.

 

Этап 2. Составление дополнительного ограничения (сечения) и решение расширенной задачи обычным симплекс – методом. При этом дополнительное ограничение (сечение) отсекает нецело­численные решения, оставляя только целочисленные.

 

Целой частью [r] рационального числа r называется наи­большее целое число, не превосходящее числа r. Дробной частью числа r называется правильная дробь {r}, определяемая соотно­ше­нием: {r} = r – [r].

Пример 1.  Для числа 5 имеем: [5] = 5 и {5} = 0.

Пример 2.  Для числа 4/5 имеем: [4/5] = 0 и {4/5} = 4/5.

Пример 3. Для числа 8/3 имеем: [8/3] = 2 и {8/3} = 2/3.

Пример 4. Для числа – 4/5 имеем: [- 4/5] = — 1 и {- 4/5} = 1/5.

Пример 5. Для числа – 8/3 имеем: [- 8/3] = — 3 и {- 8/3} = 1/3.

Поясним, каким образом составляется сечение (дополнительное ограниче­ние). Пусть выполнен этап 1, т.е. найдено оптимальное реше­ние задачи в виде:

и пусть некоторое  — дробное число. Рассмотрим i-ое ограниче­ние задачи:

 

С учетом обозначений:  и  дополнительное ограничение (сечение) для переменной  можно записать в виде:

, где .

Очевидно, что при дополнении исходной задачи этим  ограни­чением, получают задачу большей размерности. На практике поступают так: последнюю симплекс-таблицу, содержащую опти­мальное (нецелочисленное) решение дополня­ют еще одной строкой с переменной  в списке базисных переменных и еще одним столбцом, соответствующим этой же дополнительной перемен­ной, а в дополнительную строку записывают числовые коэффициенты сечения, включая значение свободного члена. После чего, обычно в одну итерацию, продолжают решение задачи симплекс – методом и, наконец, получают искомое цело­численное решение исходной задачи.

Если при решении целочисленной задачи симплекс – методом (на этапе 1) получено несколько дробных значений, то дополни­тель­ное огра­ничение следует составлять для значения, имеющего максимальную дроб­ную часть.

ПРИМЕР: Найдите методом Гомори целочисленное решение задачи примера подраздела 3.3.1.

Решив поставленную задачу симплекс-методом, получим по­след­­нюю симплекс-таблицу, содержащую оптимальное (не целочис­ленное) решение, (убедитесь в этом сами) в виде:

 

БП СЧ
1 0 1 –1/2 3/2
0 1 0 1/2 5/2
L 0 0 1 1/2 13/2

 

Поскольку оба свободных члена имеют одинаковую дробную часть, равную 1/2, для определенности будем составлять сечение по Гомори для переменной . Его можно записать в виде:

 

.

Введя это ограничение и дополнительную базисную переменную в приведенную симплекс-таблицу, получим новую симплекс-таблицу, из которой в одну итерацию получим искомое целочисленное решение поставленной задачи.

 

БП СЧ
1 0 1 –1/2 0 3/2
0 1 0 1/2 0 5/2
0 0 0 1/2 –1 1/2
L 0 0 1 1/2 0 13/2
1 0 1 0 –1 2
0 1 0 0 1 2
0 0 0 1 –2 1
L 0 0 1 0 1 6

 

Из последней симплекс-таблицы следует  и при этом: .

 

Рекомендуемая литература по теме 3: [1 ÷ 4].

 

ВОПРОСЫ для самопроверки знаний по теме 3:

1. Чем отличаются целочисленные задачи от обычных задач линейного программирования?

 

 

 

2. В чем суть графического метода решения задач целочисленного программирования?

 

 

 

3. В чем суть метода Гомори решения задач целочисленного программирования?

 

 

4. Для какой управляющей переменной составляется дополни­тельное ограничение по Гомори?

 

 

 

⇐ Предыдущая123456Следующая ⇒

Общие условия выбора системы дренажа: Система дренажа выбирается в зависимости от характера защищаемого…

Папиллярные узоры пальцев рук — маркер спортивных способностей: дерматоглифические признаки формируются на 3-5 месяце беременности, не изменяются в течение жизни…

Организация стока поверхностных вод: Наибольшее количество влаги на земном шаре испаряется с поверхности морей и океанов (88‰). ..

Опора деревянной одностоечной и способы укрепление угловых опор: Опоры ВЛ — конструкции, предназначен­ные для поддерживания проводов на необходимой высоте над землей, водой…



Целочисленное решение задач линейного программирования методом ветвей и границ с помощью Excel



В большинстве экономико-математических моделей, сформулированных как задачи линейного программирования, часть или все компоненты вектора-решения должны выражаться в целых числах, т. е. быть целочисленными. К ним относятся, например, задачи, в которых переменные означают количество единиц неделимой продукции, число станков при закупке оборудования, количество домов при очередности строительства и т. д. [3, c. 180]

С другой стороны, это могут быть задачи, в которых при моделировании используются логические (булевы) переменные со значениями 1 и 0, что означает, например, взимать или не взимать арендную плату, создавать или не создавать дополнительный пункт производства и т. д. Покажем особенности фактора целочисленности на следующем примере, который в учебных целях генерируется на компьютере в виде индивидуальных заданий. Оптимальное решение в примере, в принципе, не может быть получено каким-либо округлением решения соответствующей задачи линейного программирования.

Для решения рассмотренного класса задач математического программирования, как правило, используется универсальный метод решения под названием «метод ветвей и границ». [2, с. 158]

Продемонстрируем основные идеи этого метода на примере решения задачи целочисленного линейного программирования (ЦЛП).

Эти задачи включают в себя требования целочисленности ко всем искомым переменным. Они относятся к классу задач полностью целочисленного линейного программирования (задача ЦЛП). В свою очередь, эти задачи являются частным случаем задачи частично целочисленного линейного программирования (ЧЦЛП). [2, с. 160]

При решении задач частично-целочисленного линейного программирования методом ветвей и границ на определенных этапах решаются вспомогательные задачи линейного программирования (ЛП), для которых применяется симплекс-метод.

Рассмотрим развернутую экономико-математическую модель задачи.

Система переменных: x1, x2

Система ограничений: 2x1 + x2 ≤ 9

5x1 + 4x2 ≤ 29

Целевая функция: F = 27x1 + 21x2 → max

Решение задачи осуществляется симплексным методом [1, с. 176] с помощью сервисной функции MS Excel «Поиск решения».

Описание шагов алгоритма «метода ветвей и границ»

  1. Решение вспомогательной задачи линейного программирования.

Вспомогательная задача № 1 получается из данной задачи целочисленного линейного программирования путём игнорирования требования целочисленности. Решим задачу симплексным методом с помощью Excel. В результате получим: х1=2,3, х2=4,3, Fmax=154 (схема 1).

2.Очередное ветвление вспомогательной задачи на две вспомогательные подзадачи нижнего уровня.

Так как вышеполученное решение нецелочисленное, то оно дает верхнюю границу F = 154 для максимума целевой функции искомого оптимального решения исходной задачи.

В этом случае одна из переменных, имеющих дробное значение, в данном случае x1, берется за основу для разбиения (ветвления) данной вспомогательной задачи № 1 на вспомогательные подзадачи под номерами 1.1 и 1.2 по нижеприведенной методике:

Так как 2

задача 1.1. → задача 1.2.

2×1 + x2 ≤ 9 → 2×1 + x2 ≤ 9

5×1 + 4×2 ≤ 29 → 5×1 + 4×2 ≤ 29

х1=3

х1>=0, х2>=0х1>=0, х2>=0

F = 27×1+21×2 → max → F = 27×1+21×2 → max

При решении подзадачи 1.1. в Excel добавим ограничение х1

В результате получим:

х1=2, х2=4,75 Fмах=153,75.

153,75 — уточненная верхняя граница

При решении подзадачи 1.2. в Excel добавим ограничение х2>=3

В результате получим:

х1=3, х2=3, Fмах=144

Таким образом, получим первый целочисленный рекорд.

  1. Проверка оптимальности текущего целочисленного рекорда после очередного ветвления на основе формулировки критерия оптимальности текущего целочисленного рекорда по методу ветвей и границ:Текущий целочисленный рекорд объявляется оптимальным решением исходной задачи в том и только том случае, если при данном состоянии дерева решений на концах других ветвей не существует верхних границ, превосходящих значение рекорда.

В данном случае критерий не выполняется, так как 153,75 больше 144.

  1. Ветвление следует продолжить по подзадаче № 1.1, которая дает наибольшую на данный момент верхнюю границу из подзадач, находящихся на концах ветвей. В качестве основы для ветвления выбирается дробное значение переменной х2 = 4,75.

Так как 4

задача 1.1.1. → задача 1.1.2.

2×1+x2≤9 → 2×1+x2≤9

5×1+4×2≤29 → 5×1+4×2≤29

х2=5

х1

х1>=0, х2>=0х1>=0, х2>=0

F=27×1+21×2 → max → F=27×1+21×2 → max

При решении подзадачи 1.1.1. в Excel добавим ограничение х2

В результате получим:

х1=2, х2=4, Fмах=138

При решении подзадачи 1.1.2. в Excel добавим ограничение х2>=5

В результате получим:

х1=1,8, х2=5, Fмах=153,6

153,6 — уточненная верхняя граница.

  1. Проверка оптимальности текущего целочисленного рекорда после очередного ветвленияпоказывает, что критерий вновь не выполняется, так как 153,6 больше 138.
  2. Продолжаем ветвление по подзадаче 1. Рассмотрим подзадачу 1.3.В качестве основы для ветвления выбирается дробное значение переменной х2 =4,3.

Так как 3

задача 1.3. → задача 1.4.

2×1+x2≤9 → 2×1+x2≤9

5×1+4×2≤29 → 5×1+4×2≤29

х2=5

х1>=0, х2>=0х1>=0, х2>=0

F=27×1+21×2 → max → F=27×1+21×2→ max

При решении подзадачи 1.3. в Excel добавим ограничение х2

В результате получим:

х1=2,5, х2=4, Fмах=151,5

При решении подзадачи 1.4. в Excel добавим ограничение х2>=5

В результате получим:

х1=1,8, х2=5, Fмах=153,6

  1. Продолжим ветвление по подзадаче 1.4.

В качестве основы для ветвления выбирается дробное значение переменной х1 = 1,8.

Так как 1

2×1+x2≤9 → 2×1+x2≤9

5×1+4×2≤29 → 5×1+4×2≤29

х2>=5 х2>=2

х1

х1>=0, х2>=0 → х1>=0, х2>=0

F=27×1+21×2 →max → F=27×1+21×2 → max

При решении подзадачи 1. 4.2. — поиск не может найти подходящего решения.

При решении подзадачи 1.4.1. в Excel добавим ограничение х2

В результате получим: х1=1, х2=6, Fмах=153

Таким образом, значение 153 является новым текущим целочисленным рекордом, отменяющим прежний рекорд 144.

Оптимальным решением этой задачи будет Fмах=153, при х1=1, х2=6.

Следует отметить, что никаким округлением решения вспомогательной задачи № 1 (х1=2,3, х2=4,3) в принципе невозможно получить оптимальное решение х1=1, х2=6.

Рис. 1. Алгоритм «метода ветвей и границ» Дерево решений

Литература:

  1. Гармаш А. Н., Орлова И. В. Математические методы в управлении: Учебное пособие. — М.: Вузовский учебник: ИНФРА-М, 2014. — 272 — c.
  2. Математическое моделирование экономических процессов в сельском хозяйстве / Гатаулин А. М., Гаврилов Г. В., Сорокина Т. М. и др. ; Под ред. А. М. Гатаулина. — СПБ.: ООО «ИТК ГРАНИТ», 2009. — 432 с.
  3. Савиных В. Н. Математическое моделирование производственного и финансового менеджмента [Текст]: учеб. пособие / В. Н. Савиных. — Новосибирск: СГГА, 2007. — 219 с.
  4. Алексеев Г. В. Численное экономико-математическое моделирование и оптимизация [Электронный ресурс]: учебное пособие / Алексеев Г. В., Холявин И. И.— С.: Вузовское образование, 2013. 195— c. — Режим доступа: http://www.iprbookshop.ru/16905. — ЭБС «IPRbooks».

Основные термины (генерируются автоматически): задача, решение подзадачи, вспомогательная задача, линейное программирование, целочисленное линейное программирование, ветвление, дробное значение переменной, качество основы, метод ветвей, текущий целочисленный рекорд.

Автоматизация табличного симплекс-метода решения задач линейного программирования с использованием программы С++

Глава 1. Аналитическая часть 1.1 История развития экономико-математического планирования В 1938-1939 гг. ленинградский математик (впоследствии академик, лауреат Ленинской, Государственных и Нобелевской премий) Л.В. Канторович в результате анализа ряда проблем организации и планирования производства сформулировал новый класс условно-экстремальных задач и предложил методы их решения. Так было положено начало новой отрасли прикладной математики линейному программированию. В более поздних работах Л. В. Канторович расширил область применения линейного программирования в социалистической экономике, сформулировав задачи отраслевого и народнохозяйственного оптимального планирования. А через два десятилетия после своего возникновения линейное программирование стало основным инструментом планово-экономических решений на всех уровнях социалистического народного хозяйства. [1] В том же 1939 г. ленинградский экономист В. В. Новожилов, рассматривая эффективность плановых и проектных решений, сформулировал важные теоретические положения, ставшие потом органической частью теории оптимального планирования социалистической экономики. Далее методы планирования продолжали совершенствоваться, но только развитие вычислительной техники в конце 50-х гг. позволило сделать плановые многовариантные расчеты достаточно распространенными. Важную роль в организации и пропаганде экономико-математических исследований в этот период сыграл академик В. С. Немчинов. Именно в эти годы получают развитие некоторые разделы прикладной математики, связанные с решением оптимизационных задач: линейное и нелинейное программирование, теория оптимального управления и др. В 60-е гг. основное внимание исследователей сосредоточивается на разработке оптимизационных моделей различных типов и их практическом применении к решению задач планирования. Было построено большое количество экономико-математических моделей, на основе которых проведены расчеты по составлению реальных оптимальных планов (оптимальные планы перевозок, эксплуатации подвижного состава транспорта, использования топлива, загрузки оборудования предприятий; оптимальное размещение отдельных отраслей промышленности и предприятий отрасли; оптимальное планирование и распределение капиталовложений и т. д.), что дало большой народнохозяйственный эффект. Наряду с расширением сферы применения математических моделей в экономике и планировании осуществляется процесс усовершенствования моделей и использования более адекватного математического аппарата: переход от статических моделей к динамическим, от жестко детерминированных к стохастическим моделям, учитывающим случайность и неопределенность экономических процессов, применение дискретного программирования, методов статистического моделирования, создание новых алгоритмов, позволяющих решать задачи большой размерности. 1.2 Необходимость решения задач линейного программирования Применение экономико-математических методов и моделей позволяет существенно улучшить качество планирования и получить дополнительный экономический эффект без вовлечения в общественное производство дополнительных ресурсов, что чрезвычайно важно в условиях перехода экономики на преимущественно интенсивный путь развития. В настоящее время область возможного применения экономико-математических методов в планировании чрезвычайно велика и с каждым годом она расширяется. Однако область фактического их применения в практике плановых расчетов намного скромнее. Это объясняется трудностями широкого внедрения экономико-математических методов. К числу их следует отнести: сложность определения критерия оптимальности в ряде экономических задач; трудности при решении проблемы «встраивания» математических моделей в существующую систему планирования и управления, приводящие к необходимости создания новой технологии планирования, базирующегося на системном использовании экономико-математических методов и ЭВМ; стохастический и динамический характер экономических процессов, требующий усложнения используемого математического аппарата и программного обеспечения ЭВМ, увеличения объема вычислений; трудность измерений многих экономических явлений и получения массовой достоверной информации для наполнения разработанных моделей; трудность проверки правильности (верификации) экономико-математических моделей, ориентированных не столько на подтверждение действительности, сколько на решение новых социально-экономических задач (это в первую очередь относится к моделям планирования и прогнозирования), и т. д. Но главная трудность заключается в сложности моделируемых экономических процессов и явлений. Большинство объектов, изучаемых экономической наукой, может быть охарактеризовано кибернетическим понятием «сложная система». При изучении систем недостаточно (а иногда и невозможно) пользоваться методом расчленения на элементы с последующим изучением этих элементов в отдельности. Кроме того, моделирование существенно усложняется тем, что экономика охватывает не только производственные процессы, но и производственные отношения. Моделировать производственные отношения невозможно, не учитывая поведение людей, их интересы и индивидуально принятые решения. В результате производственно-хозяйственная или социально-экономическая ситуация, в которой приходится принимать плановые решения, часто оказывается намного богаче и сложнее тех моделей, которые используются в планировании в этой ситуации. В настоящее время линейное программирование является одним из наиболее употребительных аппаратов математической теории оптимального принятия решений, в том числе и в финансовой математике. Для решения задач линейного программирования разработано сложное программное обеспечение, дающее возможность эффективно и надежно решать практические задачи больших объемов. Эти программы и системы снабжены развитыми системами подготовки исходных данных, средствами их анализа и представления полученных результатов. В развитие и совершенствование этих систем вложен труд и талант многих математиков, аккумулирован опыт решения тысяч задач. Владение аппаратом линейного программирования необходимо каждому специалисту в области прикладной математики. 1.3 Линейное программирование Линейное программирование — математическая дисциплина, посвященная теории и методам решения задач об экстремумах линейных функций на множествах n-мерного векторного пространства, задаваемых системами линейных уравнений и неравенств. Линейное программирование — это наука о методах исследования и отыскания наибольших и наименьших значений линейной функции, на неизвестные которой наложены линейные ограничения. Таким образом, задачи линейного программирования относятся к задачам на условный экстремум функции. Казалось бы, что для исследования линейной функции многих переменных на условный экстремум достаточно применить хорошо разработанные методы математического анализа, однако невозможность их использования можно довольно просто проиллюстрировать. [17] Целевая функция задачи линейного программирования достигает своего экстремума (минимума или максимума) в вершине допустимой области. Если целевая функция достигает экстремального значения более, чем на одной вершине, то она достигает того же значения в любой точке, являющейся выпуклой комбинацией этих вершин. К задачам линейного программирования сводится множество практических задач, встречающихся в разных областях экономики и техники. Теоретическая и практическая сторона решения задачи линейного программирования на сегодняшний день хорошо разработана однако отдельные вопросы, связанные с так называемой проблемой вырожденности были разрешены не так давно. Полученные в рамках борьбы с вырожденностью результаты представляют самостоятельный интерес и являются основой для предлагаемого в настоящей работе нового алгоритма. Термин «программирование» нужно понимать в смысле «планирования». Он был предложен в середине 1940-х годов Джорджем Данцигом, одним из основателей линейного программирования, еще до того, как компьютеры были использованы для решения линейных задач оптимизации. Первым исследованием по линейному программированию является работа Л.B. Kантфовича “Математические методы организации и планирования производства”, опубликованная в 1939 г. В нем дана постановка задач линейного программирования, разработан метод разрешающих множителей решения задач линейного программирования и дано его теоретическое обоснование. Прямая задача линейного программирования является математической формулировкой проблемы составления такого плана использования различных способов производства, который позволяет получить максимальное количество однородного продукта при имеющихся в наличии ресурсах. Математическое программирование — это прикладная отрасль математики, которая является теоретической основой решения задач оптимального планирования. Существуют следующие разделы математического программирования: линейное, параметрическое, нелинейное и динамическое программирование. Наиболее разработанным и широко применяемым разделом математического программирования является линейное программирование, целью которого служит отыскивание оптимума (max, min) заданной линейной функции при наличии ограничений в виде линейных уравнений или неравенств. Линейное программирование – наиболее разработанный и широко применяемый раздел математического программирования (кроме того, сюда относят: целочисленное, динамическое, нелинейное, параметрическое программирование). Это объясняется следующим: — математические модели большого числа экономических задач линейны относительно искомых переменных; — данный тип задач в настоящее время наиболее изучен. Для него разработаны специальные методы, с помощью которых эти задачи решаются, и соответствующие программы для ЭВМ; — многие задачи линейного программирования, будучи решенными, нашли широкое применение; — некоторые задачи, которые в первоначальной формулировке не являются линейными, после ряда дополнительных ограничений и допущений могут стать линейными или могут быть приведены к такой форме, что их можно решать методами линейного программирования. 1.4 Математическая формулировка задачи линейного программирования Прямая задача линейного программирования является математической формулировкой. Проблемы составления такого плана использования различных способов производства позволяет получить максимальное количество однородного продукта при имеющихся в наличии ресурсах. Математическое программирование — это прикладная отрасль математики, которая является теоретической основой решения задач оптимального планирования. Математическим программированием принято называть науку о моделях и методах отыскания таких значений переменных некоторой целевой функции, при которых она достигает своего наибольшего или наименьшего значения в рамках поставленных ограничений (условий). Целевая функция – это математическое представление зависимости критерия оптимальности от искомых переменных. Существуют следующие разделы математического программирования: линейное, параметрическое, нелинейное и динамическое программирование. Наиболее разработанным и широко применяемым разделом математического программирования является линейное программирование, целью которого служит отыскивание оптимума (max, min) заданной линейной функции при наличии ограничений в виде линейных уравнений или неравенств. Математическое выражение целевой функции и ее ограничений называется математической моделью экономической задачи. В общем виде математическая модель задачи линейного программирования (ЛП) записывается как: L(?x)= c_1 x_1+ c_2 x_2+?+ c_j x_j+?+ c_n x_(n )>max?? (min)? при ограничениях: a_11 x_1+ a_12 x_2+?+ a_1j x_j+?+ a_1n x_n=b_1, a_21 x_1+ a_22 x_2+?+ a_2j x_j+?+ a_2n x_(n )=b_2 ………………………………………………………… a_i1 x_1+ a_i2 x_2+?+ a_ij x_j+?+ a_in x_n=b_i ………………………………………………………… a_m1 x_1+ a_m2 x_2+?+ a_mj x_j+?+ a_mn x_n=b_m x_j?0,i=?(1,m,j),j=?(1,n) где xj — неизвестные; aij, bi, cj— заданные постоянные величины. Все или некоторые уравнения системы ограничений могут быть записаны в виде неравенств. n-a_ij x_j=b_i,x_i?0,i=?(1,m),j=?(1,n). Допустимым решением (планом) зада¬чи линейного программирования называется вектор x ? = (x1, x2,…, xп), удовлетворяющий системе ограничений. Множество допустимых решений образует область допус¬тимых решений (ОДР). Допустимое решение, при котором целевая функция достигает своего экстремального значения, называ¬ется оптимальным решением задачи линейного программиро¬вания и обозначается ?xопт. Иногда на xi также накладывается некоторый набор ограничений в виде равенств, но от них можно избавиться, последовательно выражая одну переменную через другие и подставляя ее во всех остальных равенствах и неравенствах (а также в функции f). Такую задачу называют «основной» или «стандартной» в линейном программировании. Базисное допустимое решение x ?(х1, х2,…, xr, 0, …, 0) яв¬ляется опорным решением, где r — ранг системы ограничений. Математическая модель задачи ЛП может быть каноничес¬кой и неканонической. Если все ограничения системы заданы урав¬нениями и переменные xj неотрицательные, то такая модель задачи называется канонической. Если хотя бы одно ограничение является неравенством, то модель задачи линейного программирования является неканонической. Чтобы перейти от неканонической модели к канонической, необходимо в каждое неравенство ввести балансовую переменную xn+i. Если знак неравенства ?, то балансовая переменная вводится со знаком плюс, если знак неравенства ?, то — минус. В целевую функ¬цию балансовые переменные не вводятся. Чтобы составить математическую модель задачи ЛП, не¬обходимо: — ввести обозначения переменных; — исходя из цели экономических исследований, составить целевую функцию; — учитывая ограничения в использовании экономических показателей задачи и их количественные закономернос¬ти, записать систему ограничений. 1.5 Постановка задачи целочисленного программирования Значительная часть задач оптимального планирования по смыслу может иметь решения только в целых числах. Такие задачи связаны с определением количества единиц неделимой продукции, например, числа станков при загрузке оборудования, численности работников в структурных подразделениях предприятия и т. д. Такие задачи решаются методами целочисленного программирования, где общая постановка задачи линейного программирования дополняется требованием о том, чтобы найденные переменные в оптимальном плане были целыми. Под задачей целочисленного программирования (ЦП) понимается задача, в которой все или некоторые переменные должны принимать целые значения. В том случае, когда ограничения и целевая функция задачи представляют собой линейные зависимости, задачу называют целочисленной задачей линейного программирования. В противном случае, когда хотя бы одна зависимость будет нелинейной, это будет целочисленной задачей нелинейного программирования. Если функция и ограничения в таких задачах линейны и на переменные задачи наложено условие целочисленности, то такие задачи называются задачами линейного целочисленного программирования. Сформулируем основную задачу линейного программирования, в которой переменные могут принимать только целые значения. В общем виде эту задачу можно записать следующим образом. n-c_ij x_j=b_i, (i=?(1,m)) x_j?0 (j=?(1,n)) x_j-цели (j=?(1,n)) Если найти решение задачи симплексным методом, оно может быть как целочисленным, так и нет. В таком случае для нахождения оптимального плана задачи нужны специальные методы. В настоящее время есть несколько таких методов, из которых наиболее известны графический метод и метод Гомори. Особый интерес к задачам ЦП вызван тем, что во многих практических задачах необходимо находить целочисленное решение ввиду дискретности ряда значений искомых переменных. В сфере лесного комплекса к их числу относятся следующие задачи: задачи оптимизации раскроя; оптимальное проектирование лесных машин и оборудования; оптимизации системы сервиса и технического обслуживания машинно-тракторного парка; и т.д. Как уже отмечалось, часто задачу ЦП решают без учета условий целочисленности переменных, а затем округляют полученное решение с избытком или недостатком. Это не гарантирует получение оптимального целочисленного решения задачи. Поэтому для нахождения оптимального решения целочисленных задач применяют специальные методы, в которых учитывается, что число возможных решений любой целочисленной задачи является конечным. Следовательно, можно рассмотреть все возможные сочетания целочисленных переменных и проверить, удовлетворяют ли они ограничениям, и из числа удовлетворяющих ограничениям, выбрать наилучшее с точки зрения целевой функции. Такой метод называют методом полного перебора. Его трудоемкость с ростом числа переменных и расширением области граничных условий значительно возрастает. Поэтому для реальных задач он неприменим. На практике для решения реальных задач следует использовать методы, в котором все возможные альтернативы не рассматриваются. Наиболее распространенным является метод ветвей и границ.

Решатели NEOS

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

Если вам нужна помощь в выборе решателя, обратитесь к Дерево оптимизации руководства НЕОС. Затем выбор решателя определяет доступные параметры ввода для определения задачи оптимизации.

Каждый решатель содержит примеры задач и справочную информацию о решателе. Обязательно отправьте образец задачи, чтобы понять, как ее отправить. проблемы с оптимизацией для NEOS. Если у вас возникнут проблемы, обратитесь к Часто задаваемые вопросы по серверу NEOS, или свяжитесь с нами, нажав на кнопку Комментарии и вопросы ссылка внизу страницы.


  • Тип проблемы
  • Решатель
  • Просмотр очереди заданий
  • Просмотр результатов задания / Завершение задания
  • ПРЕОБРАЗОВАТЬ [ГАМС]
  • Домино [jpeg]
  • ЕСМ [CSV] [один_текст] [zip]
  • Фишверкс [CSV]
  • Приложение для планирования [JSON]
  • Л-БФГС-Б [АМПЛ]
  • БикМак [РАЗДЕЛЬНЫЙ]
  • согласие [TSP]
  • Вязание [АМПЛ]
  • МИЛЬ [ГАМС]
  • НЛПЭК [ГАМС]
  • ПУТЬ [АМПЛ] [ГАМС]
  • Германия [ГАМС]
  • ДЖЕМ [ГАМС]
  • АНТИГОНА [ГАМС]
  • АСА [АМПЛ]
  • БАРОН [АМПЛ] [ГАМС]
  • Куэнн [АМПЛ] [ГАМС]
  • значков [АМПЛ]
  • ЛГО [АМПЛ]
  • ЛИНДОГлобал [АМПЛ] [ГАМС]
  • ОКТЕРАКТ [АМПЛ] [ГАМС] [Нидерланды]
  • ПГАПакет [АМПЛ]
  • PSтеплый [АМПЛ]
  • РАПОСа [АМПЛ]
  • код [АМПЛ] [КОМПЛЕКС] [ГАМС] [MPS] [ОСИЛ] [ЗИМПЛ]
  • РЕЛАКС4 [ДИМАКС] [РЕЛАКС4]
  • ударов в минуту [АМПЛ] [LP] [MPS] [QPS]
  • клп [MPS]
  • КОПТ [АМПЛ] [ГАМС] [LP] [MPS] [Нидерланды]
  • КОМПЛЕКС [АМПЛ] [ГАМС] [LP] [MPS] [Нидерланды]
  • ФИКО-Экспресс [АМПЛ] [ГАМС] [МОЗЕЛЬ] [MPS] [Нидерланды]
  • Гуроби [АМПЛ] [ГАМС] [LP] [MPS] [Нидерланды]
  • Высокие [АМПЛ] [ГАМС] [LP] [MPS]
  • МОСЕК [АМПЛ] [ГАМС] [LP] [MPS] [Нидерланды]
  • ОКТЕРАКТ [АМПЛ] [LP] [MPS] [Нидерланды]
  • ООКП [АМПЛ]
  • Соплекс 80 бит [LP] [MPS]
  • фильтрМПЭК [АМПЛ]
  • Вязание [АМПЛ] [ГАМС]
  • НЛПЭК [ГАМС]
  • КВС [АМПЛ] [ГАМС] [MPS]
  • КОПТ [АМПЛ] [ГАМС] [LP] [MPS] [Нидерланды]
  • КОМПЛЕКС [АМПЛ] [ГАМС] [LP] [MPS] [Нидерланды]
  • feaspump [АМПЛ] [КОМПЛЕКС] [MPS]
  • ФИКО-Экспресс [АМПЛ] [ГАМС] [МОЗЕЛЬ] [MPS] [Нидерланды]
  • Гуроби [АМПЛ] [ГАМС] [LP] [MPS] [Нидерланды]
  • Высокие [АМПЛ] [ГАМС] [LP] [MPS]
  • МИНТО [АМПЛ]
  • МОСЕК [АМПЛ] [ГАМС] [LP] [MPS] [Нидерланды]
  • ОКТЕРАКТ [АМПЛ] [LP] [MPS] [Нидерланды]
  • прокси [КОМПЛЕКС] [MPS]
  • qsopt_ex [АМПЛ] [LP] [MPS]
  • код [АМПЛ] [КОМПЛЕКС] [ГАМС] [MPS] [ОСИЛ] [ЗИМПЛ]
  • СИМФОНИЯ [MPS]
  • АльфаЭКП [ГАМС]
  • АНТИГОНА [ГАМС]
  • БАРОН [АМПЛ] [ГАМС]
  • Бонмин [АМПЛ] [ГАМС]
  • Куэнн [АМПЛ] [ГАМС]
  • ДИКОПТ [ГАМС]
  • ФилМИНТ [АМПЛ]
  • Вязание [АМПЛ] [ГАМС]
  • ЛИНДОГлобал [АМПЛ] [ГАМС]
  • МИНЛП [АМПЛ]
  • ОКТЕРАКТ [АМПЛ] [ГАМС] [Нидерланды]
  • СББ [ГАМС]
  • код [АМПЛ] [КОМПЛЕКС] [ГАМС] [MPS] [ОСИЛ] [ЗИМПЛ]
  • ВЫСТРЕЛ [ГАМС]
  • МУСКОД-II [АМПЛ]
  • кондор [АМПЛ]
  • АНТИГОНА [ГАМС]
  • КОНОПТ [АМПЛ] [ГАМС]
  • ФИКО-Экспресс [МОЗЕЛЬ]
  • фильтр [АМПЛ]
  • Ипопт [АМПЛ] [ГАМС] [Нидерланды]
  • Вязание [АМПЛ] [ГАМС] [Нидерланды]
  • ЛАНСЕЛОТ [АМПЛ]
  • ЛОКО [АМПЛ]
  • МИНОС [АМПЛ] [ГАМС]
  • ОКТЕРАКТ [АМПЛ] [ГАМС] [Нидерланды]
  • ПАТНЛП [ГАМС]
  • СНИМОК [АМПЛ] [ГАМС] [Нидерланды]
  • КОПТ [MPS]
  • КОМПЛЕКС [АМПЛ] [ГАМС] [MPS] [Нидерланды]
  • ФИКО-Экспресс [АМПЛ] [ГАМС] [МОЗЕЛЬ] [MPS] [Нидерланды]
  • Гуроби [АМПЛ] [ГАМС] [MPS] [Нидерланды]
  • МОСЕК [КБФ] [ГАМС] [MPS]
  • код [АМПЛ] [КОМПЛЕКС] [MPS]
  • нсипс [АМПЛ]
  • csdp [MATLAB_BINARY] [SPARSE_SDPA]
  • мосек [MATLAB_BINARY] [SPARSE_SDPA]
  • пенсдп [MATLAB_BINARY] [SPARSE_SDPA]
  • scipsdp [SPARSE_SDPA]
  • СДПА [MATLAB_BINARY] [SPARSE_SDPA]
  • сдплр [СДПЛР] [SPARSE_SDPA]
  • сдпт3 [MATLAB_BINARY] [SPARSE_SDPA]
  • седуми [MATLAB_BINARY] [SPARSE_SDPA]
  • бнбс [SMPS]
  • ддсип [LP] [MPS]
  • ДСП [SMPS]
  • сд [SMPS]

Целочисленное программирование – Оптимизация онлайн

  • Алекс Данбар
  • Саумья Синха
  • Эндрю Дж. Шефер
  • Категории Целочисленное программирование, Многокритериальная оптимизация Метки целочисленное программирование, лагранжева двойственность, лагранжева релаксация, многокритериальная двойная оптимизация, супераддитивная

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

  • Кристофер Мьюир
  • Люк Маршалл
  • Алехандро Ториелло
  • Категории (Смешанные) Целочисленное линейное программирование, Многогранники, Планирование Метки Комбинаторная оптимизация, Целочисленное программирование, Интервальное планирование, Временное бинарное планирование, Сопоставление многогранников

    Вдохновленные приложениями в облачных вычислениях, мы изучаем временную проблему упаковки корзины с заданиями, которые занимают половину емкости корзины. Экземпляр задается набором заданий, каждое из которых имеет время начала и окончания, в течение которых оно должно быть обработано, т. е. назначено ячейке. Мусорный бак может вместить два рабочих места … Читать далее

  • Сэмюэл Крогер
  • Хамидреза Валиди
  • Илья В. Хикс
  • Категории Комбинаторная оптимизация, Целочисленное программирование, Оптимизация сети Метки целочисленное программирование, социальная устойчивость, задача k-03 с максимальной привязкой

    Руководствуясь важностью социальной устойчивости как решающего элемента в каскадном уходе пользователей из социальной сети, мы изучаем определение наибольшего расслабленного варианта связанного подграфа на основе степеней: проблема k-core с максимальным закреплением. Учитывая граф G = (V, E) и целые числа k и b, задача k-ядра с максимальной привязанностью стремится найти наибольшее… Читать далее

  • Андреас Берманн
  • Патрик Гемандер
  • Александр Мартин
  • Категории (Смешанные) Целочисленное линейное программирование, Стохастическое программирование, Транспорт Теги проблема клики, потребление энергии, целочисленное программирование, множественный выбор ограничений, железная дорога составление расписания, стохастическая оптимизация

    Мы рассматриваем проблему в контексте энергоэффективного расписания метрополитена, в котором существующий проект расписания улучшается за счет незначительного изменения времени отправления и движения. На практике синхронизация между ускоряющимися и тормозящими поездами для использования рекуперативного торможения играет важную роль для энергоэффективности расписания. Поскольку отклонения от запланированного графика … Читать дальше

  • Barkel Mathijs
  • Maxence Delorme
  • Категории Комбинаторная оптимизация Теги Формула дугового потока, упаковка в контейнеры, генерация ограничений, целочисленное программирование, Двухгистограммы

    Мы рассматриваем упаковку двухгистограмм (2-BCPP), недавнюю задачу комбинаторной оптимизации, цель которой состоит в том, чтобы упаковать набор одномерных элементов в минимальное количество ячеек. В отличие от хорошо известной проблемы упаковки в контейнеры, пары предметов группируются в гистограммы, и решение возможно только в том случае, если первое и… Читать далее

  • Изува Аханор
  • Медал Хью Р.
  • Эндрю К. Трапп
  • Категории Приложения — Наука и техника, Целочисленное программирование, Другие темы Теги разнообразие, целочисленное программирование, почти оптимальные решения, узел -правила выбора

    Хотя большинство методов решения задач оптимизации со смешанными целыми числами вычисляют единственное оптимальное решение, разнообразный набор почти оптимальных решений часто может быть более полезным. Мы представляем новый метод поиска набора разнообразных решений, подчеркивая разнообразие в поиске решений, близких к оптимальным. В частности, в рамках схемы ветвей и границ мы исследуем параметризованный выбор узлов… Подробнее

  • Т. Ван дер Бик
  • Дж.Т. Ван Эссен
  • Дж. Прюйн
  • Карен И. Аардал
  • Категории (Смешанные) Целочисленное линейное программирование, Подходы к секущей плоскости Теги Гибкая структура проекта, целочисленное программирование, планирование проекта, Задача планирования проекта с ограниченными ресурсами

    Задача планирования проекта с ограниченными ресурсами с гибкой структурой проекта (RCPSP-PS) является обобщением проблемы планирования проекта с ограниченными ресурсами (RCPSP). Цель RCPSP-PS состоит в том, чтобы найти минимальное расписание выполнения с учетом приоритета и ограничений ресурсов, при этом необходимо выполнить только подмножество всех действий. Представляем общий … Читать дальше 9{N-p}_+\}$, в котором подзадача, возникающая при фиксированном $x$, имеет специальную структуру. Одним из таких примеров является задача размещения мощностей с единым источником, в которой релаксация линейного программирования подзадачи представляет собой транспортировку … Читать далее

  • Бруно Колонетти
  • Эрлон Финарди
  • Виктор М. Завала
  • Сэмюэл Брито
  • 0003 Блок

    уже более 50 лет находится в центре работы энергосистемы. Однако эту проблему нельзя считать решенной из-за ее масштабности и сложности. Сегодня операторы полагаются на готовые решения для оптимизации, чтобы решить эту сложную проблему, и часто прибегают к упрощениям, чтобы сделать проблему более понятной и решаемой в … Подробнее

  • Ануп К.П.
  • Meenarli Sharma
  • Категории Приложения — операционные и управленческие науки, Транспорт Теги консолидация грузов, целочисленное программирование, Мультимодальные перевозки, Скидка за объем

    Мы рассматриваем реальную проблему мультимодальных грузовых перевозок, которая возникает в организации по производству продовольственного зерна в Индии. Эта задача направлена ​​на то, чтобы удовлетворить спрос на набор складов для различных видов продовольственного зерна из другого набора складов с избыточными количествами в течение нескольких периодов времени железнодорожным и автомобильным транспортом, при этом минимизируя … Читать далее

    Оптимизация с помощью Python — настоящий Python

    Линейное программирование — это набор методов, используемых в математическое программирование , иногда называемое математической оптимизацией, для решения систем линейных уравнений и неравенств при максимизации или минимизации некоторой линейной функции. Это важно в таких областях, как научные вычисления, экономика, технические науки, производство, транспорт, военные, менеджмент, энергетика и так далее.

    Экосистема Python предлагает несколько всеобъемлющих и мощных инструментов для линейного программирования. Вы можете выбирать между простыми и сложными инструментами, а также между бесплатными и коммерческими. Все зависит от ваших потребностей.

    В этом уроке вы узнаете:

    • Что такое линейное программирование и почему оно важно
    • Какие инструменты Python подходят для линейного программирования
    • Как построить модель линейного программирования на Python
    • Как решить задачу линейного программирования с помощью Python

    Сначала вы изучите основы линейного программирования. Затем вы узнаете, как реализовать методы линейного программирования в Python. Наконец, вы познакомитесь с ресурсами и библиотеками, которые помогут вам в дальнейшем развитии линейного программирования.

    Бесплатный бонус: 5 Thoughts On Python Mastery, бесплатный курс для Python-разработчиков, который показывает вам дорожную карту и образ мышления, которые вам понадобятся, чтобы вывести свои навыки Python на новый уровень.

    Объяснение линейного программирования

    В этом разделе вы познакомитесь с основами линейного программирования и родственной дисциплины — линейного программирования смешанных целых чисел. В следующем разделе вы увидите несколько практических примеров линейного программирования. Позже вы будете решать задачи линейного программирования и смешанно-целочисленного линейного программирования с помощью Python.