Типовые процедуры решения задач дискретной оптимизации

Автор: Пользователь скрыл имя, 08 Декабря 2012 в 15:47, курсовая работа

Краткое описание


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

Оглавление


Введение …………………………………………………………………………………3
1. Метод динамического программирования в решении задач дискретной оптимизации……………………………………………………………………………..5
2. Метод ветвей и границ в решении задач дискретной оптимизации…………………8
3. Решение задачи о ранце методом динамического программирования……………..10
4. Решение задачи о ранце методом ветвей и границ…………………………………...14
Заключение……………………………………………………………………………...18
Список используемой литературы…………………………………………………….

Файлы: 1 файл

КУРСОВАЯ!!!!+КОГАН.docx

— 133.72 Кб (Скачать)

МИНИСТЕРСТВО ОБРАЗОВАНИЯ  РОССИЙСКОЙ ФЕДЕРАЦИИ

МОСКОВСКИЙ ГОСУДАРСТВЕННЫЙ  УНИВЕРСИТЕТ ПРИБОРОСТРОЕНИЯ И  ИНФОРМАТИКИ

 

 

 

 

 

 

Курсовая работа

По специальности «Методы  оптимизации»

На тему:

«Типовые процедуры решения  задач дискретной оптимизации»

 

 

 

 

 

Выполнила студентка:

5 курса, группы ИТ-2, Пахомова  Н.В.

 

Преподаватель: Коган Д.И.

 

 

 

 

 

 

МОСКВА 2012 

Содержание

 

Введение …………………………………………………………………………………3

  1. Метод динамического программирования в решении задач дискретной оптимизации……………………………………………………………………………..5
  2. Метод ветвей и границ в решении задач дискретной оптимизации…………………8
  3. Решение задачи о ранце методом динамического программирования……………..10
  4. Решение задачи о ранце методом ветвей и границ…………………………………...14

Заключение……………………………………………………………………………...18

Список используемой литературы…………………………………………………….19 

Введение

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

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

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

Однако возьмем другой пример. Допустим, организуется работа городского транспорта. В нашем распоряжении имеется какое-то количество транспортных средств. Необходимо принять ряд решений, например: какое количество и каких транспортных средств направить по тому или другому маршруту? Как изменять частоту следования машин в зависимости от времени суток? Где поместить остановки? И так далее.

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

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

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

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

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

 

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

Задача динамического  программирования

 

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

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

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

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

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

Пусть предполагается к осуществлению  некоторое мероприятие или серия  мероприятий («операция»), преследующая определенную цель. Спрашивается: как  нужно организовать (спланировать) операцию для того, чтобы она была наиболее эффективной? Для того чтобы поставленная задача приобрела количественный, математический характер, необходимо ввести в рассмотрение некоторый численный критерий W, которым мы будем характеризовать качество, успешность, эффективность операции. Критерий эффективности в каждом конкретном случае выбирается исходя из целевой направленности операции и задачи исследования (какой элемент управления оптимизируется и для чего).

Сформулируем общий принцип, лежащий в основе решения всех задач динамического программирования («принцип оптимальности»):

«Каково бы ни было состояние  системы S перед очередным шагом, надо выбрать управление на этом шаге так, чтобы выигрыш на данном шаге плюс оптимальный выигрыш на всех последующих шагах был максимальным».

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

При постановке задач динамического  программирования следует руководствоваться  следующими принципами:

    1. Выбрать параметры (фазовые координаты), характеризующие состояние S управляемой системы перед каждым шагом.
    2. Расчленить  операцию на этапы (шаги).
    3. Выяснить набор шаговых управлений xi для каждого шага и налагаемые на них ограничения.
    4. Определить какой выигрыш приносит на i-ом шаге управление xi, если перед этим система была в состоянии S, т.е. записать «функцию выигрыша»:

       .

    1. Определить, как изменяется состояние S системы S под влиянием управления xi на i-ом шаге: оно переходит в новое состояние

       .          (1.1)

    1. Записать основное рекуррентное уравнение динамического программирования, выражающее условный оптимальный выигрыш Wi(S) (начиная с i-го шага и до конца) через уже известную функцию Wi+1(S):

             (1.2)

Этому выигрышу соответствует  условное оптимальное управление на i-м шаге xi(S) (причем в уже известную функцию Wi+1(S) надо вместо S подставить измененное состояние )

    1. Произвести условную оптимизацию последнего (m-го) шага, задаваясь гаммой состояний S, из которых можно за один шаг дойти до конечного состояния, вычисляя для каждого из них условный оптимальный выигрыш по формуле
    2. Произвести условную оптимизацию (m-1)-го, (m-2)-го и т.д. шагов по формуле (1.2), полагая в ней i=(m-1),(m-2),…, и для каждого из шагов указать условное оптимальное управление xi(S), при котором максимум достигается.

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

    1. Произвести безусловную оптимизацию управления, «читая» соответствующие рекомендации на каждом шаге. Взять найденное оптимальное управление на первом шаге ; изменить состояние системы по формуле (1.1); для вновь найденного состояния найти оптимальное управление на втором шаге х2* и т.д. до конца.

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

(если только выигрыши  wi положительны). Эти задачи решаются точно так же, как задачи с аддитивным критерием, с той единственной разницей, что в основном уравнении (1.2) вместо знака «плюс» ставится знак «умножения»: 

 

Общая структура  динамического программирования

 

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

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

Информация о работе Типовые процедуры решения задач дискретной оптимизации