Дискретное программирование
Дискретное программирование - раздел, изучающий задачи, в которых на искомые переменные налагается условие целочисленности, а область допустимых решений конечна
Дискретными являются задачи с логическими переменными, принимающими только два значения - нуль или единица
Искомые переменные
Исходные данные могут быть детерминированными и случайными.
Детерминированными называются такие исходные данные, когда при составлении модели их точные значения известны.
Непрерывными называются такие величины, которые в заданных граничных условиях могут принимать любые значения.
Дискретными называются такие переменные, которые могут принимать только заданные значения.
Зависимости между переменными (как целевые функции, так и ограничения):
- Линейные зависимости, в которых переменные входят в первой степени и с ними выполняются только действия сложения или вычитания.
Почему этот раздел не назвали целочисленым?
Назвать дискретное программирование целочисленным нельзя.
Например, ряд вместимостью в
Значит целочисленное программирование - частный случай дискретного программирования.
Задачи дискретного программирования
Задачи дискретного программирования:
- Задача о контейнерных перевозках (о рюкзаке)
- Задача о назначении (проблема выбора)
- Транспортные задачи.
Задача о назначении является исторически первой задачей дискретного программирования.
Методы решения
Метод Гомори
Используя симплексный метод, находят решения задачи без учета целочисленных переменных
Составляют дополнительное ограничение для переменной, которая в оптимальном плане задачи имеет максимальное дробное решение, а в оптимальном плане должно быть целочисленное.
Используя двойственный симплексный метод, находят решения задачи, получающейся из задачи в результате присоединения дополнительного ограничения.
В случае необходимости составляют еще одно дополнительное ограничение и продолжают процесс до получения оптимального плана задачи.
Метод ветвей и границ
!Pasted image 20241002124504.png
Задача решается без учета целочисленности.
Далее ...
На основе полученного решения составляются дополнительные ограничения:
Решается еще две задачи ЛП, в каждую из которых вошли все исходные ограничения и одно из дополнительных
Если одно из решений удовлетворяет целочисленности, значение целочисленной функции принимается за граничное
При этом рассмотрение других задач продолжается до тех пор, пока не будет получено на одной из ветвей недопустимое решение, тогда дальнейшее вычисление по этой ветви прекращается.
На одной из ветвей целочисленной решение, тогда значение целочисленной функции при данных значениях переменных сравнивается с верхним () граничным значением
Типы задач дискретного программирования
- Тип - при целочисленных значениях некоторых исходных данных они обладают целочисленным оптимальным планом. (транспортная задача и ее модификация)
- ...
Задачи о контейнерных перевозках
Задачи о назначении
Транспортные задачи
Транспортная задача является специальным типом задач линейного программирования.
Экономическая постановка задачи
Имеется
Заданы тарифы (стоимость) перевозок единицы продукции от поставщиков к потребителям.
Известны объемы запасов у поставщиков и потребности каждого потребителя.
Требуется составить план поставок продукции от поставщиков к потребителям так, чтобы суммарная стоимость перевозок была минимальной.
Задачу можно представить в виде матрицы размерами
Математическая постановка задачи
Ограничения:
Здесь:
Исходные данные транспортной задачи
Заданы мощности поставщиков и потребности потребителей, а также транспортные затраты на перевозку единицы продукции от поставщиков к потребителям.
Пример
!Pasted image 20241002131428.png
Целевая функция:
Ограничения:
Для того чтобы решить задачу, надо проверить задачу на условие закрытости
Для этого находим суммы:
Объема производства:
Объема потребления:
Модель открытая, так как объем производства не покрывает объем потребления. Необходимо добавить еще одного поставщика
Значит вводим фиктивного поставщика с тарификацией перевозок 0, (т.к.
т.е. в таблицу вводим фиктивный объем производства = 5, (
Задача принимает вид:
Целевая функция:
Ограничения:
Теперь модель закрытая и можно решать задачу.
=СУМПРОИЗВЕД((план), (тарифы))