Texto integral
Введение. Известные алгоритмы решения транспортных задач основаны на методе улучшения плана в линейном программировании [1, 2]. Однако распространение на более широкие транспортные постановки сопровождается трудностями. В [3] предложен декомпозиционный метод решения классической транспортной задачи. Основой для этого метода являются подходы для оптимизации сетевых задач [4–6]. В [7] эти идеи используются для решения транспортной задачи с дополнительными пунктами производства и потребления (со складами), для которых установлены квадратичные штрафы. В настоящей работе указанные подходы распространяются на нелинейные зависимости.
1. Постановка задачи. Имеется, как и в классической транспортной задаче, m пунктов производства и n пунктов потребления. В каждом i-м пункте производства задан объем производства , в каждом j-м – объем потребления . Кроме того, существуют еще n дополнительных пунктов производства. Каждый j-й дополнительный пункт производства может поставлять свою продукцию только j-му пункту потребления. Объем производства в дополнительных пунктах производства не ограничен. Имеется также m дополнительных пунктов потребления. Каждому i-му дополнительному пункту потребления продукцию может поставлять только i-й обычный пункт производства. Объем потребления в дополнительных пунктах не ограничен. Указанные промежуточные пункты можно интерпретировать как склады.
Стоимость перевозки из j-го дополнительного пункта производства пропорциональна pj – степени от объема производства. Стоимость перевозки в i-й дополнительный пункт потребления пропорциональна ri – степени от объема перевозки. Необходимо минимизировать суммарные затраты на перевозки.
Формальная запись задачи имеет вид
(1.1)
(1.2)
(1.3)
(1.4)
Здесь xij – количество продукта, перевозимого из пункта j в пункт i; yi – количество продукта, доставляемого в дополнительный j-й пункт потребления; wj – количество продукта, вывозимого из дополнительного j-го пункта производства. Кроме того, будем считать cij четными числами, что не ограничивает общности рассмотрения.
2. Метод решения задачи. 2.1. П е р в ы й э т а п. Сформируем m + n одномерных задач. Первые m одномерных задач имеют вид ( – фиксировано):
(2.1)
(2.2)
(2.3)
Вторые n оптимизационных задач с одним ограничением запишем как (j фиксировано):
(2.4)
(2.5)
(2.6)
Здесь – целые.
Задачи (2.1)–(2.3) решаются следующим образом. Сравниваем di с (i фиксировано). Если , то полагаем . При сравниваем с . Если , то полагаем и т.д. Если имеет место неравенство (сразу или после нескольких назначений линейных переменных), то ищется целочисленный минимум выражения .
Обозначим через оптимальное значение . Тогда, очевидно, . Если при этом (2.1) не является равенством, то далее задачи (2.1)–(2.3) решаются как линейные (см., например, [3]). Задачи вида (2.4)–(2.6) решаются вполне аналогичным образом.
Пусть все задач вида (2.1)–(2.3) и (2.4)–(2.6) решены. Если объединение оптимальных решений всех задач является допустимым решением исходной задачи (1.1)–(1.4), то, очевидно, тем самым получено оптимальное решение задачи (1.1)–(1.4). Если оптимальное решение задачи (1.1)–(1.4) не получено, то начинаем итерационный циклический процесс решения оптимизационных задач с двумя ограничениями.
2.2. В т о р о й э т а п. Первая двумерная задача имеет вид:
(2.7)
(2.8)
(2.9)
(2.10)
Здесь – целые.
Задача (2.7)–(2.10) решается следующим образом. Единственной общей переменной в (2.7) и (2.8) является . Поэтому решение задачи (2.7)–(2.10) зависит от соотношения между и другими коэффициентами в целевой функции (2.9).
Пусть
(2.11)
Тогда, очевидно, что в оптимальном решении задачи (2.7)–(2.10) , после чего задача (2.7)–(2.10) распадается на две одномерные, рассмотренные выше.
Определим новые значения и следующим образом. Возьмем целочисленные значения и , подчиняющиеся условиям Пусть . Очевидно, что тогда . При новых значениях и объединение оптимальных решений соответствующих одномерных задач будет совпадать с оптимальным решением задачи (2.7)–(2.10).
Допустим, что . Тогда, исключив общую переменную, решаются две одномерные задачи. Далее вычисляются следующие величины:
,
,
,
.
Здесь – значения переменных в оптимальных решениях одномерных задач без , а – максимальные коэффициенты при положительных значениях переменных
Если и , то двумерная задача решена. При этом и . Если и , то, обозначив через и значения соответствующих переменных в оптимальных решениях одномерных задач, в двумерную задачу запишем ограничения
и .
Если и , то увеличивается на (или до своего максимума). Если при этом достигает максимума, то решение двумерной задачи окончено и . В противном случае пересчитываются , и процесс решения продолжается.
Если , то при решение двумерной задачи окончено и , . При полагаем . При увеличивается , а и уменьшаются до момента, когда перестает быть максимумом. Затем пересчитываются все и процесс решения продолжается.
Если , то при решение двумерной задачи окончено и . При , . При все аналогично случаю .
Если и , то и уменьшаются, а увеличивается до потери статуса максимума. Далее все пересчитываются и процесс решения продолжается.
Так же, как и в линейном случае [3], имеет место монотонное возрастание суммы значений целевых функций в оптимальных решениях всех одномерных задач в циклическом процессе решения двумерных задач и их разъединения на одномерные задачи. Сумма эта, очевидно, ограничена сверху, процесс – целочисленен, следовательно, за конечное число шагов достигается предел. Точно так же, как и в линейном случае [3], если объединение оптимальных решений одномерных задач (в предельном состоянии) является допустимым решением исходной задачи (1.1)–(1.4), то оно выступает ее оптимальным решением. В противном случае, как и в [3], образуются обобщенные производители и потребители.
3. Пример. Рассмотрим транспортную задачу с дополнительными пунктами потребления и производства со степенной зависимостью от объема производства и потребления в дополнительных пунктах. Ограничения и целевую функцию запишем следующим образом:
, , , | , , , |
.
3.1. П е р в ы й э т а п. 3. 1. 1. Первая одномерная задача:
,
.
Здесь , поэтому ищем целочисленный минимум выражения :
,
,
,
.
3. 1. 2. Вторая одномерная задача:
,
.
Здесь , поэтому вычисляем целочисленный минимум :
,
,
.
Целочисленный минимум достигается при :
.
3. 1. 3. Третья одномерная задача:
,
.
Здесь , ищем целочисленный минимум:
,
,
.
Целочисленный минимум достигается при :
.
3. 1. 4. Четвертая одномерная задача:
,
.
Здесь , находим минимум выражения :
,
,
,
.
Далее решать одномерные задачи не имеет смысла, так как, например, в третьей задаче , а в четвертой .
3.2. В т о р о й э т а п. 3. 2. 1. Первая двумерная задача:
,
,
.
Здесь , поэтому решаются две одномерные задачи.
3. 2. 1. 1. Первая одномерная задача:
,
.
Здесь , поэтому вычисляем минимум:
,
,
,
.
3. 2. 1. 2. Вторая одномерная задача:
,
.
Здесь , ищем минимум:
,
,
,
,
,
,
,
.
Здесь , поэтому , :
,
,
,
.
Здесь , поэтому увеличивается за счет и :
,
,
,
,
.
Снова , поэтому :
,
,
,
.
Снова , поэтому :
,
,
,
.
Здесь , поэтому решение второй одномерной задачи окончено.
3. 2. 2. Вторая двумерная задача:
,
,
.
Имеем , поэтому сначала исключается и решаются две одномерные задачи.
3. 2. 2. 1. Первая одномерная задача:
,
.
Здесь , поэтому находим минимум:
,
,
,
.
Целочисленный минимум достигается при . При этом .
3. 2. 2. 2. Вторая одномерная задача:
,
.
Имеем , поэтому отыскиваем целочисленный минимум:
,
,
,
.
Целочисленный минимум достигается при . При этом :
,
,
,
.
Здесь , поэтому . Имеем :
,
,
,
.
Здесь , поэтому увеличивается на . Имеем :
,
,
,
.
Здесь . Решение двумерной задачи окончено. При этом .
3. 2. 3. Третья двумерная задача:
,
,
.
Здесь , поэтому решаются две одномерные задачи.
3. 2. 3. 1. Первая одномерная задача:
,
.
Здесь , поэтому находим минимум:
,
,
.
Тогда . Первая одномерная задача решена.
3. 2. 3. 2. Вторая одномерная задача:
,
.
Здесь , поэтому вычисляем минимум:
,
,
,
,
,
,
,
.
Здесь , поэтому двумерная задача решена: .
3. 2. 4. Четвертая двумерная задача:
,
,
.
Здесь , поэтому решаются две одномерные задачи.
3. 2. 4. 1. Первая одномерная задача:
,
.
Здесь , поэтому ищем минимум:
,
,
,
.
Целочисленный минимум достигается при .
3. 2. 4. 2. Вторая одномерная задача:
,
.
Здесь , поэтому :
,
,
,
.
Здесь , поэтому двумерная задача решена:
,
.
3. 2. 5. Пятая двумерная задача:
,
,
.
Здесь , поэтому решаются две одномерные задачи.
3. 2. 5. 1. Первая одномерная задача:
,
.
Здесь , поэтому отыскиваем минимум:
,
,
,
.
Целочисленный минимум достигается при :
.
3. 2. 5. 2. Вторая одномерная задача:
,
.
Здесь , поэтому находим минимум:
,
,
,
.
Целочисленный минимум достигается при :
,
,
,
,
.
Здесь , поэтому пятая двумерная задача решена:
,
.
3. 2. 6. Шестая двумерная задача:
,
,
.
Здесь , поэтому решаются две одномерные задачи.
3. 2. 6. 1. Первая одномерная задача:
,
.
Здесь , поэтому отыскиваем минимум:
,
,
,
.
Целочисленный минимум достигается при :
.
3. 2. 6. 2. Вторая одномерная задача:
,
.
Здесь , поэтому ищем минимум:
,
,
,
.
Целочисленный минимум достигается при
,
,
,
,
.
Здесь , следовательно :
,
,
,
.
Снова , следовательно . Здесь достигло максимума, поэтому шестая двумерная задача решена:
,
.
3. 2. 7. Седьмая двумерная задача:
,
,
.
Здесь , поэтому решаются две одномерные задачи.
3. 2. 7. 1. Первая одномерная задача:
,
.
Здесь , поэтому вычисляем минимум:
,
,
,
.
3. 2. 7. 2. Вторая одномерная задача:
,
.
Здесь, очевидно,
,
,
,
.
Здесь , следовательно двумерная задача решена:
,
.
3. 2. 8. Восьмая двумерная задача:
,
,
.
Здесь , поэтому решаются две одномерные задачи.
3. 2. 8. 1. Первая одномерная задача:
,
.
Здесь , поэтому находим минимум:
,
,
,
.
Целочисленный минимум достигается при :
.
3. 2. 8. 2. Вторая одномерная задача:
,
.
Здесь , поэтому отыскиваем минимум:
,
,
,
.
Целочисленный минимум достигается при :
,
,
,
,
.
Здесь , поэтому :
,
,
,
.
Здесь , поэтому :
,
3,
,
.
Здесь , поэтому восьмая двумерная задача решена:
.
3. 2. 9. Девятая двумерная задача:
,
,
.
Здесь , поэтому решаются две одномерные задачи.
3. 2. 9. 1. Первая одномерная задача:
,
.
Здесь , поэтому вычисляем минимум:
,
,
,
.
Целочисленный минимум достигается при :
.
3. 2. 9. 2. Вторая одномерная задача:
,
.
Здесь , поэтому находим минимум:
,
,
,
,
,
,
,
.
Здесь , поэтому :
,
,
,
.
Здесь , поэтому . Решение девятой двумерной задачи окончено.
По итогам первого цикла допустимое решение исходной задачи не получено. Всего потребовалось для получения оптимального решения провести шесть циклов вычислений. Ниже приведено оптимальное решение примера как объединение оптимальных решений всех шести одномерных задач с найденными коэффициентами целевых функций.
3.3. Р е ш е н и е и с х о д н о й з а д а ч и. Рассматривается как объединение решений одномерных задач:
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
.
4. Численные расчеты. Была осуществлена программная реализация предложенного метода. Проведен счет с различным количеством ограничений (до 300). Время счета было пропорционально .
5. Расширение класса решаемых задач. Анализ шагов алгоритма решения задач показывает, что нелинейные слагаемые в целевой функции должны удовлетворять следующим ограничениями:
1) при и соответствующие слагаемые равны нулю,
2) при и все соответствующие слагаемые положительны,
3) первые производные всех нелинейных слагаемых целевой функции являются строго возрастающими функциями.
Выполнение этих ограничений обеспечивает монотонность итерационного процесса. Таким образом, предлагаемым подходом можно решать обширный класс задач. Для примера решим следующую небольшую задачу:
, , | , , |
.
5.1. П е р в ы й э т а п. 5. 1. 1. Первая одномерная задача:
,
,
,
,
,
.
Целочисленный минимум достигается при :
.
5. 1. 2. Вторая одномерная задача:
,
,
,
,
,
.
Целочисленный минимум достигается при :
.
5. 1. 3. Третья одномерная задача:
,
,
,
,
,
.
Целочисленный минимум достигается при :
.
Четвертую одномерную задачу решать не имеет смысла, так как во второй задаче , а в третьей .
5.2. В т о р о й э т а п. 5. 2. 1. Первая двумерная задача:
,
,
.
Здесь , поэтому решаются две одномерные задачи.
5.2.1.1. Первая одномерная задача:
,
,
,
,
,
.
Целочисленный минимум достигается при :
.
5. 2. 1. 2. Вторая одномерная задача:
,
,
,
,
,
.
Целочисленный минимум достигается при :
,
,
,
,
.
Здесь , поэтому .
5. 2. 2. Вторая двумерная задача:
,
,
.
Здесь , поэтому решаются две одномерные задачи.
5. 2. 2. 1. Первая одномерная задача:
,
,
,
,
,
.
Целочисленный минимум достигается при :
.
5. 2. 2. 2. Вторая одномерная задача:
,
,
,
,
,
.
Целочисленный минимум достигается при :
,
,
,
,
.
Здесь , поэтому
,
,
,
,
.
Здесь , отсюда
,
,
,
,
.
Решение второй двумерной задачи окончено. Здесь , поэтому
.
5. 2. 3. Третья двумерная задача:
,
,
.
Здесь , поэтому решаются две одномерные задачи.
5. 2. 3. 1. Первая одномерная задача:
,
,
,
,
,
.
Целочисленный минимум достигается при :
.
5. 2. 3. 2. Вторая одномерная задача:
,
,
,
,
,
.
Целочисленный минимум достигается при :
,
,
,
,
.
Здесь , поэтому
,
,
,
,
.
Здесь , поэтому решение двумерной задачи окончено:
.
5. 2. 4. Четвертая двумерная задача:
,
,
.
Здесь , поэтому решаются две одномерные задачи.
5. 2. 4. 1. Первая одномерная задача:
,
,
,
,
,
,
.
Целочисленный минимум достигается при :
.
5. 2. 4. 2. Вторая одномерная задача:
,
,
,
,
,
.
Целочисленный минимум достигается при :
,
,
,
,
.
Здесь , поэтому решение четвертой двумерной задачи окончено:
.
Легко видеть, что из полученных решений двумерных задач сформировать решение исходной задачи невозможно. Для достижения предельного состояния итерационного процесса потребовалось четыре цикла.
5. 2. 5. Итоговый набор одномерных задач имеет следующий вид:
,
.
Решение: ;
,
.
Решение: ;
,
.
Решение: ;
,
.
Решение: .
Из этого набора решений легко формируется итоговый результат:
.
Заключение. Декомпозиционный подход оказался применим для еще одного класса задач. Намечается путь к рассмотрению двух индексов в данной постановке.