В классической транспортной задаче, которая является частью линейного программирования, у нас есть m поставщиков и n потребителей. Задача заключается в том, чтобы минимизировать стоимость транспортировки товаров от поставщиков к потребителям с учетом ограничений по запасам у поставщиков и потребности у потребителей.
Общая форма транспортной задачи
Задача может быть записана в следующем виде:
Целевая функция: минимизация общей стоимости транспортировки товаров с учётом расстояний и количеств товаров.
Переменные: xijx_{ij} — количество товара, которое поставщик ii должен отправить потребителю jj.
Ограничения:
Для каждого поставщика: сумма всех товаров, отправленных этим поставщиком, не должна превышать его запас.
Для каждого потребителя: сумма всех товаров, полученных этим потребителем, должна быть равна его потребности.
Теперь давай рассмотрим ограничения более подробно.
Количество ограничений в задаче
Ограничения на поставки: для каждого поставщика ii сумма товаров, отправленных этим поставщиком на всех потребителей, должна быть не больше его запаса:
∑j=1nxij≤siдля каждого i=1,2,…,m,sum_{j=1}^{n} x_{ij} leq s_i quad text{для каждого} i = 1, 2, dots, m,
где sis_i — запас поставщика ii.
Таким образом, количество таких ограничений будет равно количеству поставщиков mm.
Ограничения на потребности: для каждого потребителя jj сумма товаров, полученных этим потребителем от всех поставщиков, должна быть не меньше его потребности:
∑i=1mxij=djдля каждого j=1,2,…,n,sum_{i=1}^{m} x_{ij} = d_j quad text{для каждого} j = 1, 2, dots, n,
где djd_j — потребность потребителя jj.
Количество таких ограничений будет равно количеству потребителей nn.
Итоговое количество ограничений
Итак, в классической транспортной задаче общее количество ограничений будет равно:
m+n.m + n.
Это потому что для каждого из mm поставщиков существует одно ограничение на сумму отправленных товаров, а для каждого из nn потребителей — одно ограничение на сумму полученных товаров.
Случаи с дополнительными ограничениями
Невозможность выполнения задачи: Если сумма всех запасов поставщиков не равна сумме всех потребностей потребителей, то транспортную задачу нельзя решить. Это условие называется условием балансировки. В этом случае добавляются дополнительные ограничения, которые проверяют этот баланс, но это уже не влияет на количество основных ограничений.
Негативные поставки: Часто в транспортной задаче предполагается, что количество товара xijx_{ij} не может быть отрицательным (то есть xij≥0x_{ij} geq 0). Это накладывает дополнительное ограничение на каждую переменную:
xij≥0для всех i и j.x_{ij} geq 0 quad text{для всех} i text{и} j.
В данном случае количество таких ограничений будет равно m×nm times n (по одному на каждую переменную).
Пример
Для наглядности, рассмотрим задачу с 2 поставщиками и 3 потребителями:
Пусть поставщики имеют запасы s1=20s_1 = 20 и s2=30s_2 = 30.
Пусть потребители имеют потребности d1=25d_1 = 25, d2=15d_2 = 15 и d3=10d_3 = 10.
У нас будет 2 ограничения для поставок:
x11+x12+x13≤20,x21+x22+x23≤30.x_{11} + x_{12} + x_{13} leq 20, quad x_{21} + x_{22} + x_{23} leq 30.
И 3 ограничения для потребностей:
x11+x21=25,x12+x22=15,x13+x23=10.x_{11} + x_{21} = 25, quad x_{12} + x_{22} = 15, quad x_{13} + x_{23} = 10.
Итого — 2 (поставщики) + 3 (потребители) = 5 ограничений.
Если добавить ограничения на неотрицательность переменных xijx_{ij}, то получим 6 дополнительных ограничений (по одному для каждого значения переменной).
Заключение
В классической транспортной задаче из mm поставщиков и nn потребителей количество ограничений составит m+nm + n. Если учитываются дополнительные условия, такие как неотрицательность переменных, количество ограничений увеличится.