Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции по моделированию.doc
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
1.77 Mб
Скачать

И приравняем полученное выражение к «0»

(11.11)

Решив это уравнение относительно , получаем оптимальную величину

для первого шага: =0,5.

Воспользуемся еще раз выражениями ( 10.17) и (10.18) и определим координаты точки

Как видим, это координаты точки максимума функции ( ). Таким образом, в отличие от градиентного, метод наискорейшего подъема позволил (для рассматриваемого примера) определить оптимальное решение за один шаг.

Градиентные методы нелинейного программирования

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

Лекция 12

Метод глобального перебора (перебора на сетке).

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

Рис.1.12

Предположим, что экстремум отыскивают одним из градиентных методов. Если движение начнется из точки , то будет найден максимум в точке А. Если же исходной точкой будет точка , то поиск закончится в точке В. Стрелки, выхо­дящие из точек и 02, указывают направления градиента функции в этих точках. Это указывает на возможность модер­низации рассмотренных методов поиска с тем, чтобы приспосо­бить их для отыскания глобального экстремума многоэкстре­мальных функций. Для этого можно рекомендовать повторение процедуры поиска несколько раз из различных исходных точек. Полученные значения локальных экстремумов сравниваются между собой, и из них выбирается наибольшее (при поиске глобального максимума). Для выбора положений исходных точек может использоваться как случайная, так и детермини­рованная процедура.

Существует другой метод, позволяющий отыскать глобаль­ный экстремум целевой функции с заданной точностью — ме­тод глобального перебора, или сканирования. Пред­положим, что для каждого из аргументов целевой функции у = задан диапазон его изменения: В пространстве переменных системе этих неравенств соответствует многомерный парал­лелепипед, являющийся областью допустимых значений аргу­ментов целевой функции. Для случая функции двух переменных

у = имеем прямоугольник (рис. 2.12).

Рис.2.12

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

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

Практически он применим только при числе пере­менных целевой функции не больше 3—4 из-за того, что его трудоемкость быстро возрастает с ростом размерности задачи. В самом деле, пусть заданная точность решения задачи будет достигнута, если на каждом отрезке [ ] взять 10 рав­ноотстоящих точек. Тогда для отыскания экстремума функции двух переменных надо вычислить ее значения в 100 точках, яв­ляющихся узлами полученной сетки. Для функции трех переменных потребуется уже 10 =1000 ее вычислений и т. д. Если переменных 5, то целевую функцию нужно рассчитывать уже 205 раз.

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

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

Как правило, метод глобального перебора реализуется с использованием компъютера.

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

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

и на котором происходит поиск максимума, а так же значение шага с которым будет происходить перебор точек внутри отрезка

.

Зарезервируем в памяти ЭВМ ячейку, в которой будем хранить одно единственное, наибольшее по всем предыдущем шагам значение целевой функции. Обозначим соответствующую переменную через М. В начале работы программы в эту ячейку запишем «0» (блок 2). То есть присвоим М значение равное «0»: М=0 (= символ присваивания).

Рис.3.12

Вычисление значений ограничения и целевой функции начинаем с левого конца отрезка на котором осуществляется поиск максимума. Для этого присваиваем (блок3) переменной Х значение равное :Х= .

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

Допустим, что условие

выполняется , то есть мы находимся в пределах области допустимых решений. В этом случае вычислительный процесс происходит по стрелке «Да» и мы переходим к выполнению блока 6.

Если условие ( ) не выполняется, целевая функция не вычисляется и сразу переходим к блоку 10 .

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

будет выполняться только в том случае, если значение целевой функции в

данной точке Х будет больше, чем во всех предыдущих. В этом случае (блок 9) переменной М присваивается новое значение М=W, и она снова становится равной наибольшему среди всех рассмотренных значений целевой функции. В блоке 9 переменной присваивается текущее значение переменной X: . Таким образом переменная показывает, какому значении Х соответствует текущее максимальное значение целевой функции.

