ПОИСКрешенияКАКэтоДЕЛАТЬx

advertisement
Файл «ПОИСК_РЕШЕНИЯ_как_это_делать»
ПОИСК РЕШЕНИЯ – как это делать (Савватеев В.В., мои подгруппы групп ПИ11, ПИ12, ПИ13, ФИ12)
«Практикум на ЭВМ» предусматривает во 2 модуле изучение возможностей «Оптимизатора»,
являющегося одной из НАДСТРОЕК для пакета EXCEL. Для его успешного освоения предусмотрены
выполнение в письменном виде и защита Проекта 2 «Оптимизация выкроек». (Проект 1 «Вычисление
ошибок компьютера» был изучен и сдан в 1 модуле). «Оптимизатор» (после включения его в число
надстроек) вызывается командами «Сервис», «Поиск решения».
Оптимизацией мы будем называть поиск максимума или минимума заданной функции нескольких
переменных F(x1, x2, x3, … , xN) с учётом ограничений в виде равенств или неравенств на эти переменные. Если функция является непрерывной, а все неравенства – нестрогими (то есть типа >= или <=), и
притом область М, задаваемая ограничениями, оказывается ограниченной , то такая задача оптимизации
имеет хотя бы одно решение. Точка (c1, c2, c3, … , cN), в которой находится оптимальное значение целевой
функции F, может лежать или внутри области М, или на её границе. Таких точек оптимальности может
быть несколько, но значение F во всех таких точках одно и то же. Иногда накладывается условие, что
переменные x1, x2, x3, … , xN должны быть ЦЕЛЫМИ числами. Это условие сразу же делает задачу
нелинейной и гораздо более сложной.
Если и целевая функция, и каждое из ограничений являются линейными, такая задача называется
«задачей линейного программирования» (задача ЛП). Все остальные задачи оптимизации относятся к числу
нелинейных. У задачи ЛП есть важная особенность: для неё точка оптимальности обязательно лежит НА
ГРАНИЦЕ области М. Более того, эта точка не просто находится в одной из точек границы, - её можно
найти СРЕДИ УГЛОВЫХ ТОЧЕК ГРАНИЦЫ.
Пример 1.
Пусть F (x, y) = 2013x – 12 y – 5, а область ограничена тремя ограничениями: y <= 7-x, y >= -7+x,
x >= 2, и пусть мы ищем МАКСИМУМ для F (это принято записывать так: F max). Тогда перед нами
поставлена задача ЛП на плоскости. Максимум обязательно находится в одной из угловых точек области.
Очевидно, что эта область треугольная, а вершины треугольника находятся в точках (2, 5), (2, -5) и (7, 0). В
этих точках F = 3986, 4081 и 14086. Значит, max F = 14086, и достигается он в угловой точке границы
треугольника (7, 0). <Рекомендуется нарисовать эту область>.
Пример 2. Если область взята та же, что и в примере 1, а F = (x-5)2 + y2 , то min F = 0, и достигается он
в точке (5, 0) – то есть ВНУТРИ области. А что можно сказать про max F ?
Теперь будет рассмотрен более сложный пример на нелинейную оптимизацию. Затем будет рассмотрен пример линейной оптимизации выкроек, очень похожий на тот, который вам предстоит выполнить
в Проекте 2.
Пример 3.
Согласно правилам метрополитена Москвы, в метро запрещается провоз громоздких вещей, для
которых сумма трёх измерений превышает 150 см, а длина наибольшего измерения не превышает 220 см
(чтобы в метро можно было перевозить лыжи). Это правило само себе противоречит: если лыжи такой
длины РАЗРЕШЕНО перевозить, то сумма трёх измерений для лыж будет немного больше 220 см, то есть
перевозить их НЕЛЬЗЯ. Попробуем усовершенствовать его таким образом:
В метро разрешается провозить вещи, для которых сумма трёх измерений не превышает 150
см, либо вещи, для которых наибольшее измерение не превышает 220 см (и притом сумма двух оставшихся измерений не превышает А=40 см).
Лоточник, торгующий конфетами, собирается перевозить товар в метро в картонной коробке
цилиндрической формы. Рассчитать размеры коробки (радиус R и высоту H) таким образом, чтобы, не
нарушая это усовершенствованное правило, можно было бы провезти цилиндрическую коробку наибольшего объёма.
Рассмотрим функцию двух положительных переменных F(R, H) = πR2H, выражающую объём
коробки. Это и есть целевая функция оптимизации (здесь F  max). (Если бы она оказалась линейной, мы
обозначили бы её не F, а L). Ограничения: во-первых, R >= 0, H >= 0. Далее надо пояснить, почему мы
рассматриваем не три, а только ДВА измерения цилиндрической коробки: потому, что два измерения
РАВНЫ друг другу и составляют 2R сантиметров каждое. Сначала рассмотрим отдельно задачу с
ограничением H + (2R) + (2R) <= 150 (первая часть правила провоза). А затем – задачу с ограничениями { H
<= 220 и (2R)+(2R) <= 40} (вторая часть правила провоза). В каждом случае найдём max F, и выберем из
них тот, который больше.
Файл «ПОИСК_РЕШЕНИЯ_как_это_делать»
Начнём со второго случая, так как он РЕШАЕТСЯ В УМЕ. Очевидно, выгоднее всего взять в этом
случае цилиндр, для которого H=220 и R=10. Для него F = 69115,2 см3.
В первом случае выгоднее всего взять H + 4R = 150. Тогда F = πR2(150-4R). Производная от F по
R равна 12πR2H(25-R). Она обращается в нуль при R=25 см. Легко видеть, что такое R даёт нам единственный максимум для F, равный π 252 *50 = 98175 см3. Итак, в первом случае объём получается больше, чем во
втором. Задача решена без участия оптимизатора. (Обратите внимание, что все три измерения в первом
случае оказались равны. При этом сумма двух измерений БОЛЬШЕ, чем 40см. То есть вторая часть правила
не позволила бы провезти цилиндр таких размеров. Поэтому спасает дело только первая часть правила).
А теперь решим эту же задачу с помощью оптимизатора (он позволяет решить простые задачи
нелинейной оптимизации). При решении просьба соблюдать такие простые правила: в левом верхнем углу
EXCEL-таблицы в ячейках А1 и В1 разместить буквы R и H (названия независимых переменных). Под
ними выделить ячейки А2 и В2, закрасить их светлозелёным цветом и разграфить (в них будут находиться
исходные «допустимые» значения R и H , которые компьютер будет постепенно изменять, приближаясь к
оптимальной точке). Чем большая точность установлена в оптимизаторе, тем точнее будет найдена искомая
точка, но тем дольше будут вычисления оптимизатора. «Допустимыми» называются значения, отвечающие
всем ограничениям задачи оптимизации. Не следует брать допустимые значения НА ГРАНИЦЕ области, так
как из-за мелких ошибок компьютера допустимая теоретически точка компьютером может восприниматься
как НЕДОПУСТИМАЯ, и оптимизация пойдёт неправильно (или вообще не пойдёт).
В ячейке С1 разместите букву F, а в ячейке С2 занесите формулу для вычисления целевой функции.
Ячейку закрасьте светлокрасным цветом. Ограничения в виде равенств или нестрогих неравенств и числа,
стоящие в правой части этих ограничений, заносите в ячейки А4 (и в В5 число к этому ограничению), А6 (и
число к этому ограничению – в В6), и так далее. Выделите все такие ячейки, разграфите и закрасьте
светлосиним цветом.
После этого щёлкните мышью на заголовках «Сервис», «Поиск решения». Откроется окно
оптимизатора. Прежде всего укажите в нём ячейку, где расположена целевая функция (укажите на неё
мышью). Затем укажите мышью ячейки, которые разрешается изменять компьютеру в процессе оптимизации. Уточните, что искать: минимум или максимум. Затем внимательно и без ошибок занесите все
ограничения, начиная с очевидных (а именно: R >= 0, H >= 0). Очевидные ограничения заносим СРАЗУ для
всех переменных, выделяя мышью область их расположения. После каждого нажатия на кнопку ДОБАВИТЬ добавляется новое ограничение. «Неочевидные» ограничения заносятся по одному, предварительно
каждый раз щёлкая на кнопке ДОБАВИТЬ. Сначала указываем мышью на ячейку А4, затем выбираем один
из знаков ( = или >= или <= ), затем указываем на ячейку справа от А4, и так далее. Когда все ограничения
занесены, щёлкнуть на кнопке ОК (о’кей) и внимательно проверить, все ли ограничения занесены
правильно.
Оптимизация выполняется простым нажатием кнопки «Выполнить» (иногда вместо неё бывает
другое, но аналогичное по смыслу наименование). После этого практически сразу можно увидеть ответ
(или сообщение, почему не удалось получить ответ). В ячейках зелёного цвета видны координаты
оптимальной точки, в красной ячейке – оптимальное значение целевой функции. В ячейках же синего цвета
можно увидеть информацию о том, какие ограничения оказались существенными, а какие особенного
значения не имели.
РЕАЛИЗАЦИЯ в EXCEL:
R
H
5
6
26
5
6
150
0
0
F
471,24
Выше показан левый верхний угол листа EXCEL. Синим закрашены три ограничения задачи о
максимальном объёме коробки (случай 1): H + 4R <= 150, R >= 0, H >= 0. Исходные значения переменных
выбраны равными 5 и 6 (очевидно, что такие данные не противоречат ни одному из трёх вышеуказанных
условий). После нажатия кнопки ВЫПОЛНИТЬ в окне оптимизатора получается:
Файл «ПОИСК_РЕШЕНИЯ_как_это_делать»
R
H
25
50
150
25
50
150
0
0
F
98175
Точка оптимальности: R=25, H=50 (как и было вычислено аналитически). Максимальный объём
коробки равен 98175 см3 (если взять π=3,1416). Из синей таблички видно, что первое ограничение
выполняется точно (то есть оно существенно), а остальные два выполняются с большим запасом.
Пример 4.
К Олимпиаде «Сочи-2014» требуется изготовить из пластика 100000 шт. сувениров в виде
постамента «Три призовых места», внешний вид которого приведен на рис.1
20
18
16
14
12
10
8
6
4
2
0
0
5
10
15
20
Рис. 1. Сувенир «1-е, 2-е и 3-е место» (составлен из 6 кубиков с ребром 5 см).
Примечание. Для изготовления этого рисунка в EXCEL была подготовлена следующая таблица
координат опорных точек рисунка:
ПОСТАМЕНТ:
0
0
5
5
10
10
15
15
0
0
5
5
15
15
10
10
0
0
5
9
14
14
19
15
18
18
13
13
Файл «ПОИСК_РЕШЕНИЯ_как_это_делать»
19
15
3
0
0
4
5
5
8
8
10
14
15
18
10
14
10
13
15
19
10
13
Рисунок составлен из нескольких непрерывных кусочно-линейных кусков, координаты которых
разделёны друг от друга пустыми ячейками.
На складе фирмы-изготовителя имеется запас прямоугольных листов пластика размера 100х303 см.
Из них будет вырезано необходимое количество деталей трёх различных видов. Деталь 1: прямоугольник
5х10 см. Деталь 2: прямоугольник 5х15 см. Деталь 3: передняя стенка постамента. Для изготовления одного
сувенира-постамента путём изгибания исходных деталей под прямым углом и их сварки по краям потребуется: деталей 1 - три штуки, деталей 2 - две штуки, деталей 3 - две штуки. (Убедитесь, что из такого
набора действительно можно сварить постамент без дыр и без накладок деталей друг на друга!)
Следовательно, деталей 1 потребуется не менее 300000, деталей 2 – не менее 200000, деталей 3 – не
менее 200000. Фирма-изготовитель будет использовать два способа раскройки листов 100х303 см на
исходные детали. (Вопрос о том, удачно ли придуманы эти способы, в данной задаче НЕ ОБСУЖДАЕТСЯ).
Эти способы представлены на рис. 2 и рис. 3.
Примечание. Для изготовления этих рисунков в EXCEL была подготовлена следующая таблица
координат опорных точек рисунка:
Первый способ выкройки
0
0
303
0
303
100
0
100
0
0
30
0
30
15
0
15
0
5
5
5
5
15
10
15
10
10
15
10
15
0
15
10
20
10
20
15
25
15
Второй способ выкройки
0
0
0
303
100
303
100
0
0
0
0
30
15
30
15
0
5
0
5
5
15
5
15
10
10
10
10
15
0
15
10
15
10
20
15
20
15
25
Файл «ПОИСК_РЕШЕНИЯ_как_это_делать»
25
30
5
5
5
5
25
30
0
10
10
10
20
20
20
30
30
95
95
100
95
95
100
95
95
100
0
10
10
10
20
20
20
30
30
298
298
303
298
298
303
298
298
303
0
15
15
15
30
30
30
60
60
30
90
90
95
90
90
95
90
90
95
95
0
15
15
15
30
30
30
60
60
30
293
293
298
293
293
298
293
293
298
298
45
45
90
95
45
45
293
298
120
100
80
60
40
20
0
0
50
100
150
200
250
300
Рис. 2. Схема первого способа выкройки деталей.
Первый способ разрезки листа
Лист расположен горизонтально. Первый ряд заполняется (насколько возможно) деталями 1,
расположенными тоже горизонтально. Аналогичным образом второй ряд заполнен деталями 2. Вся
остальная часть листа заполняется прямоугольными блоками из трёх деталей 1 и двух деталей 3 (см. рис. 2,
левый нижний угол). Эти блоки укладываются слева направо насколько возможно, и полученная полоса
блоков укладывается снизу вверх, пока это возможно. Все оставшиеся куски листа считаются обрезками.
350
Файл «ПОИСК_РЕШЕНИЯ_как_это_делать»
350
300
250
200
150
100
50
0
0
50
100
150
Рис. 3. Схема второго способа выкройки деталей.
Второй способ разрезки листа
Он похож на первый способ. Однако лист 100х303 располагается вертикально, и блок – тоже.
Верхние две полосы заполняются, как и раньше, деталями 1 и деталями 2, пока возможно. Блоки
укладываются вправо, пока возможно. Полоса блоков укладывается снизу вверх РОВНО ТРИ РАЗА. Затем
вторая полоса укладывается сверху вниз, пока возможно. Все оставшиеся части листа считаются обрезками.
Первый способ «беден» деталями 2-го типа. Второй способ, наоборот, «богат» этими деталями.
Обозначим через n и N количество листов 100х303, которые надо разрезать 1-м и 2-м способом соответственно, чтобы возможно было выполнить полностью заказ на изготовление ровно 100000 сувениров.
(При этом не предполагается, что это сделано ОПТИМАЛЬНО, но предполагается, что все ограничения
будут выполнены). В качестве целевой функции L в этом примере будет взята суммарная площадь
обрезков, которые остаются после вырезания из них всех необходимых деталей: L = S1*n + S2*N (где S1 и S2
– общая площадь обрезков при разрезании первым и вторым способом. Целевая функция линейна … но в
линейности всей этой задачи оптимизации можно усомниться. В самом деле, допустим, что после разрезания листов на детали не все детали будут использованы. Следует ли такие детали тоже считать «отходами»?
Тогда целевая функция сразу перестанет быть линейной. Кроме того, какие же это «отходы», если из них
можно сделать что-то полезное? В зависимости от тех или иных экономических соображений можно
Файл «ПОИСК_РЕШЕНИЯ_как_это_делать»
уточнить математическую постановку задачи. УТОЧНЯЕМ: площади не использованных деталей в S1 и S2
включать не надо. Попытаемся сделать оптимизацию производственного процесса в рамках задачи ЛП. Но
полученная задача ЛП, к сожалению, даже после уточнения постановки задачи даёт неприемлемый ответ:
числа n и N оказываются дробными. А если потребовать, что должен быть получен ЦЕЛЫЙ ответ, задача
сразу станет нелинейной. К счастью, имеются алгоритмы, которые опираются на многократное использование задачи ЛП и приводят к целочисленным n и N. Так что данную задачу можно было бы назвать «квазилинейной». Чтобы уточнить ограничения этой задачи, введём в рассмотрение целые числа: a, b, c и A, B, C.
Они обозначают, сколько деталей 1, 2 и 3 получается после первого способа разрезания листа (это - a, b, c )
и, соответственно, после второго (A, B, C). Внимательный анализ рис. 2 и 3 показывает, что
a= 30+180 = 210, b= 20, c= 120;
A= 10+54 = 64, B= 41*6 = 246, C= 36.
Площади деталей 1, 2, 3 равны 50 см2, 75 см2, 150 см2 соответственно. Поэтому
S1 = 30300 – a*50 – b*75 – c*150 = 300 см2, S2 = 30300 – A*50 – B*75 – C*150 = 3250 см2.
Таким образом, L = 300 n + 3250 N  min.
Общее количество деталей 1 при разрезании n листов 1-м способом и N листов – вторым равно
210 n + 64 N >= 300000 (так как каждый постамент требует 3 детали первого типа). Общее количество деталей 2 равно 20 n + 246 N >=200000. Общее количество деталей 3 равно 120 n + 36 N >= 200000.
Таким образом, в число линейных ограничений входят пять: три только что указанных неравенства
плюс два обычных неравенства n >= 0 и N >= 0. И плюс ещё два «квазилинейных» ограничения: n= ЦЕЛОЕ
и N= ЦЕЛОЕ.
ВНИМАНИЕ! Иногда студенты по ошибке указанные три неравенства пишут как РАВЕНСТВА,
надеясь получить таким образом «дополнительную экономию» пластика. А в итоге получают сообщение об
отсутствии решения. В самом деле: допустим, речь идёт о таком равенстве: 120 n + 36 N = 200007. Ясно, что
НЕЛЬЗЯ подобрать целые числа n,N , ему отвечающие: слева число чётное, а справа – нечётное. Поэтому
надо писать нестрогое неравенство, а если на самом деле это может быть равенством, то компьютер
обязательно это обнаружит в процессе оптимизации. Если же не может … то придётся изготовить несколько
заведомо лишних деталей.
Это же замечание применимо и к проблеме выбора исходных значений n,N. Рекомендуется просто
взять n=N=300000. А не многовато ли будет? Никоим образом. Компьютер быстро уменьшит эти значения
до вполне разумных. Зато все неравенства заведомо будут выполняться, а n,N будут целыми числами.
Ниже приведено состояние левого верхнего угла листа EXCEL перед началом оптимизации.
n
300000
N
L
300000 1065000000
82200000 300000
79800000 200000
46800000 200000
300000 ЦЕЛОЕ
300000 ЦЕЛОЕ
Состояние
после
минимизации
таково:
n
1464
N
694
351856
200004
200664
1464
300000
200000
200000
ЦЕЛОЕ
694
ЦЕЛОЕ
L
2694700
Файл «ПОИСК_РЕШЕНИЯ_как_это_делать»
Таким образом, для изготовления 100000 сувениров необходимо 1464 листа раскроить первым
способом и 694 листа – вторым. Минимальная площадь обрезков составит тогда 2 694 700 кв.см. Ни в одном
из неравенств не удалось добиться равенства, но значение 200004 очень близко к минимально возможному
(200000). Было изготовлено очень много лишних деталей 1 (а именно, 51586 штук). Это недвусмысленно
указывает на то, что первый способ раскроя весьма непродуман. Из «лишних» деталей можно склеить ещё
два сувенира (и продать их «налево»!), но попытка уменьшить 1464 до 1463 приводит к недовыполнению
заказа.
Отменим теперь условия целочисленности:
n
N
L
1458,333 694,4444 2694444,444
350694,4
200000
200000
300000
200000
200000
Целевая функция уменьшилась, уменьшился и расход листов. Но … технологические условия НЕ
ПОЗВОЛЯЮТ нам использовать лист частично. Попробуем добиться целочисленности «простым школьным
способом»: округлим n, N до значений 1459 и 695. Тогда значение целевой функции будет 2696450. Это,
однако, отнюдь не минимум, так как целевая функция может быть 2694700 (см. выше). Кроме того, выясняется, что после «школьного округления» будут изготовлены (и проданы «налево»!) десятки лишних сувениров. Вряд ли заказчик на это согласится. Так что оптимизировать надо не «по-школьному», а по науке. И
наука эта (о целочисленных решениях) совсем не простая!
Многочисленные избыточно изготовленные детали 1 изготовитель должен сдать заказчику для их
возможной утилизации.
А ТЕПЕРЬ МОЖНО ПРИНИМАТЬСЯ ЗА ПРОЕКТ 2 !
В работе вас должен постоянно сопровождать дух критицизма и отрицания: а верно ли я сделал?
Один из таких духов в троекратном размере изображён ниже.
Download