
- •1. Введение
- •1.1. Математическое моделирование как методологии научных исследований
- •1.2. Классификация математических моделей
- •2. Исследование операций
- •2.1. Терминология
- •2.2. Процесс исследования операций
- •3. Моделирование на основе системного подхода
- •3.1. Терминология
- •3.2. Этапы системного анализа-синтеза
- •3.3. Классификация систем и инструментов аналитической деятельности
- •4. Математическое программирование
- •4.1. Линейное программирование
- •4.1.1.Терминология
- •4.1.2. Решение и анализ задач лп графическим методом
- •4.1.3. Укрупненный алгоритм решения графическим методом
- •4.1.4. Анализ чувствительности оптимального решения задачи лп
- •Самостоятельная работа
- •4.2. Целочисленное программирование
- •4.2.1. Терминология
- •4.2.2. Задача выбора плана застройки участков
- •4.3. Управление запасами
- •4.3.1. Основная модель управления запасами
- •4.3.2. Моделирование управления запасами в условиях предоставления скидки
- •Построение модели для нахождения eoq в условиях предоставления скидки.
- •Метод анализа иерархий
- •5.1. Терминология
- •5.2. Задача о выборе университета
- •5 .3. Задача поиска оптимального решения с помощью метода анализа иерархий
- •Принятие решений в условиях риска и неопределеннности
- •Терминология
- •6.2. Принятие решений в условиях риска
- •6.2.1. Сравнение рисков инвестиционных проектов
- •6.3. Принятие решений в условиях неопределенности
- •6.3.1. Критерии выбора альтернативных решений
- •7. Имитационное моделирование средствами Excel
- •7.1. Имитационное моделирование как метод исследования операций и оптимизации
- •7.2. Имитационное моделирование в ms Excel.
- •8. Создание модели предприятия и принятие управленческого решения на основе результатов моделирования.
- •8.1. Описание предприятия
- •8.2. Совершенствование модели с учетом дополнительной информации о системе и внешней среде.
- •9. Системная динамика как средство оптимизации функционирования экономических и экологических систем
- •9.1. Терминология
- •9.2.Основные принципы системной динамики
- •9.3. Модель «хищники-жертвы» как пример моделирования обратных связей
- •9.4. Имитационная модель «хищники-жертвы» в системе ms Excel
- •9.5. Имитационная модель «хищники-жертвы» в системе stella
- •Приложение 1
- •Литература
4.2.1. Терминология
Термины |
Описание |
Целочисленные модели линейного программирования |
Максимизация или минимизация
При условии
|
Чистая модель целочисленного программирования |
В чистых моделях целочисленном программирования все переменные должны быть целыми (p=n). В смешанных моделях целочисленного программирования p строго меньше n. |
Бинарные (Двоичные) модели программирования |
Модели целочисленного программирования со всеми целочисленными переменными, принимающими только значения 0 или 1. Модель может быть классифицирована как чисто бинарная модель программирования или смешанная бинарная модель программирования. |
Логические ограничения |
Линейные ограничения на целочисленные переменные, которые являются моделью некоторого логического условия. |
4.2.2. Задача выбора плана застройки участков
Строительная фирма планирует построить новые здания на четырех участках, обозначенных 1, 2, 3 и 4. На каждом участке могут быть выбраны три возможные строительные проекта: А, В и С. Допускается вариант не использующий какой-либо участок. Задача состоит в выборе места и одного из существующих проектов. Предварительные исследования определили необходимые инвестиции и чистый годовой доход по каждому из 12 вариантов, приведенных в таблице 4.4. (Например, A1 означает строительство по проекту А на участке 1). Компания располагает инвестиционным бюджетом 100 миллионов рублей. Требуется определить оптимальный план. Цель состоит в максимизации общего годового дохода, без превышения бюджета строительства.
На данном примере проявляется одно из главных различий между линейным и целочисленным программированием, а именно, неделимость альтернативных решений. Требования заключаются в том, что могут быть построены только целые здания, то есть выбраны только целые проекты.
Таблица 4.4
План застройки |
A1 |
A2 |
A3 |
A4 |
B1 |
B2 |
B3 |
B4 |
C1 |
C2 |
C3 |
C4 |
Получаемый доход (млн.руб) |
6 |
7 |
9 |
11 |
12 |
15 |
5 |
8 |
12 |
16 |
19 |
20 |
Затраты (млн.руб) |
13 |
20 |
24 |
30 |
39 |
45 |
12 |
20 |
30 |
44 |
48 |
55 |
Модели линейного и целочисленного программирования
Для создания модели должны быть определены переменные решения. В моделях математического программирования обычно используются переменные с индексами. Для представления решений в рассматриваемой задаче используются логические (двоичные) переменные А1, А2, … С3 и С4, каждая из которых принимает значение либо 0, либо 1. Представим условия задачи в виде таблиц:
Таблица 4.5. Таблица 4.6.
Доход |
А |
В |
С |
Уч 1 |
6 |
12 |
12 |
Уч 2 |
7 |
15 |
16 |
Уч 3 |
9 |
5 |
19 |
Уч 4 |
11 |
8 |
20 |
Затраты |
А |
В |
С |
Уч 1 |
13 |
39 |
30 |
Уч 2 |
20 |
45 |
44 |
Уч 3 |
24 |
12 |
48 |
Уч 4 |
30 |
20 |
55 |
Каждая строка задает номер участку застройки, а столбец – вариант проекта. При этом переменные будут составлять двоичную матрицу, представленную таблицей 4.7.
Таблица 4.7.
Альтернативы |
А |
В |
С |
Уч 1 |
А1 |
В1 |
С1 |
Уч 2 |
А2 |
В2 |
С2 |
Уч 3 |
А3 |
В3 |
С3 |
Уч 4 |
А4 |
В4 |
С4 |
Каждое сочетание «проект/участок» либо присоединяет свой вклад в чистый доход и бюджет (=1) , либо нет (=0).
Задача линейного программирования будет иметь вид:
Цель: Max z = 6*A1 + 7*A2 + 9*A3+ ... + 19*C3 + 20*C4.
При условии:
Затраты не превосходят бюджета:
13*A1
+ 20*A2
+ 24*A3
+ ... + 48*C3
+ 55*C4
100.
Двоичные значения переменных : A1, A2, ... ,C4 {0,1}.
Такая модель описывает задачу поиска набора комбинаций «проект/участок», который максимизирует чистый доход, не превышая бюджетные ограничения.
Модель имеет линейную форму, необходимую для линейного программирования, но она не является линейной моделью, т.к. переменные не могут принимать промежуточные значения. Часто термин «целочисленное программирование» используется для линейной модели с некоторыми или всеми целыми переменными, оставляя в стороне определение «линейное».
Решение задачи линейного программирования
Создание модели в MS Excel предполагает использование надстройки «Поиск решения». Сначала мы решаем модель при удалении всех условий, получив, таким образом, задачу линейного программирования (ЛП). Такова общепринятая практика для очень больших моделей, т.к. задачи линейного программирования намного легче решить, чем задачи целочисленного программирования (ЦП). В данном случае это проиллюстрирует некоторые общие отношения между решением задачи линейного программирования (ЛП-решением) и задачи целочисленного программирования (ЦП-решением). ЛП-решение показано на рисунке 4.5.
-
A
B
C
D
E
F
G
H
I
1
Варианты
прибыли
А
В
С
Альтернативы
А
В
С
2
Уч 1
6
12
12
Уч 1
1
0
1
3
Уч 2
7
15
16
Уч 2
0
0
0
4
Уч 3
9
5
19
Уч 3
0
1
0,52
5
Уч 4
11
8
20
Уч 4
0
1
0
6
7
8
Затраты
А
В
С
Доход
9
Уч 1
13
39
30
40,89
10
Уч 2
20
45
44
11
Уч 3
24
12
48
Затраты
Бюджет
12
Уч 4
30
20
55
100
<=
100
Рисунок 4.5 – Решение задачи ЛП в MS Excel
Диапазон ячеек G2:I5 представляет переменные решения.
Диапазон ячеек B2:D5 представляет переменные решения
Диапазон ячеек B9:D12 представляет переменные решения
Целевая функция задается в ячейке F9 формулой
F9 = СУММПРОИЗВ(B2:D5;G2:I5).
Затраты вычисляются в ячейке F12 формулой
F12 = СУММПРОИЗВ(B9:D12;G2:I5).
Надстройка «Поиска решения» имеет следующий вид (Рис.4.6 a,b):
a)
b)
Рис. 4.6. Решение задачи ЛП с помощью надстройки «Поиск решения»
После нажатия кнопки «Выполнить» «Поиск решения» находит максимальное значение функции, заданной формулой в ячейке F9, за счет изменения ячеек диапазона G2:I5 (Чтобы задать диапазон изменяемых ячеек, достаточно установить курсор в окно «Изменяемые ячейки», а затем, перейдя на основную таблицу, установить курсор «мыши» на ячейку G2 и, удерживая нажатой левую клавишу, «протянуть» курсор до ячейки I5).
Ограничениями являются неравенства F12 ≤ H12 (затраты не превышают бюджета) и G2:I5 ≤ 1 (значения ячеек в указанном диапазоне, отражающие факт использования данного участка для каждого проекта, не превышают 1) (Рис. 4.6a). (Чтобы задать эти ограничения, надо нажать кнопку «Добавить» и в открывшемся диалоговом окне указать ячейки или диапазоны, а также знак равенства или неравенства). Условие неотрицательности, относящееся к «изменяемым ячейкам», задано в окне «Параметры» (рис. 4.6b). Отметим, что условие целочисленности пока не включено в ограничения.
Решение задачи ЛП (рис.4.5.):
z = 40.89, A1 = 1, B3 = 1, B4 = 1, C1 = 1, C3 = 0.52.
Равенство F12=H12 показывает, что такое решение использовало бы весь свой бюджет.
Модель ЛП является редукцией модели ЦП, потому что снято одно из ограничений модели ЦП, а именно требование целочисленности значений переменных. Ошибочно считать, что округление решения ЛП-задачи позволит получить целочисленное решение. В нашем случае С3 округляется до 1, что дает невозможное решение, потому что оно нарушает бюджетное ограничение. Округление С3 до 0 дает возможное решение, но оно не является оптимальным ЦП-решением. В общем случае округление нецелочисленных оптимальных решений задачи ЛП до целого не обеспечивает оптимальное решение задачи ЦП. В более сложных задачах часто бывает трудно найти возможные решения путем округления.
Обратим внимание на то, что в найденном решении все переменные кроме одной принимают целое значение, хотя целые значения и не заданы условиями. Это происходит потому, что, как отмечено выше, оптимальное решение задачи ЛП находится на границе ОДР и является одним из базисных решений, а базисные решения имеют столько же базисных переменных, сколько существует ограничений. Каждая небазисная переменная находится на верхней (1) или нижней (0) границе, в то время как базисным переменными могут придаваться дробные значения. С одним ограничением можно было бы ожидать не более одного дробного значения, как мы видим в нашем случае. Вполне возможно, что базисная переменная будет достигать одной из своих границ.
Решение задачи целочисленного программирования
Уточним модель введением условия целочисленности изменяемых ячеек (Нажав «Добавить», в открывшемся окне задать диапазон G2:I5 и выбрать в списке знаков свойство «двоичное»).
Рис. 4.7. Дополнение условия «двоичности» изменяемых ячеек
Решение задачи ЦП имеет следующие значения (рис. 4.8.):
z = 40, A1 = 1, A3 = 1, B3 = 1, B4 = 1, C1 = 1.
-
A
B
C
D
E
F
G
H
I
1
Варианты
прибыли
А
В
С
Альтернативы
А
В
С
2
Уч 1
6
12
12
Уч 1
1
0
1
3
Уч 2
7
15
16
Уч 2
0
0
0
4
Уч 3
9
5
19
Уч 3
1
1
0
5
Уч 4
11
8
20
Уч 4
0
1
0
6
7
8
Затраты
А
В
С
Доход
9
Уч 1
13
39
30
40
10
Уч 2
20
45
44
11
Уч 3
24
12
48
Затраты
Бюджет
12
Уч 4
30
20
55
99
<=
100
Рис.4.8. Результат замены ЛП-модели на ЦП-модель
Сравнивая полученные решения, видим что вариант А3 заменил С3 в множестве решений (А3 имеет значение 1). Значение целевой функции (Прибыль) снизилась до 40. Соотношение, показывающее, что оптимальное значение целевой функции ЦП-решения не больше, чем оптимальное значение целевой функции ЛП-решения, выполняется всегда, поскольку требования к ОДР задачи ЦП более ограничительны, чем требования к ОДР задачи ЛП. Из-за дискретности решения F12 < H12 (бюджет используется не полностью).
Решение задачи ЛП обязательно находится в крайней точке ОДР, а целочисленное решение обычно не является крайней точкой, поэтому усложняется процесс их поиска1. Принимая во внимание все возможные значения 0 или 1 для 12 переменным, можно построить множество решений для данной задачи, включающее 212=4096 альтернатив. Отметим в заключение, что использование ограничений с «целыми» и «двоичными» числами в «Поиске решения», не всегда приводит к ожидаемым результатам, что иногда проявляется в невозможности найти требуемое решение с помощью данной надстройки.
Логические ограничения
При рассмотрении целочисленного решения модели,
z = 40, A1 = 1, A3 = 1, B3 = 1, B4 = 1, C1 = 1,
строительная фирма приходит к выводу, что полученное решение непрактично, хотя и является оптимальным по заданному критерию, максимизирующему прибыль. Руководство фирмы выдвигает новое требование, состоящее в том, что на участке можно строить только одно здание. Кроме того, он требует, чтобы обязательно использовался участок номер 2.
Используя «двоичные» переменные эти ограничения можно смоделировать следующим образом:
Участок
№1: A1
+ B1
+ C1
1
Участок
№2: A2
+ B2
+ C2
1
Участок №3: A3 + B3 + C3 1
Участок №4: A4 + B4 + C4 1
Ограничения для участков 1, 3 и 4 называются взаимоисключающими ограничениями. Действительно, если выбран один вариант проекта для участка, то все другие должны быть отклонены. Математически это достигается ограничением сверху суммы двоичных переменных, моделирующих этот выбор (сумма не превосходит 1). Но выбор какого-либо варианта при этом не обязателен (все слагаемые в левой части могут равняться 0). Ограничение для участка 2 является ограничением обязательного выбора. Должно быть выбрано ровно столько вариантов, сколько задано правой частью равенства (в нашем случае ровно один вариант проекта из трех). Эти ограничения формируют логические условия для решения задачи. На основании такого подхода можно смоделировать и другие логические ограничения. Например, требование реализовать не менее одного проекта на участке 1, то есть равенства 1 по крайней мере одной из двоичных переменных в ограничении, приводит к указанию знака ‘ ≥ ’ вместо знака ‘≤’.
Добавляем ограничения к модели Excel и еще раз решаем ее без целочисленных ограничений. Для этого в ячейке J2 записываем формулу СУММ(G2:I2), которую затем «тиражируем» в диапазоне J3:J5. (Курсор наводим на нижний правый угол ячейки (курсор принимает вид +), нажимаем левую клавишу «мыши» и, удерживая её нажатой, «растягиваем формулу» на заданный диапазон.) В диапазоне К3:К5 задаем верхние границы ограничений, соответствующих участкам, а в диапазоне L3:L5 – нижние границы этих ограничений.
В «Поиске решения» (рис. 4.9) новые логические ограничения примут вид:
J3:J5 <= К3:К5 ,
J3:J5 => L3:L5 .
Вновь решим вначале задачу ЛП, то есть исключим ограничения «двоичности».
Рис.4.9. «Поиск решения» с логическими ограничениями.
|
A |
B |
C |
D |
E |
F |
G |
H |
I |
J |
K |
L |
1 |
Варианты прибыли |
А |
В |
С |
|
Альтер-нативы |
А |
В |
С |
Сумма |
Верх. граница |
Нижн. граница |
2 |
Уч 1 |
6 |
12 |
12 |
|
Уч 1 |
1 |
0 |
1 |
1 |
1 |
0 |
3 |
Уч 2 |
7 |
15 |
16 |
|
Уч 2 |
0 |
0 |
0 |
1 |
1 |
1 |
4 |
Уч 3 |
9 |
5 |
19 |
|
Уч 3 |
0 |
0,028 |
0,972 |
1 |
1 |
0 |
5 |
Уч 4 |
11 |
8 |
20 |
|
Уч 4 |
0 |
1 |
0 |
1 |
1 |
0 |
6 |
|
|
|
|
|
|
|
|
|
|
|
|
7 |
|
|
|
|
|
|
|
|
|
|
|
|
8 |
Затраты |
А |
В |
С |
|
Доход |
|
|
|
|
|
|
9 |
Уч 1 |
13 |
39 |
30 |
|
39,6 |
|
|
|
|
|
|
10 |
Уч 2 |
20 |
45 |
44 |
|
|
|
|
|
|
|
|
11 |
Уч 3 |
24 |
12 |
48 |
|
Затраты |
|
Бюджет |
|
|
|
|
12 |
Уч 4 |
30 |
20 |
55 |
|
100 |
<= |
100 |
|
|
|
|
Рис. 4.9. Решение задачи ЛП с логическими ограничениями.
Полученное решение задачи ЛП представлено на рис.4.9.
z = 39.6, A1 = 1, A2 = 1, B3 = 0.028, B4 = 1, C3 = 0.972.
В решении проект А, реализуется на участках 1 и 2, и проект B - на участке 4. Две переменные оказываются дробными. Это можно интерпретировать так: на участке 3 реализуется «главным образом» проект C, но «частично» и проект B. Конечно, это невозможная ситуация.
Вновь восстановим требование «двоичности», добавив соответствующее ограничение в «Поиске решения», и получим ЦП-решение:
z = 38, A1 = 1, A2 = 1, B3 = 1, C4 = 1.
|
A |
B |
C |
D |
E |
F |
G |
H |
I |
J |
K |
L |
1 |
Варианты прибыли |
А |
В |
С |
|
Альтер-нативы |
А |
В |
С |
Сумма |
Верх. граница |
Нижн. граница |
2 |
Уч 1 |
6 |
12 |
12 |
|
Уч 1 |
1 |
0 |
0 |
1 |
1 |
0 |
3 |
Уч 2 |
7 |
15 |
16 |
|
Уч 2 |
1 |
0 |
0 |
1 |
1 |
1 |
4 |
Уч 3 |
9 |
5 |
19 |
|
Уч 3 |
0 |
1 |
0 |
1 |
1 |
0 |
5 |
Уч 4 |
11 |
8 |
20 |
|
Уч 4 |
0 |
0 |
1 |
1 |
1 |
0 |
6 |
|
|
|
|
|
|
|
|
|
|
|
|
7 |
|
|
|
|
|
|
|
|
|
|
|
|
8 |
Затраты |
А |
В |
С |
|
Доход |
|
|
|
|
|
|
9 |
Уч 1 |
13 |
39 |
30 |
|
38 |
|
|
|
|
|
|
10 |
Уч 2 |
20 |
45 |
44 |
|
|
|
|
|
|
|
|
11 |
Уч 3 |
24 |
12 |
48 |
|
Затраты |
|
Бюджет |
|
|
|
|
12 |
Уч 4 |
30 |
20 |
55 |
|
100 |
<= |
100 |
|
|
|
|
Рис.4.10. Решение задачи с «двоичными» переменными
|
A |
B |
C |
D |
E |
F |
G |
H |
I |
J |
K |
L |
1 |
Варианты прибыли |
А |
В |
С |
|
Альтер-нативы |
А |
В |
С |
Сумма |
Верх. Граница |
Нижн. граница |
2 |
Уч 1 |
6 |
12 |
12 |
|
Уч 1 |
0 |
0 |
1 |
1 |
1 |
0 |
3 |
Уч 2 |
7 |
15 |
16 |
|
Уч 2 |
1 |
0 |
0 |
1 |
1 |
1 |
4 |
Уч 3 |
9 |
5 |
19 |
|
Уч 3 |
0 |
0 |
1 |
1 |
1 |
0 |
5 |
Уч 4 |
11 |
8 |
20 |
|
Уч 4 |
0 |
0 |
0 |
1 |
1 |
0 |
6 |
|
|
|
|
|
|
|
|
|
|
|
|
7 |
|
|
|
|
|
|
|
|
|
|
|
|
8 |
Затраты |
А |
В |
С |
|
Доход |
|
|
|
|
|
|
9 |
Уч 1 |
13 |
39 |
30 |
|
38 |
|
|
|
|
|
|
10 |
Уч 2 |
20 |
45 |
44 |
|
|
|
|
|
|
|
|
11 |
Уч 3 |
24 |
12 |
48 |
|
Затраты |
|
Бюджет |
|
|
|
|
12 |
Уч 4 |
30 |
20 |
55 |
|
98 |
<= |
100 |
|
|
|
|
Рис. 4.11. Альтернативное решение с меньшими затратами
Альтернативное оптимальное решение, которое может быть получено при запуске «Поиска решения» с другими начальными условиями (значениями в диапазоне G2:I5 перед запуском «Поиска решения»), использует только два проекта и три участка:
z = 38, A2 = 1, C1 = 1, C3 = 1.
При том, что все альтернативные оптимальные решения имеют одинаковые значения ЦФ, обратим внимание на то, что используют они различные «Затарты» :
z = 38, A1 = 1, A2 = 1, B3 = 1, C4 = 1, Затраты=100;
z = 38, A1 = 1, A4 = 1, B3 = 1, C2 = 1, Затраты=99;
z = 38, A2 = 1, C1 = 1, C3 = 1, Затраты=98.
Казалось бы, последнее решение является наиболее выгодным в рамках заданных условий. Напрашивающееся включение «Затрат» в целевую функцию, может оказаться неприемлемым в реальной строительной ситуации, так как инвестируемые средства и получаемая прибыль, хоть и измеряются в одних и тех же денежных единицах, но имеют, вообще говоря, различную природу и ценность1. Но если дополнить «Поиск решения» еще одним ограничением, например, F12≤ 98.9, то будет получен единственный результат: z = 38, A2 = 1, C1 = 1, C3 = 1, Затраты=98. Таким образом, при наличии более одного оптимального решения возникает возможность учета дополнительных критериев, не входивших первоначально в условия задачи.
Дополнительные логические ограничения
Вновь строительная фирма признает полученное решение недопустимым.
Во-первых, руководство фирмы позволяет проекту А быть размещенным на участках 1, 2, и/или 3, только, если он также используется на участке 4. (Этому требованию не удовлетворяют полученные выше решения.)
Во-вторых, требуется, чтобы в решении использовались все три проекта. Чтобы наложить эти логические ограничения, мы должны найти линейные алгебраические ограничения, которые удовлетворялись бы, только если заданные логические условия верны, и нарушались бы, когда заданные логические условия ложны.
Первое наложенное условие, формирует ограничение следствия (импликации). Решение использовать проект на участках 1, 2 или 3 должно подразумевать, что проект A выбран для участка 4.
Алгебраическое линейное неравенство, выполнение которого эквивалентно данной импликации, имеет вид
A1 + A2 +A3 ≤ 3*A4.
Если любая из переменных A1, A2 или A3 равна 1, то для выполнения условия переменная A4 должна равняться 1. Ограничение не требует, чтобы одни из вариантов А1, А2, А3 был выбран, если выбран вариант A4 (A4=1), потому что неравенство удовлетворяется при A4=1 и А1=А2=А3=0. Коэффициент 3 при A4 позволяет не исключать выбора проекта А для других участков.
Второе условие требует, чтобы использовались все три проекта. Есть несколько способов достигнуть этого. Введем три новые двоичные переменные SA, SB, SС, каждая из которых отражает факт выбора соответствующего проекта, хотя бы на одном участке:
если SA = 1, то проект A используется, иначе – не используется;
если SB = 1, то проект B используется, иначе – не используется;
если SC = 1, то проект C используется, иначе – не используется.
Теперь мы добавляем ограничения, которые связывают решения проекта на участках с новыми переменными. Они тоже являются ограничениями следствия (импликации).
A: A1 + A2 + A3 + A4 ≤ 4*SA
B: B1 + B2 + B3 + B4 ≤ 4*SB
C: C1 + C2 + C3 + C4 ≤ 4*SC
Теперь добавляем ограничение, которое требует, чтобы все три проекта использовались (переменные были равны 1):
SA + SВ + SC = 3.
На рис. 4.12 представлена уточненная модель. Новые двоичные переменные SA , SВ , SC размещены в ячейках G9, H9, I9, соответственно. Их правые части ограничений по видам проектов – в ячейках G10, H10, I10 и заданы формулами G10=4*G9, G10=4*G9, G10=4*G9, соответственно. Сумма новых переменных – в ячейке J9. Количества реализованных проектов А, В, С вычислено в ячейках G6, H6, I6 по формулам СУММ(G2:G5), СУММ(H2:H5), СУММ(I2:I5), соответственно. Таким образом, заданы левые части огранияений по количеству проектов. Левая часть ограничения по проекту А вычислена в ячейке G7 = СУММ(G2:G4).
|
A |
B |
C |
D |
E |
F |
G |
H |
I |
J |
K |
L |
1 |
Варианты прибыли |
А |
В |
С |
|
Альтер-нативы |
А |
В |
С |
Сумма |
Верх. граница |
Нижн. граница |
2 |
Уч 1 |
6 |
12 |
12 |
|
Уч 1 |
1 |
0 |
0 |
1 |
1 |
0 |
3 |
Уч 2 |
7 |
15 |
16 |
|
Уч 2 |
0 |
0 |
1 |
1 |
1 |
1 |
4 |
Уч 3 |
9 |
5 |
19 |
|
Уч 3 |
0 |
1 |
0 |
1 |
1 |
0 |
5 |
Уч 4 |
11 |
8 |
20 |
|
Уч 4 |
1 |
0 |
0 |
1 |
1 |
0 |
6 |
|
|
|
|
|
Кол-во проектов |
2 |
1 |
1 |
|
|
|
7 |
|
|
|
|
|
А1+А2+А3 |
2 |
|
|
|
|
|
8 |
Затраты |
А |
В |
С |
|
Доход |
Sa |
Sb |
Sc |
СуммаS |
|
|
9 |
Уч 1 |
13 |
39 |
30 |
|
38 |
1 |
1 |
1 |
3 |
|
|
10 |
Уч 2 |
20 |
45 |
44 |
|
|
4 |
4 |
4 |
4S |
|
|
11 |
Уч 3 |
24 |
12 |
48 |
|
Затраты |
|
Бюджет |
|
|
|
|
12 |
Уч 4 |
30 |
20 |
55 |
|
98 |
<= |
100 |
|
|
|
|
Рис. 4.12. Дополнение элементов для новых логических ограничений
Задача ЦП с добавленными ограничениями, решается «Поиском решения» с настройками показными на рис.4.13. Отметим, что в окне «Ограничения» видны только вновь добавленные ограничения, а первые два ограничения «F12 ≤ H12» и «G2:I5=двоичное» скрыты за его пределами. Открыть их можно с помощью «движка» полосы прокрутки.
Рис. 4.13. Новые ограничения в «Поиске решения»
Результаты представлены на рис. 4.12:
z = 38, A1 = 1, A4 = 1, B3 = 1, C2 = 1.
У этого решения то же самое целевое значение как у решения, полученного без новых ограничений, таким образом, это - альтернативное оптимальное решение. Действительно, ЦП-модели часто имеют альтернативные оптимальные решения. Однако нет простого способа найти их все. Добавляя ограничения, которые лучше определяют цели ЛПР, можно найти наиболее приемлемое решение среди альтернативных оптимальных.
Отметим, что можно было смоделировать требование использования всех трех проектов с помощью ограничением SA*SB*SC = 1. Оно недопустимо, потому является нелинейным относительно переменных задачи, хотя действительно достигает цели. Если использовать такое ограничение, придется решать задачу нелинейного целочисленного программирования, что требует значительно большего объема вычислений.
Введение логических переменных SA, SB, SC носит «тренировочный» характер, для освоения работы с такими переменными. Условие использования каждого проекта может быть задано добавлением в «Поиск решения» ограничения с использованием диапазона сумм столбцов таблицы изменяемых ячеек в виде G6:I6 >= 1. Такое ограничение логически эквивалентно ограничению J9=3.
Ввиду того, что каждый практический алгоритм решения задачи ЦП использует как основу алгоритм линейного программирования, в модель желательно включать только линейные выражения. Однако это не всегда возможно, поэтому рассмотрим и нелинейную задачу.
Задачи с нелинейной целевой функцией
Рассмотрим важный случай моделирования, когда целевая функция задачи является нелинейной. Когда нелинейная функция аппроксимируется кусочно-линейной функцией, в модели необходимо использовать двоичные переменные. Таким образом, такая задача сводится к применению целочисленного программирования.
Рассмотрим производственный участок с 4 станками, на котором производятся три продукта. Станки маркированы A, B, C, D, а продукты - P, Q и R. Время в минутах, требуемое для обработки единицы каждого продукта на каждом из четырех станков показано в таблице 4.8. Каждый станок может работать 2400 минут в течение одной недели.
Табл. 4.8 Время обработки заготовки на станке
Время (мин) |
P |
Q |
R |
Станок А |
20 |
10 |
10 |
Станок В |
12 |
28 |
10 |
Станок С |
15 |
6 |
10 |
Станок D |
10 |
15 |
0 |
Удельная прибыль от продаж каждого продукта задается нелинейной функцией от проданного количества. Прибыль от продажи единицы продукции каждого вида в соответствующем диапазоне продаж показана в табл. 4.9. В каждом случае могут быть проданы не более 100 единиц.
Таблица 4.9. Удельная прибыль от продажи продуктов
Удельная прибыль (т.р. / шт.) |
P |
Q |
R |
Продажи менее 30 шт. |
60 |
40 |
20 |
Купли-продажи между 30 и 60 шт. |
45 |
60 |
70 |
Купли-продажи между 60 и 100 шт. |
35 |
65 |
20 |
Например, при продаже 40 штук продукта Р будет получена прибыль в объеме 30 шт.*60 т.р./шт. + (40 шт. -30 шт.)*45 т.р./шт. =2250 т.р.
Ввиду того, что на каждом из диапазонов количества продаж (1-30), (31-60) и (61-100) удельная прибыль не изменяется, эта величина задается кусочно-линейной функцией для каждого вида продукции. Функции для каждого из трех продуктов, показаны на рис. 4.13. Функция прибыли для P является вогнутой функцией (наклон графика функции уменьшается при возрастании количества продаж). Функция для Q - выпуклая функция (наклон графика функции увеличивается с увеличением количества продаж). Функция для R является и выпуклой и вогнутой (наклон в первом диапазоне начинается с 20, во втором - повышается до 70 и в третьем снова уменьшается до 20).
Рисунок 4.13. Графики функций прибыли от продажи продуктов P, Q, R
f1(P), f2(Q), f3(R).
Построение модели
Опишем модель задачи математического программирования с нелинейными функциями, представляющими выражение прибыли. Переменные P, Q и R соответствуют количеству единиц каждого произведенного продукта. Нелинейные функции f1(P), f2(Q), f3(R) позволяют вычислить общую прибыль от продажи продукции трех видов. Ограничения для полного времени использования станков, которое требуется для производства, задаются допустимым суммарным временем использования. Предельные ограничения на количество каждого вида продукции задаются объемом максимально спроса.
Прибыль: Max z = f1(P) + f2(Q) + f3(R)
при условиях:
Станок А: 20P+10Q+10R ≤ 2400,
Станок В: 12P+28Q+16R ≤ 2400,
Станок С: 15P+5Q+16R ≤ 2400,
Станок D: 10P+15Q+0R ≤ 2400,
Маркетинг: P ≤ 100, Q ≤ 100, R ≤ 100,
Неотрицательность: P ≥ 0, Q ≥ 0, R ≥ 0.
Чтобы линеаризовать функции модели f1(P), f2(Q), f3(R), представим введенные переменные как суммы объемов продаж по трем интервалам:
Р= Р1+Р2+Р3, Q= Q1+Q2+Q3, R= R1+R2+R3
где
Р1, Q1, R1 – объемы продаж в интервале (1-30),
Р2, Q2, R2 – объемы продаж в интервале (31-60),
Р3, Q3, R3 – объемы продаж в интервале (61-100).
При этом верхние границы для новых переменных задаются размерами интервалов продаж, в которых неизменна удельная прибыль:
Р: 0≤Р1≤30, 0≤ Р2≤30, 0≤ Р3≤40,
Q: 0≤Q1≤30, 0≤ Q2≤30, 0≤ Q3≤40,
R: 0≤R1≤30, 0≤ R2≤30, 0≤ R3≤40,
Целевая функция, выраженная через новые переменные, будет линейной:
Max z = 60*P1+45*P2+35*P3+40*Q1+60*Q2+65*Q3+20*R1+70*R2+20*R3
Итоговая модель представляет собой задачу линейного программирования:
Max z = 60*P1+45*P2+35*P3+40*Q1+60*Q2+65*Q3+20*R1+70*R2+20*R3
Р= Р1+Р2+Р3, Q= Q1+Q2+Q3, R= R1+R2+R3,
20P+10Q+10R ≤ 2400,
12P+28Q+16R ≤ 2400,
15P+5Q+16R ≤ 2400,
10P+15Q+0R ≤ 2400,
P ≤ 100, Q ≤ 100, R ≤ 100,
Р1≤30, Q1≤30, R1≤30,
Р2≤30, Q2≤30, R2≤30,
Р3≤40, Q3≤40, R3≤40,
Pi ≥ 0, Qi ≥ 0, Ri ≥ 0, i=1,2,3.
Для решения задачи построим модель в виде электронной таблицы и воспользуемся «Поиском решения».
|
A |
B |
C |
D |
E |
F |
G |
H |
1 |
Задача о трех видах продукции |
|
|
|
|
|
|
|
2 |
Время обработки ед. изделия (мин) |
P |
Q |
R |
Фонд времени |
|
|
|
3 |
Станок А |
20 |
10 |
10 |
2400 |
|
|
|
4 |
Станок В |
12 |
28 |
16 |
2400 |
|
|
|
5 |
Станок С |
15 |
6 |
16 |
2400 |
|
|
|
6 |
Станок D |
10 |
15 |
0 |
2400 |
|
|
|
7 |
|
|
|
|
|
|
|
|
8 |
Прибыль/ед |
P |
Q |
R |
Границы |
Pi |
Qi |
Ri |
9 |
От 1 до 30 |
60 |
40 |
20 |
Интервал 1 |
30 |
30 |
30 |
10 |
От 31 до 60 |
45 |
60 |
70 |
Интервал 2 |
30 |
30 |
30 |
11 |
От 61 до 100 |
35 |
65 |
20 |
Интервал 3 |
40 |
40 |
40 |
Рис. 4.14. Параметры моделируемой системы
В диапазоне B3:D6 заданы временные затраты каждого станка на производство единицы каждого вида продукции, в диапазоне B9:D11 – удельная прибыль от продажи каждого вида продукции в каждом интервале количества продаж. Наконец, в диапазоне B9:D11 заданы верхние границы количества продаж для каждого интервала.
На рис.4.15 представлена собственно модель. Искомые переменные Pi, Qi,Ri, размещены в диапазоне B14:D16, что позволяет просто вычислить промежуточные переменные P, Q,R в диапазоне B17:D17 (например, B17=СУММ(B14:B16)). Левые части ограничений по времени работы станков заданы в диапазоне B20:B23 формулами
=СУММПРОИЗВ(B3:D3;$B$17:$D$17), =СУММПРОИЗВ(B4:D4;$B$17:$D$17),
=СУММПРОИЗВ(B5:D5;$B$17:$D$17),
=СУММПРОИЗВ(B6:D6;$B$17:$D$17).
|
A |
B |
C |
D |
E |
F |
…. |
…. |
…. |
…. |
…. |
…. |
…. |
13 |
|
Pi |
Qi |
Ri |
|
Прибыль |
14 |
Интервал 1 |
30 |
0 |
0 |
|
8250 |
15 |
Интервал 2 |
30 |
0 |
30 |
|
|
16 |
Интервал 3 |
30 |
30 |
0 |
|
|
17 |
Количество продаж |
90 |
30 |
30 |
|
|
18 |
|
P |
Q |
R |
|
|
19 |
Ограничения по фонду времени |
|
|
|
|
|
20 |
Станок А |
2400 |
<= |
2400 |
|
|
21 |
Станок В |
2400 |
<= |
2400 |
|
|
22 |
Станок С |
2010 |
<= |
2400 |
|
|
23 |
Станок D |
1350 |
<= |
2400 |
|
|
24 |
|
|
|
|
|
|
25 |
Ограничения объема производства |
P |
Q |
R |
|
|
26 |
Верхняя граница |
100 |
100 |
100 |
|
|
Рис. 4.15. Модель и решение задачи ЛП
Правые части ограничений по времени заданы в диапазоне D20:D23, а верхние границы промежуточных переменных P, Q, R - в диапазоне B26:D26. ЦФ вычисляется в ячейке F14 по формуле =СУММПРОИЗВ(B9:D11;B14:D16).
Ограничения задаются в окне «Поиска решения» (рис.4.16):
Рис. 4.15. Модель и решение задачи ЛП
Первое ограничение B14:D16<=F9:H11 задает верхние границы переменных Pi, Qi, Ri, i=1,2,3. Второе ограничение B17:D17<= B26:D26 задает верхние границы переменных промежуточных переменных P, Q, R. Третье ограничение B20:В23<= D20:D23 – задает сравнение левой и правой частей ограничений на время использования станков.
Полученное решение задачи ЛП представлено на рис. 4.15.
К сожалению, решение не отражает исходную ситуацию. Обратив внимание на продукт P, видим, что произведенное общее количество 90, из которых 30 шт. проданы по 60 т.р., 30 шт. - по 45 т.р., и 30 шт. продано по 35 т.р. Модель правильна, потому что функция прибыли для P является вогнутой. Когда мы смотрим на продукт Q, мы видим, что все произведенные 30 единиц проданы по 65 т.р. Но это количество отнесено не к первому, а к третьему интервалу продаж. Это недопустимо, потому что вначале продаются количества первых двух интервалов, и лишь затем общее количество продаж переходит в третий интервал. Такое же нарушение происходит и продажами продукта R, где имеется 30 продаж во втором интервале, а в первом интервале продаж нет).
Без дополнительных условий, задающих указанное ограничение, модель ЛП оказывается неадекватной.
При поиске оптимального решения, алгоритм будет, конечно, использовать значения переменных, представляющих отдельный продукт в порядке уменьшения удельной прибыли, начиная с интервала с самой высокой удельной прибылью. Это обеспечивает правильный результат для расчета прибыли от продажи продукта P, потому что в этом случае функция прибыли f1(P) является вогнутой. Однако такой алгоритм дает неадекватные результаты для максимизации прибыли от продаж продуктов Q и R, потому что их функции прибыли f2(Q) и f3(R) не являются вогнутыми (рис. 4.13). Таким образом, можно сделать общий вывод, состоящий в том, что кусочно-линейные вогнутые функции могут быть успешно смоделированы для решения задачи ЛП, а моделирование кусочно-линейных функций, которые не являются вогнутыми, приводит к неадекватным результатам.
Уточнение модели с помощью логических переменных
Решение возникшей проблемы моделирования невогнутых функций прибыли может быть получено за счет введения в модель двоичных переменных. Новые переменные будут управлять порядком, в котором линейные части функции прибыли используются в решении. Для моделирования функции f2(Q), выражающей прибыль от продаж продукта Q, требуются две новых переменных и модификация предельных ограничений для продукта Q. Введем логические переменные yq2 и yq3, которые будут управлять верхними и нижними границами для переменных Q1, Q2, Q3.
Если переменная yq2 =1, то допускаются продажи изделий Q во втором интервале, то есть Q2, может принимать значения от 0 до 30. Если же переменная yq2 =0, то не допускаются продажи изделий Q во 2-м интервале, а следовательно, и в 3-м интервале, то есть Q2=0, Q3=0.
Если переменная yq3 =1, то допускаются продажи изделий Q в 3-м интервале, то есть Q3, может принимать значения от 0 до 40. Если же переменная yq3 =0, то не допускаются продажи изделий Q в 3-м интервале, то есть Q3=0.
С помощью введенных переменных ограничения для Q1, Q2, Q3 можно записать в следующем виде:
30yq2 ≤ Q1 ≤ 30, 30yq3 ≤ Q2≤ 30yq2, 0 ≤ Q3 ≤ 40yq3.
Из
неравенств видно, что, если yq3=0,
то только для
допускается неравенство 0. Если yq2=1
и yq3=0,
то
обязательно равно 30 и это делает
допустимым увеличение
.
Если yq2
=1 и yq3
=1, то
и
обязательно равны 30 и это позволяет
увеличить
.
Сочетание yq2
=0 и yq3
=1 является недопустимым, как отмечалось
выше, так как при отсутствии продаж во
втором интервале, не могут происходить
продажи в третьем интервале. Такое
сочетание запрещается ограничением
для вводимых переменных yq2≤
yq3.
Рассмотренные допустимые варианты представлены в табл. 4.10.
Таблица 4.10. Вид ограничений для Qi
-
yq2=0
yq2=1
yq3=0
0≤ Q1 ≤ 30
30≤ Q1 ≤ 30
0 ≤ Q2≤0
0≤ Q2≤30
0≤ Q3≤0
0≤ Q3≤0
yq3=1
30≤ Q1 ≤ 30
30≤ Q2≤30
0≤ Q3≤40
Переменными R1, R2, R3, составляющими R, управляет единственная двоичная переменная yr2.
Если переменная yr2 =1, то допускаются продажи изделий R во 2-м интервале, то есть R2, может принимать значения от 0 до 30. Если же переменная yr2 =0, то не допускаются продажи изделий R во 2-м интервале, а следовательно, и в 3-м интервале, то есть R2=0, R3=0.
С помощью введенной переменной ограничения для R1, R2, R3 принимают следующий вид:
30yr2≤ R1 ≤ 30, 0 ≤ R2≤30yr2, 0≤ R3≤40yr2.
Таблица 4.11. Вид ограничений для Ri
-
yr2=0
0≤ R1 ≤ 30
0 ≤ R2≤0
0≤ R3≤0
yr2=1
30≤ R1 ≤ 30
0 ≤ R2≤30
0≤ R3≤40
Полная модель с оптимальным решением задачи ЛП без целочисленного ограничения для переменных представлена на рис.4.16
|
A |
B |
C |
D |
E |
F |
G |
H |
I |
J |
1 |
|
Линеаризация нелинейной целевой функции |
|
|
|
|||||
2 |
Время обработки ед изделия (мин) |
P |
Q |
R |
Фонд времени |
|
|
|
|
|
3 |
Станок А |
20 |
10 |
10 |
2400 |
|
|
|
|
|
4 |
Станок В |
12 |
28 |
16 |
2400 |
|
|
|
|
|
5 |
Станок С |
15 |
6 |
16 |
2400 |
|
|
|
|
|
6 |
Станок D |
10 |
15 |
0 |
2400 |
|
|
|
|
|
7 |
|
|
|
|
|
|
|
|
|
|
8 |
Прибыль/ед |
P |
Q |
R |
|
|
|
|
|
|
9 |
От 1 до 30 |
60 |
40 |
20 |
|
|
|
|
|
|
10 |
От 31 до 60 |
45 |
60 |
70 |
|
|
|
|
|
|
11 |
От 61 до 100 |
35 |
65 |
20 |
|
|
|
|
|
|
12 |
|
|
|
|
|
|
|
|
|
|
13 |
|
|
|
|
Ограничения cнизу |
Ограничения cверху |
||||
14 |
Интервал объема производства |
Pi |
Qi |
Ri |
Pi |
Qi |
Ri |
Pi |
Qi |
Ri |
15 |
1-й |
30 |
16,36 |
30 |
0 |
0 |
30 |
30 |
30 |
30 |
16 |
2-й |
30 |
0 |
30 |
0 |
0 |
0 |
30 |
0 |
30 |
17 |
3-й |
21,82 |
-1,2E-30 |
0 |
0 |
0 |
0 |
40 |
0 |
40 |
18 |
Сумма |
81,82 |
16,36 |
60 |
|
|
|
|
|
|
19 |
|
P |
Q |
R |
|
|
|
|
|
|
20 |
|
|
|
|
|
|
|
|
|
|
21 |
Ограничения по фонду времени |
|
|
|
|
|
Логическ. Перемен. |
|
Прибыль |
|
22 |
Станок А |
2400 |
<= |
2400 |
|
|
|
|
7268,2 |
|
23 |
Станок В |
2400 |
<= |
2400 |
|
Yq2 |
0 |
|
|
|
24 |
Станок С |
2285,46 |
<= |
2400 |
|
Yq3 |
0 |
|
|
|
25 |
Станок D |
1063,64 |
<= |
2400 |
|
Yr2 |
1 |
|
|
|
26 |
|
|
|
|
|
|
|
|
|
|
27 |
Ограничения по фонду производства |
P |
Q |
R |
|
|
|
|
|
|
28 |
Верхняя граница |
100 |
100 |
100 |
|
|
|
|
|
|
Рис.4.16. Модель и решение задачи ЛП с дополнительными логическими переменными1
Рис.4.17 Настройки «Поиска решения» для задачи ЛП
Ограничения B15:D17<=H15:J17 и B15:D17>=E15:G17 задают верхние и нижние границы переменных, соответственно. Ограничение B18:D18<=100 задает верхние границы промежуточных переменных P, Q, R. Ограничение B22:В25<=D22:D25 задает ограничение фонда времени. Наконец, последние два ограничения «G23:G25 = двоичное» и G24 <= G23 задают свойства логических переменных. Обратим внимание, что в окне «Изменяемые ячейки» к диапазону базовых переменных через разделитель ‘;’ добавлен диапазон логических переменных G23:G25.
Модель с оптимальным решением задачи ЦП представлена на рис.4.18. Настройки «Поиска решения» задачи ЦП, отличаются лишь ограничением «B15:D17=целое» (рис. 4.19).
Как в задаче ЛП, так и в задаче ЦП оптимальное решение использует для продукции P все три интервала продаж, для продукции Q только первый интервал продаж, а для продукции R первые два интервала.
Оптимальное значение прибыли, полученное с помощью модели целочисленного программирования несколько меньше, чем при использовании модели ЛП. Но в данном примере, целочисленное решение действительно представляет собой округление решения задачи ЛП.
|
A |
B |
C |
D |
E |
F |
G |
H |
I |
J |
1 |
|
Линеаризация нелинейной целевой функции |
|
|
|
|||||
… |
… |
… |
… |
… |
… |
… |
… |
… |
… |
… |
13 |
|
|
|
|
Ограничения cнизу |
Ограничения cверху |
||||
14 |
Интервал объема производства |
Pi |
Qi |
Ri |
Pi |
Qi |
Ri |
Pi |
Qi |
Ri |
15 |
1-й |
30 |
16 |
30 |
0 |
0 |
30 |
30 |
30 |
30 |
16 |
2-й |
30 |
0 |
30 |
0 |
0 |
0 |
30 |
0 |
30 |
17 |
3-й |
22 |
-1,2E-30 |
0 |
0 |
0 |
0 |
40 |
0 |
40 |
18 |
Сумма |
82 |
16 |
60 |
|
|
|
|
|
|
19 |
|
P |
Q |
R |
|
|
|
|
|
|
20 |
|
|
|
|
|
|
|
|
|
|
21 |
Ограничения по фонду времени |
|
|
|
|
Логич. Перем. |
|
|
ПРИБЫЛЬ |
|
22 |
Станок А |
2400 |
<= |
2400 |
|
|
|
|
7260 |
|
23 |
Станок В |
2392 |
<= |
2400 |
|
Yq2 |
0 |
|
|
|
24 |
Станок С |
2286 |
<= |
2400 |
|
Yq3 |
0 |
|
|
|
25 |
Станок D |
1060 |
<= |
2400 |
|
Yr2 |
1 |
|
|
|
26 |
|
|
|
|
|
|
|
|
|
|
27 |
Ограничения по фонду производства |
P |
Q |
R |
|
|
|
|
|
|
28 |
Верхняя граница |
100 |
100 |
100 |
|
|
|
|
|
|
Рис.4.18 Модель и решение задачи ЦП с дополнительными логическими переменными
Действительно, округление дробных значений P3=81.82 и Q1=16,36 даст оптимальные значения целочисленных переменных P3=82 и Q1=16, соответственно.
Рис.4.19 Настройки «Поиска решения» для задачи ЦП (за пределами окна «Ограничения» осталось ограничение «G24=<G23»)