В следующем ( 10 блоке) происходит переход к новой точке вычисления (переменной присваивается новое значение, которое на величину шага большн предыдущего и производится проверка (блок11) условия , которое обеспечивает поиск максимума только в пределах заданного диапазона изменения переменной Х. Если условие выполняется, возвращаются к блоку 4, рассчитывают значение ограничения и происходит циклический повтор выполнения блоков каждый раз для нового значения Х. Так продолжается до тех пор, пока значение Х не станет больше верхней границы ( 200 ), после чего вычисления заканчиваются.

Рассмотрим алгоритм глобального перебора для решения задач нелинейного программирования с 2-мя переменными. Пусть требуется решить следующую задачу:

Схема алгоритма, основанного на идее пе­ребора значений переменных , приведена на рис. 4.12.

Предварительно выбраны величины шагов по и , обеспечивающие удовлетвори­тельную точность решения задачи. Обозначим их и пусть ; . Вначале (блок 1) переменные и полагают равными их исходным значениям: Переменная М в имеет тот же смысл и выполняет те же функции, что и в алгоритме поиска экстремума функции одной переменной (см. рис. 3.12) Поэтому вначале ее следует положить равной любому числу, заведомо меньшему максималь­ного значения целевой функции. Поскольку в данной задаче целевая функция неотрица­тельна, можно положить М=0, что и сделано в блоке 1. Далее проверяется, удовлетворяет ли исходная точка { Х=; Х= ограничению решаемой задачи: С этой целью в блоке 2 вычисляется значение функции из этого ограничения, а полученное число­вое значение присваивается переменной z. В блоке проверки условия 3, имеющем на схеме вид ромба, проверяется выполнение записанного внутри него соотношения (в данном случае неравенства z<9). Если это неравенство оказа­лось справедливым, т. е. рассматриваемая точка удовлетворяет данному ограничению, то осу­ществляется переход по стрелке «Да» к блоку 4, где вычисляется значение целевой функции в той же точке { }. Оно присваи­вается переменной у. Невыполнение условия в блоке 3 означает, что эта точка не

Рис.4.13

при­надлежит области допустимых значений. По­этому не имеет смысла вычислять в ней значе­ние целевой функции, а следует сразу же пе­рейти к следующей точке. Это и реализовано переходом к блоку 8. Соответствующее ему дей­ствие означает, что к зафиксиро­ванному ранее значению переменной добав­ляется число 0,1. Значит, при первом обраще­нии к блоку 8 примет значение и таким образом будет исследоваться точка { }. Обратимся к операциям в блоке 5, выполняемым вслед за операциями в блоке 4. Здесь анализируется выполнение неравенства у>М, т. е. проверяется, будет ли только что найденное значение целевой функции больше М. При первом обращении к этому блоку М= = 0 (блок 1), поэтому неравенство у>М в этом случае наверняка будет выполнено и, следовательно, произойдет переход к блоку 6. Выполняемое здесь присваивание М:=у означает, что переменная М примет теперь значение, равное значению целевой функции в анализируемой точке. Согласно блоку 7, значения аргу­ментов X и Х присваиваются новым переменным и , которые тем самым будут хранить значения переменных и х ,соответствующие значению целевой функции, равному М. Далее выполняется переход к следующей точке с большим значением (блок 8) и проверяется, не превысит ли это значе­ние максимальной для него величины =4 (блок 9). Если оказалось, что < 4, то осуществляется возврат к блоку 2, т. е. все описанные выше про­цедуры, начиная с проверки выполнения ограничения <9, выполня­ются для новой точки { }. Отметим, что при втором и последующих об­ращениях к блоку 5 уже возможны разные случаи. До тех пор, пока значе­ние целевой функции в очередной точке больше чем в предыдущей, нера­венство у>М будет выполняться и согласно блоку 6 переменная М будет каждый раз принимать значение, равное очередному возрастающему значе­нию целевой функции У( . Если же в некоторой точке ее величина ока­жется меньше, чем в предыдущей точке (или равна ей), то вследствие невы­полнения неравенства у>М присваивание М:=у не будет сделано (блоки 6 и 7 обходятся). Благодаря этому переменная М сохраняет значение, равное максимальному значению целевой функции по всем предыдущим точкам, при­надлежащим области допустимых решений, а переменные а и равны зна­чениям аргументов х и в точке максимума.

Вернемся к блоку 9 и рассмотрим случай, когда записанное в нем усло­вие не выполняется. Это означает, что для данного значения Х=25 перебор по х следует завершить и возобновить его вновь, начиная с =2, уже для следующего значения . Поэтому в блоке 10 реализовано присваивание 1: = 2, а согласно блоку 11 значение х увеличивается на величину ее шага. После этого осуществляется возврат к блоку 2, т. е. анализируется очеред­ная точка. Невыполнение неравенства < в блоке 12 свидетельствует о необходимости завершить перебор. В этом случае согласно блоку 13 выво­дится найденное оптимальное решение: значение М, равное макси­мальному значению целевой функции по всем точкам из области допустимых решений, и значения переменных а и , равные аргументам и в точке оптимума. Этим завершается работа алгоритма. Реализация его на ЭВМ по­зволила получить следующие результаты: а= ; М .

Лекция 13

Общие сведения о задачах календарного планирования

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

Задачи календарного планирования изучаются теорией рас­писаний. Здесь термин «расписание» соответствует понятию ка­лендарного плана, т. е. последовательности проведения неко­торых операций. Эти задачи оказались весьма сложными с ма­тематической точки зрения, поэтому точные решения получены лишь для самых простых случаев. Формально задачи календар­ного планирования можно свести к, задачам целочисленного программирования, но сам по себе этот прием не слишком об­легчает их решение.

Задача об определении оптимальной последовательности запуска деталей в обработку

Задача определения оптимальной последовательности запуска деталей в обработку представляет один из примеров задач календарного планирования.

Рассмотрим вначале простейший случай- задачу об определении оптимальной последовательности запуска деталей в обработку на одном станке.

Пусть имеется один станок, на котором должны после­довательно пройти обработку n деталей. Известна длительность i= обработки каждой I -ой детали. Требуется определить, какова должна быть оптимальная последовательность запуска этих деталей в обработку? Здесь и далее мы будем счи­тать, что затрат на переналадку оборудования нет.

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

Т=

и общее время обработки всех n деталей будет одним и тем же при любой последовательности их запуска. Однако при этом окажется различным среднее время ожидания обработки для одной детали. Эту величину и разумно принять в качестве кри­терия оптимальности задачи. Решение здесь очевидно: детали должны запускаться в обработку по мере увеличения времени обработки. Т. е. запуск деталей должен производиться начиная с той детали, для кото­рой длительность обработки минимальна, и далее в порядке возраста­ния этой величины. Аналогичным образом поступает админи­стратор, приема у которого ожидают посетители. Желая умень­шить среднее время пребывания их в очереди, он пропускает сначала тех посетителей, чьи вопросы можно решить за мини­мальное время.

Более сложен алгоритм определения оптимальной последовательности запуска деталей в обработку для случаю 2-х станков. Эта задача называется задачей о двух станках, или задачей Джонсона .

Рассмотрим постановку задачи о двух станках. Име­ется n деталей, каждая из которых должна последовательно пройти обработку сначала на первом, затем на втором станке. Второй станок не может приступить к обработке детали, пока ее обработка не закончится на первом станке. Известно время обработки каждой -й детали на j-м станке, i=1, 2; n=1, 2. Требуется найти порядок за­пуска деталей, при котором общая длительность их обработки на обоих станках минимальна. В этой задаче общее время

обработки деталей уже зависит от порядка их запуска.

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

Пример. Определить оптимальный порядок запуска в обработку пяти деталей (n=5). Время обработки каждой детали на 1-м и 2-м станках показано в соответствующих строках табл. 13.1.

Таблица 13.1

№ детали

1

2

3

4

5

Первый станок

3

2

7

1

7

Второй станок

6

1

4

2

3

В соответствии с алгоритмом Джонсона, делим детали на две группы. В первую группу входят детали № 1 и 4, а во вторую — № 2, 3, 5. Далее запускаем в обработку детали первой группы в порядке возрастания времени их обработки на первом станке. Т. е., сначала запускается деталь N 4, а затем деталь N 1. Затем переходим к деталям второй группы и запускаем их в порядке убывания времени обработки на втором станке. Т.е. запускаем сначала деталь N3, затем N5 и N5. Таким образом оптимальный порядок обработки дета­лей следующий: 4, 1,3, 5, 2.

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

Удобной формой представления календарных планов, которая позволяет определить величину простоев и общее время обработки деталей является график Ганта, изображенный на рис. 13.2 для найденной оптимальной последова­тельности запуска деталей.

Рис.13.2.

Здесь каждому станку соответствует своя ось времени , на которой отрезками прямых отмечают промежутки, в течение которых данный станок занят обработкой той или иной детали. Как видно из графика, второй станок будет простаивать по 1 мин перед обработкой четвертой, первой и третьей деталей, а также 3 мин перед обработкой пятой детали. Обработка всех деталей займет 22 мин.

Чтобы оценить эффективность алгоритма Джонсона можно построить графики Ганта для тех же условий что и в рассмотренной задаче, но для естественной последовательности запуска деталей. Под естественной последовательностью запуска деталей в обработку понимают запуск деталей в соответствии с их номером. То есть, первой в обработку запускается деталь N1, затем N2 и т.д. в порядке возрастания номеров деталей. Графики Ганта для этого случая показаны на рис.13.3.

Как видим из рис 13.3 суммарное время обработки деталей при естественном порядке их запуска в обработку равно мин. То есть применение алгоритма Джонсона позволяет сократить время обработки деталей на минут.

Перейдем к задаче определения оптимальной последовательности запуска деталей в обработку для произвольного количества m станков, на которых должны последовательно пройти обра­ботку n деталей. Универсальный алгоритм решения этой задачи до сих пор не найден. Для кон­кретных значений n и m можно получить ее реше­ние перебором различных вариантов запуска. Однако уже при относительно небольших величинах n и m объем вычислений оказывается настолько велик, что подобный перебор недоступен даже для современных ЭВМ.

Вместе с тем, в результате анали­за алгоритма Джонсона для задачи о двух станках, были сформулированы 4 правила, применение которых к общему случаю последовательной обработки n деталей на m станках позволяет получить достаточно хорошие результаты..

Правило1. Детали следует запускать в порядке возрастания времени их обработки на 1-м станке.

Правило 2. Детали следует запускать в порядке уменьшения времени их обработки на последнем станке.

Правило 3. Обрабатывать раньше те детали, для которых « узкое место»

Расположено дальше от 1-го станка. Узким местом, для какой либо детали, называют станок на котором обработка этой детали занимает наибольшее время.

Правило 4. Детали запускаются в порядке убывания суммарного времени обработки на всех станках.

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

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

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

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

Рассмотрим пример. На мебельно-деревообрабатывающем комбинате изготавливали футляры для настенных и настольных часов. Имеется семь деталей футля­ров, каждая из которых должна последовательно пройти обработку на четырех станках: 1) рейсмусовом; 2) фуговальном; 3) торцовочном; 4) фре­зерном. Наименования деталей: 1 — вертикальный брусок дверки; 2 и 3— нижний и средний бруски дверки; 4 — верхний брусок; 5 — нижняя доска; 6 — штанга; 7 — планка. В табл. 13.2 приведена длительность обработки каждой детали на каждом из станков, мин.

В соответствии с рассмотренными выше правилами можно рекомендо­вать следующие варианты запуска деталей в обработку (табл. 13.3).

Таблица 13.3

№ станка

Длительность обработки детали №

2

1

2

3

4

5

6

7

1

а

4

5

6

3

2

1

30

2

5

2

8

(?Г)

©

1

1

33

3

7

©'

9

8

1

2

3

37

4

6

3

4

5

2

®

V

27

2

27

15

27

31

10

8

9

В соответствии с рассмотренными выше правилами были получены следующие варианты запуска деталей в обработку (табл. 13.4).

Таблица 7.3

Правило №

Последовательность запуска деталей

ЛГ

7, 6, 5, 2, 3, 4, 1

Г

( ,

1, 4, 7, 3, 6, 2, 5

3

7, 6, 2, 3, 5, 4, 1

4

4, 1,3, 2, 5, 7, 6

Для каждой из последовательностей был построен график Ганта и оп­ределена общая длительность обработки всех деталей. Оказалось, что луч­ший результат в данном случае дает применение первого правила. Общая длительность обработки при соответствующей последовательности запуска равно 7 = 56 мин. Второе место по эффективности заняло правило 3: Т= = 57 мин.

Лекция 14