Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Конспект по ММТС.doc
Скачиваний:
5
Добавлен:
01.03.2025
Размер:
3.59 Mб
Скачать

3.9. Задачи дискретной оптимизации

Примерами таких задач являются задачи целочисленного линейного программирования, в том числе задачи о ранце, о назначениях и о коммивояжере.

3.9.1. Целочисленная задача линейного программирования

Задача состоит в следующем:

необходимо найти оптимальные значения управляемых параметров { Ki }, дающие экстремум целевой функции

при ограничениях

, ; ;

Ki = 0,1,2,...,

– эффект от одной единицы Ki ; Ki – значение i-го оптимизируемого параметра; aij и bj – параметры ограничений; m – общее число оптимизируемых параметров; n – общее число ограничений.

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

Например, для нижеприведенной задачи (рисунок 3.27), как следует из ее графического решения, нецелочисленное решение в точке А (K1 = 1.6, K2 = 2.6). При округлении K1=2, K2=3 нарушается заданное ограничение, при отбрасывании дробной части K1 = 1, K2 = 2 не гарантировано оптимальное решение. Если провести линию дополнительного ограничения, которое не отсекает ни одного целочисленного решения, то очевидно, что максимум Z достигается в точке K1 =3, K2=0.

Решение задачи производится по следующему алгоритму:

1) решается задача линейного программирования (ЗЛП) без учета целочисленности оптимизируемых параметров;

2) полученное решение проверяется на целочисленность. Если целочисленно, то решение получено (ВЫХОД), иначе на п. 3;

3) строится дополнительное ограничение, отсекающее часть области допускаемых нецелочисленных значений;

4) решается ЗЛП с дополнительным ограничением;

5) возврат к п.2.

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

К2 изолиния целевой функции

4

3 2-е ограничение

дополнительное

А ограничение

2

1-е ограничение

1

1 2 3 4 К1

Рисунок 3.27 – Пример графического решения целочисленной задачи линейного программирования

3.9.2. Задача о назначениях

Задача состоит в том, что требуется найти такое множество назначений i-х исполнителей (претендентов) на j-е работы Kij ( ; ), при которых достигается максимум эффекта

и выполняются ограничения

, ;

, ;

.

Если число претендентов и работ равны между собой, то m = n.

Задача решается венгерским методом или как транспортная задача линейного программирования, но на максимум целевой функции.

3.9.3. Задача о ранце (рюкзаке)

Сущность задачи состоит в том, что в ранце можно разместить набор различных предметов общей массой В. Этот набор может включать n видов предметов, каждый предмет типа j имеет массу mj , . Ценность каждого предмета сj. Обозначим через Kj – число в наборе предметов j-го типа. Необходимо найти оптимальный набор предметов в ранце, чтобы эффект Z

,

при ограничениях

Kj = 0,1,2,... (целочисленно)

и

.

Задача является целочисленной линейного программирования и решается соответствующим способом.