Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
651079.doc
Скачиваний:
30
Добавлен:
17.11.2019
Размер:
8.68 Mб
Скачать

Методы решения задач дискретного (целочисленного) программирования

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

Примерами таких задач являются: определение очередно­сти выполнения работ, назначение ресурсов по объектам ис­пользования, выбор маршрута на сети «задача о коммивояже­ре».

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

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

ти решений с нецелочисленными переменными, которые часто приходится выбирать по эвристическим правилам.

Наиболее употребительные методы. Различают два класса методов: методы отсечения и комбинаторные методы.

Методы отсечений [56] используются при решении ли­нейных целочисленных задач без булевых переменных. Их идея заключается в ослаблении ограничений (за счет отказа от требований целочисленности) и решения обычной задачи ли­нейного программирования. Затем, если полученное опти­мальное решение не удовлетворяет требованию целочислен­ности, вводят специальные дополнительные требования, тем самым отсекая некоторую область возможных решений, и вновь решают задачу линейного программирования с провер­кой результатов на целочисленность переменных.

Процесс повторяется до выполнения требований по цело­численности. Для решения целочисленных задач используется алгоритм Гомори и алгоритм Дальтона и Ллевелина

Комбинаторные методы [43, 55] используются для реше­ния нелинейных задач с булевыми переменными. Для таких задач используется так называемый аддитивный алгоритм, вычислительные операции в котором осуществляют вычита­нием. Идея аддитивного алгоритма заключается в переборе 2 возможных решений (где N — число булевых переменных) и выбор лучшего из них.

Методы динамического программирования

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

Метод особенно эффективен для задач, условия которых позволяют составить сетевой график перехода от этапа к

361 этапу, где узлы сети будут соответствовать различным зна­чениям переменных, а дуги — допустимым вариантам реше­ния [51].

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

  • этапы решений (подзадачи, на которые она декомпо­зируется);

  • управляемые переменные (варианты решений) на каждом этапе;

  • информацию для решения задачи на каждом этапе;

  • рекуррентные вычислительные процедуры, связы­вающие соседние этапы.

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

Наиболее употребительные методы. Различают прямые и обратные методы оптимизации. Они отличаются друг от друга различным представлением переменной и видом рекуррент­ных соотношений [51].

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]