Линейное программирование
Линейное программирование — это математический численный метод для оптимизации моделей, в которых целевые функции и ограничения строго являются уравнениями линейной алгебры.[1] Модель линейного программирования включает целевую функцию, ограничения в виде линейных уравнений или неравенств и требование неотрицательности переменных.[2] Термин был предложен Дж. Данцигу Т. Купмансом в 1951 году[3] Метод применим в военной и экономической логистике для оптимизации доставки грузов и технологических процессов. Был расширен и далее исследован в пору Второй Мировой войны и после.[3]
Целевая функция[править]
Невозможно разобрать выражение (синтаксическая ошибка): {\displaystyle f(x)= c_1x_1 + c_2x_2 + ... + c_nx_n → min;}
Если функцию требуется обратить не в минимум, а в максимум, достаточно изменить знак коэффициентов на противоположный[4]
Ограничения[править]
Здесь a и b — постоянные числа, заданные условиями задачи.[2] Если по условиям задачи вместо равенств предполагаются неравенства, то для неравенства вида «≤» для преобразования его в равенство надо добавить дополнительную переменную или несколько таких переменных ( и т.д. по числу неравенств). Аналогично, для неравенств вида «≥» дополнительную неотрицательную переменную следует вычесть (или, что то же самое, прибавить с коэффициентом –1).[5][6]
Требования неотрицательности переменных[править]
Переменные x принимают неотрицательные значения: , Невозможно разобрать выражение (синтаксическая ошибка): {\displaystyle j = 1, …, n} .[2] Постоянные a, b и c, заданные условиями задачи, требований к неотрицательности не имеют (могут быть как положительными, так и отрицательными).
Запись в табличной форме[править]
Предположим, что имеются запасы сырья, из которого производятся продукты разных видов, приносящие определенную прибыль. Требуется расчитать, какой объем продукции каждого вида следует выпустить, чтобы максимизировать прибыль.
Вид сырья | Продукт 1 | Продукт 2 | Продукт 3 | Продукт 4 | Запасы сырья |
---|---|---|---|---|---|
Сырье 1 | a11 = 4 кг | a12 = 2 кг | a13 = 1 кг | a14 = 8 кг | b1 ≤ 1200 кг |
Сырье 2 | a21 = 2 кг | a22 = 10 кг | a23 = 6 кг | a24 = 0 кг | b2 ≤ 600 кг |
Сырье 3 | a31 = 3 кг | a32 = 0 кг | a33 = 6 кг | a34 = 1 кг | b3 ≤ 1500 кг |
Прибыль (руб.) | c1 = 15 | c2 = 6 | c3 = 12 | c4 = 24 | max |
Коэффициенты aij указывают, сколько сырья i уходит на изготовление одной единицы j-го продукта.
На выходе алгоритма расчета будут найдены переменные xj, которые соответствуют оптимальному выпуску продукции при указанных ограничениях.[7]
Другим типом задач является задача на минимизацию издержек при составлении диеты или откорме животных. Коэффициенты a показывают содержание вещества в фунтах на фунт ингредиента. [1]
Вид корма | Известняк | Зерно | Соевая мука | Ограничение |
---|---|---|---|---|
Кальций | a11 = 0,380 | a12 = 0,001 | a13 = 0,002 | b1 ≥ 8 и b1 ≤ 12% |
Белок | a21 = 0,00 | a22 = 0,09 | a23 = 0,50 | b2 ≥ 22% |
Клетчатка | a31 = 0,00 | a32 = 0,02 | a33 = 0,08 | b3 ≤ 5% |
Стоимость (долл./фунт) | c1 = 0,12 | c2 = 0,45 | c3 = 1,60 | min |
Симплекс-метод[править]
Является основным методом для решения задачи линейного программирования. Основан на том, что область точек пространства, удовлетворяющих линейным ограничениям, является многогранником, и максимум линейной функции должен достигаться в одной из вершин этого многогранника. На каждом шаге симплекс-метода происходит переход в соседнюю вершину с не худшим значением целевой функции. При компьютерной реализации алгоритма на вход нужно подать одномерный массив коэффициентов целевой функции c (его размерность совпадает с числом столбцов), двумерный массив коэффициентов системы ограничений a (размерность m×n), одномерный массив свободных членов (размерность совпадает с числом строк) и знак ограничений (=, ≥, ≤), а также способ оптимизации (на минимум или на максимум). На выходе программа найдет значения переменных x (одномерный массив с размерностью, равной числу столбцов).
См. также[править]
- Каноническая задача линейного программирования
- Задача о назначениях
- Задача о распределении ресурсов
- Производственная задача
- Транспортная задача
Источники[править]
- ↑ 1,0 1,1 Таха Х. Введение в исследование операций 7-е изд. Вильямс, 2005, 903 стр.
- ↑ 2,0 2,1 2,2 http://emm.ostu.ru/lect/lect2.html
- ↑ 3,0 3,1 Данциг Д. Линейное программирование, его применения и обобщения (1966).
- ↑ Вентцель Е. С. Исследование операций. — М.: Советское радио, 1964
- ↑ http://www.mathelp.spb.ru/book1/lprog3.htm
- ↑ Барсов А. С. Что такое линейное программирование. М:1959
- ↑ Лунгу К. Н. Линейное программирование. Руководство к решению задач. — М.: Физматлит, 2005. — 128 с. — ISBN 5-9221-0631-7.