Склады и магазины
От математической модели до оптимального плана. Таблицы оформлены по той же схеме, что в расчетной книге Максима; данные — нашего варианта.
Базисная переменная · как в пособии
Смородинский С. С., Батин Н. В., издание 2010 года, §5.2, стр. 61.
«Переменные, принявшие ненулевые значения, называются базисными, остальные (нулевые) – небазисными».
Сразу следующее примечание уточняет:
«Иногда некоторые из базисных переменных также принимают нулевые значения (см. подраздел 5.5). Однако количество базисных переменных всегда должно быть равно M+N–1».
В §2.3.1 (стр. 17) небазисные переменные полагаются равными нулю, а остальные определяются из системы ограничений. Поэтому признак базиса в таблице — включение переменной в выбранный базис, а не просто ненулевое число.
В этом плане отмечено 6 базисных клеток; для полного базиса требуется 3 + 4 − 1 = 6. Во время построения план еще не полный.
Потенциалы, псевдостоимость, оценка · в чем разница?
В §5.3 (стр. 62) потенциалы вводятся как платежи поставщиков и потребителей. Это вспомогательные величины для проверки оптимальности, а не новые перевозки. Один платеж задают произвольно: здесь U₁ = 0.
По известному платежу и тарифу определяем соседний: сначала только связанные базисом значения. Для небазисной клетки сумма платежей — псевдостоимость; разность с тарифом — оценка.
Отрицательная оценка указывает направление снижения затрат на единицу сдвига. Если все оценки неотрицательны — план оптимален. Нулевой сдвиг при вырожденности меняет базис без снижения затрат.
Как называются работа и методы?
Лабораторная работа №4: «Постановка и решение транспортных оптимизационных задач линейного программирования» — точное название из задания, стр. 1.
Метод минимального элемента строит допустимый план. Метод потенциалов проверяет его и ищет оптимальный. В пособии 2010 года это §5.2 и §5.3; вырожденность — §5.5. В задании даны номера §4.2, §4.3 и §4.5: нумерация изданий различается.
Опорный план — допустимый план с выбранным базисом из M+N−1 независимых переменных. Оптимальный план — допустимый план с наименьшими суммарными затратами. Назначить все перевозки еще не означает доказать оптимальность.
Проверь, что запомнил
Не открывая ответ, объясни: почему ноль бывает базисным? Чем тариф отличается от перевозки? По каким клеткам вычисляют потенциалы? Что означает отрицательная оценка? Почему при θ = 0 стоимость не меняется?
Сверить объяснение
Базис выбирают по независимым ограничениям; его переменная может оказаться нулевой. Тариф задан, перевозка ищется. Потенциалы связываются по базисным клеткам. Отрицательная оценка дает направление улучшения, а θ — допустимый объем сдвига: при θ = 0 объемы и стоимость прежние.
1. Математическая модель
Три склада располагают 40, 30 и 30 тыс. единиц товара. Четырем магазинам нужно 20, 25, 30 и 25 тыс. единиц. — объем поставки со склада i в магазин j, измеренный в тысячах единиц. — стоимость перевозки одной тысячи единиц товара в денежных единицах. Общий запас и спрос равны 100 тыс. единиц: модель закрытая.
Уравнения именно нашего варианта
+++=40; +++=30; +++=30.
++=20; ++=25; ++=30; ++=25.
E=4+9+2+7+6+0+3++5+4+2+6 → min.
2. Исходная задача: 275 → 255 → 245
Метод минимального элемента дает начальный план с шестью базисными клетками. Два сдвига снижают затраты до 245. Среди равных тарифов приложение выбирает наибольшую возможную поставку, затем первую клетку по индексам. Это соглашение для воспроизводимости; методичка не задает единственного выбора при равенстве.
Та же запись, что в расчетной книге: каждая таблица — отдельное состояние. В базисной клетке показаны тариф и перевозка; в свободной после расчета потенциалов появляются псевдостоимость и оценка.
Исходные условия задачи
| Поставщик | Магазин 1j = 1 | Магазин 2j = 2 | Магазин 3j = 3 | Магазин 4j = 4 | Ai |
|---|---|---|---|---|---|
| Склад 1i = 1 | 4 | 9 | 2 | 7 | 40 |
| Склад 2i = 2 | 6 | 0 | 3 | 1 | 30 |
| Склад 3i = 3 | 5 | 4 | 2 | 6 | 30 |
| Bj | 20 | 25 | 30 | 25 |
Проверка баланса
| Поставщик | Магазин 1j = 1 | Магазин 2j = 2 | Магазин 3j = 3 | Магазин 4j = 4 | Ai |
|---|---|---|---|---|---|
| Склад 1i = 1 | 4 | 9 | 2 | 7 | 40 |
| Склад 2i = 2 | 6 | 0 | 3 | 1 | 30 |
| Склад 3i = 3 | 5 | 4 | 2 | 6 | 30 |
| Bj | 20 | 25 | 30 | 25 |
Назначение поставки
| Поставщик | Магазин 1j = 1 | Магазин 2j = 2 | Магазин 3j = 3 | Магазин 4j = 4 | Остаток Ai |
|---|---|---|---|---|---|
| Склад 1i = 1 | 4 | 9 | 2 | 7 | 40 |
| Склад 2i = 2 | 6 | 025 | 3 | 1 | 5 |
| Склад 3i = 3 | 5 | 4 | 2 | 6 | 30 |
| Остаток Bj | 20 | 0 | 30 | 25 |
Назначение поставки
| Поставщик | Магазин 1j = 1 | Магазин 2j = 2Спрос закрыт ✓ | Магазин 3j = 3 | Магазин 4j = 4 | Остаток Ai |
|---|---|---|---|---|---|
| Склад 1i = 1 | 4 | 9 | 2 | 7 | 40 |
| Склад 2i = 2 | 6 | 025 | 3 | 15 | 0 |
| Склад 3i = 3 | 5 | 4 | 2 | 6 | 30 |
| Остаток Bj | 20 | 0 | 30 | 20 |
Назначение поставки
| Поставщик | Магазин 1j = 1 | Магазин 2j = 2Спрос закрыт ✓ | Магазин 3j = 3 | Магазин 4j = 4 | Остаток Ai |
|---|---|---|---|---|---|
| Склад 1i = 1 | 4 | 9 | 230 | 7 | 10 |
| Склад 2i = 2Запас исчерпан ✓ | 6 | 025 | 3 | 15 | 0 |
| Склад 3i = 3 | 5 | 4 | 2 | 6 | 30 |
| Остаток Bj | 20 | 0 | 0 | 20 |
Назначение поставки
| Поставщик | Магазин 1j = 1 | Магазин 2j = 2Спрос закрыт ✓ | Магазин 3j = 3Спрос закрыт ✓ | Магазин 4j = 4 | Остаток Ai |
|---|---|---|---|---|---|
| Склад 1i = 1 | 410 | 9 | 230 | 7 | 0 |
| Склад 2i = 2Запас исчерпан ✓ | 6 | 025 | 3 | 15 | 0 |
| Склад 3i = 3 | 5 | 4 | 2 | 6 | 30 |
| Остаток Bj | 10 | 0 | 0 | 20 |
Назначение поставки
| Поставщик | Магазин 1j = 1 | Магазин 2j = 2Спрос закрыт ✓ | Магазин 3j = 3Спрос закрыт ✓ | Магазин 4j = 4 | Остаток Ai |
|---|---|---|---|---|---|
| Склад 1i = 1Запас исчерпан ✓ | 410 | 9 | 230 | 7 | 0 |
| Склад 2i = 2Запас исчерпан ✓ | 6 | 025 | 3 | 15 | 0 |
| Склад 3i = 3 | 510 | 4 | 2 | 6 | 20 |
| Остаток Bj | 0 | 0 | 0 | 20 |
Назначение поставки
| Поставщик | Магазин 1j = 1Спрос закрыт ✓ | Магазин 2j = 2Спрос закрыт ✓ | Магазин 3j = 3Спрос закрыт ✓ | Магазин 4j = 4 | Остаток Ai |
|---|---|---|---|---|---|
| Склад 1i = 1Запас исчерпан ✓ | 410 | 9 | 230 | 7 | 0 |
| Склад 2i = 2Запас исчерпан ✓ | 6 | 025 | 3 | 15 | 0 |
| Склад 3i = 3 | 510 | 4 | 2 | 620 | 0 |
| Остаток Bj | 0 | 0 | 0 | 0 |
Начальный опорный план готов
| Поставщик | Магазин 1j = 1 | Магазин 2j = 2 | Магазин 3j = 3 | Магазин 4j = 4 | Ai |
|---|---|---|---|---|---|
| Склад 1i = 1 | 410 | 9 | 230 | 7 | 40 |
| Склад 2i = 2 | 6 | 025 | 3 | 15 | 30 |
| Склад 3i = 3 | 510 | 4 | 2 | 620 | 30 |
| Bj | 20 | 25 | 30 | 25 |
Начальный допустимый план еще не гарантирует минимум затрат. Следующий этап — проверка свободных клеток методом потенциалов.
Итерация 1: Контур перераспределения
| Поставщик | Магазин 1j = 1 | Магазин 2j = 2 | Магазин 3j = 3 | Магазин 4j = 4 | Ai | Ui |
|---|---|---|---|---|---|---|
| Склад 1i = 1 | 410 | 495 | 230 | 572 | 40 | U1 = 0 |
| Склад 2i = 2 | 066 | 025 -θ | -235 | 15 +θ | 30 | U2 = -4 |
| Склад 3i = 3 | 510 | 540 +θ-1 | 32-1 | 620 -θ | 30 | U3 = 1 |
| Bj | 20 | 25 | 30 | 25 | ||
| Vj | V1 = 4 | V2 = 4 | V3 = 2 | V4 = 5 |
Расчет потенциалов и оценок по клеткам
Принимаем U1 = 0. В базисе Ui + Vj = Cij:
Для каждой свободной клетки:
X3,2 (+θ) → X3,4 (-θ) → X2,4 (+θ) → X2,2 (-θ) → начало
θ = 20. Из базиса выходит клетка (3, 4). В плюсах прибавляем θ, в минусах вычитаем θ. Баланс каждой строки и столбца сохраняется.
Итерация 2: Контур перераспределения
| Поставщик | Магазин 1j = 1 | Магазин 2j = 2 | Магазин 3j = 3 | Магазин 4j = 4 | Ai | Ui |
|---|---|---|---|---|---|---|
| Склад 1i = 1 | 410 +θ | 396 | 230 -θ | 473 | 40 | U1 = 0 |
| Склад 2i = 2 | 165 | 05 | -134 | 125 | 30 | U2 = -3 |
| Склад 3i = 3 | 510 -θ | 420 | 320 +θ-1 | 561 | 30 | U3 = 1 |
| Bj | 20 | 25 | 30 | 25 | ||
| Vj | V1 = 4 | V2 = 3 | V3 = 2 | V4 = 4 |
Расчет потенциалов и оценок по клеткам
Принимаем U1 = 0. В базисе Ui + Vj = Cij:
Для каждой свободной клетки:
X3,3 (+θ) → X3,1 (-θ) → X1,1 (+θ) → X1,3 (-θ) → начало
θ = 10. Из базиса выходит клетка (3, 1). В плюсах прибавляем θ, в минусах вычитаем θ. Баланс каждой строки и столбца сохраняется.
Оптимальное решение найдено
| Поставщик | Магазин 1j = 1 | Магазин 2j = 2 | Магазин 3j = 3 | Магазин 4j = 4 | Ai | Ui |
|---|---|---|---|---|---|---|
| Склад 1i = 1 | 420 | 495 | 220 | 572 | 40 | U1 = 0 |
| Склад 2i = 2 | 066 | 05 | -235 | 125 | 30 | U2 = -4 |
| Склад 3i = 3 | 451 | 420 | 210 | 561 | 30 | U3 = 0 |
| Bj | 20 | 25 | 30 | 25 | ||
| Vj | V1 = 4 | V2 = 4 | V3 = 2 | V4 = 5 |
Расчет потенциалов и оценок по клеткам
Принимаем U1 = 0. В базисе Ui + Vj = Cij:
Для каждой свободной клетки:
3. Измененные условия: на складе 2 осталось 20
Общий запас 90 меньше спроса 100. Вводим фиктивный склад с запасом 10 и нулевыми тарифами. Затем полностью повторяем оба этапа решения. Стоимость проходит 270 → 250 → 250 → 240 → 235. Повторение 250 связано со сменой базиса при θ = 0.
Та же запись, что в расчетной книге: каждая таблица — отдельное состояние. В базисной клетке показаны тариф и перевозка; в свободной после расчета потенциалов появляются псевдостоимость и оценка.
Исходные условия задачи
| Поставщик | Магазин 1j = 1 | Магазин 2j = 2 | Магазин 3j = 3 | Магазин 4j = 4 | Ai |
|---|---|---|---|---|---|
| Склад 1i = 1 | 4 | 9 | 2 | 7 | 40 |
| Склад 2i = 2 | 6 | 0 | 3 | 1 | 20 |
| Склад 3i = 3 | 5 | 4 | 2 | 6 | 30 |
| Bj | 20 | 25 | 30 | 25 |
Ввод фиктивного склада (дефицит товара)
| Поставщик | Магазин 1j = 1 | Магазин 2j = 2 | Магазин 3j = 3 | Магазин 4j = 4 | Ai |
|---|---|---|---|---|---|
| Склад 1i = 1 | 4 | 9 | 2 | 7 | 40 |
| Склад 2i = 2 | 6 | 0 | 3 | 1 | 20 |
| Склад 3i = 3 | 5 | 4 | 2 | 6 | 30 |
| Склад 4 (фикт.)i = 4 | 0 | 0 | 0 | 0 | 10 |
| Bj | 20 | 25 | 30 | 25 |
Назначение поставки
| Поставщик | Магазин 1j = 1 | Магазин 2j = 2 | Магазин 3j = 3 | Магазин 4j = 4 | Остаток Ai |
|---|---|---|---|---|---|
| Склад 1i = 1 | 4 | 9 | 2 | 7 | 40 |
| Склад 2i = 2 | 6 | 020 | 3 | 1 | 0 |
| Склад 3i = 3 | 5 | 4 | 2 | 6 | 30 |
| Склад 4 (фикт.)i = 4 | 0 | 0 | 0 | 0 | 10 |
| Остаток Bj | 20 | 5 | 30 | 25 |
Назначение поставки
| Поставщик | Магазин 1j = 1 | Магазин 2j = 2 | Магазин 3j = 3 | Магазин 4j = 4 | Остаток Ai |
|---|---|---|---|---|---|
| Склад 1i = 1 | 4 | 9 | 2 | 7 | 40 |
| Склад 2i = 2Запас исчерпан ✓ | 6 | 020 | 3 | 1 | 0 |
| Склад 3i = 3 | 5 | 4 | 2 | 6 | 30 |
| Склад 4 (фикт.)i = 4 | 010 | 0 | 0 | 0 | 0 |
| Остаток Bj | 10 | 5 | 30 | 25 |
Назначение поставки
| Поставщик | Магазин 1j = 1 | Магазин 2j = 2 | Магазин 3j = 3 | Магазин 4j = 4 | Остаток Ai |
|---|---|---|---|---|---|
| Склад 1i = 1 | 4 | 9 | 230 | 7 | 10 |
| Склад 2i = 2Запас исчерпан ✓ | 6 | 020 | 3 | 1 | 0 |
| Склад 3i = 3 | 5 | 4 | 2 | 6 | 30 |
| Склад 4 (фикт.)i = 4Запас исчерпан ✓ | 010 | 0 | 0 | 0 | 0 |
| Остаток Bj | 10 | 5 | 0 | 25 |
Назначение поставки
| Поставщик | Магазин 1j = 1 | Магазин 2j = 2 | Магазин 3j = 3Спрос закрыт ✓ | Магазин 4j = 4 | Остаток Ai |
|---|---|---|---|---|---|
| Склад 1i = 1 | 410 | 9 | 230 | 7 | 0 |
| Склад 2i = 2Запас исчерпан ✓ | 6 | 020 | 3 | 1 | 0 |
| Склад 3i = 3 | 5 | 4 | 2 | 6 | 30 |
| Склад 4 (фикт.)i = 4Запас исчерпан ✓ | 010 | 0 | 0 | 0 | 0 |
| Остаток Bj | 0 | 5 | 0 | 25 |
Назначение поставки
| Поставщик | Магазин 1j = 1 | Магазин 2j = 2 | Магазин 3j = 3Спрос закрыт ✓ | Магазин 4j = 4 | Остаток Ai |
|---|---|---|---|---|---|
| Склад 1i = 1Запас исчерпан ✓ | 410 | 9 | 230 | 7 | 0 |
| Склад 2i = 2Запас исчерпан ✓ | 6 | 020 | 3 | 1 | 0 |
| Склад 3i = 3 | 5 | 45 | 2 | 6 | 25 |
| Склад 4 (фикт.)i = 4Запас исчерпан ✓ | 010 | 0 | 0 | 0 | 0 |
| Остаток Bj | 0 | 0 | 0 | 25 |
Назначение поставки
| Поставщик | Магазин 1j = 1 | Магазин 2j = 2Спрос закрыт ✓ | Магазин 3j = 3Спрос закрыт ✓ | Магазин 4j = 4 | Остаток Ai |
|---|---|---|---|---|---|
| Склад 1i = 1Запас исчерпан ✓ | 410 | 9 | 230 | 7 | 0 |
| Склад 2i = 2Запас исчерпан ✓ | 6 | 020 | 3 | 1 | 0 |
| Склад 3i = 3 | 50 | 45 | 2 | 6 | 25 |
| Склад 4 (фикт.)i = 4Запас исчерпан ✓ | 010 | 0 | 0 | 0 | 0 |
| Остаток Bj | 0 | 0 | 0 | 25 |
Назначение поставки
| Поставщик | Магазин 1j = 1Спрос закрыт ✓ | Магазин 2j = 2Спрос закрыт ✓ | Магазин 3j = 3Спрос закрыт ✓ | Магазин 4j = 4 | Остаток Ai |
|---|---|---|---|---|---|
| Склад 1i = 1Запас исчерпан ✓ | 410 | 9 | 230 | 7 | 0 |
| Склад 2i = 2Запас исчерпан ✓ | 6 | 020 | 3 | 1 | 0 |
| Склад 3i = 3 | 50 | 45 | 2 | 625 | 0 |
| Склад 4 (фикт.)i = 4Запас исчерпан ✓ | 010 | 0 | 0 | 0 | 0 |
| Остаток Bj | 0 | 0 | 0 | 0 |
Начальный опорный план готов
| Поставщик | Магазин 1j = 1 | Магазин 2j = 2 | Магазин 3j = 3 | Магазин 4j = 4 | Ai |
|---|---|---|---|---|---|
| Склад 1i = 1 | 410 | 9 | 230 | 7 | 40 |
| Склад 2i = 2 | 6 | 020 | 3 | 1 | 20 |
| Склад 3i = 3 | 50 | 45 | 2 | 625 | 30 |
| Склад 4 (фикт.)i = 4 | 010 | 0 | 0 | 0 | 10 |
| Bj | 20 | 25 | 30 | 25 |
Начальный допустимый план еще не гарантирует минимум затрат. Следующий этап — проверка свободных клеток методом потенциалов.
Итерация 1: Контур перераспределения
| Поставщик | Магазин 1j = 1 | Магазин 2j = 2 | Магазин 3j = 3 | Магазин 4j = 4 | Ai | Ui |
|---|---|---|---|---|---|---|
| Склад 1i = 1 | 410 | 396 | 230 | 572 | 40 | U1 = 0 |
| Склад 2i = 2 | 165 | 020 -θ | -134 | 210 +θ-1 | 20 | U2 = -3 |
| Склад 3i = 3 | 50 | 45 +θ | 32-1 | 625 -θ | 30 | U3 = 1 |
| Склад 4 (фикт.)i = 4 | 010 | -101 | -202 | 10-1 | 10 | U4 = -4 |
| Bj | 20 | 25 | 30 | 25 | ||
| Vj | V1 = 4 | V2 = 3 | V3 = 2 | V4 = 5 |
Расчет потенциалов и оценок по клеткам
Принимаем U1 = 0. В базисе Ui + Vj = Cij:
Для каждой свободной клетки:
X2,4 (+θ) → X2,2 (-θ) → X3,2 (+θ) → X3,4 (-θ) → начало
θ = 20. Из базиса выходит клетка (2, 2). В плюсах прибавляем θ, в минусах вычитаем θ. Баланс каждой строки и столбца сохраняется.
Итерация 2: Контур перераспределения
| Поставщик | Магазин 1j = 1 | Магазин 2j = 2 | Магазин 3j = 3 | Магазин 4j = 4 | Ai | Ui |
|---|---|---|---|---|---|---|
| Склад 1i = 1 | 410 +θ | 396 | 230 -θ | 572 | 40 | U1 = 0 |
| Склад 2i = 2 | 066 | -101 | -235 | 120 | 20 | U2 = -4 |
| Склад 3i = 3 | 50 -θ | 425 | 320 +θ-1 | 65 | 30 | U3 = 1 |
| Склад 4 (фикт.)i = 4 | 010 | -101 | -202 | 10-1 | 10 | U4 = -4 |
| Bj | 20 | 25 | 30 | 25 | ||
| Vj | V1 = 4 | V2 = 3 | V3 = 2 | V4 = 5 |
Расчет потенциалов и оценок по клеткам
Принимаем U1 = 0. В базисе Ui + Vj = Cij:
Для каждой свободной клетки:
X3,3 (+θ) → X3,1 (-θ) → X1,1 (+θ) → X1,3 (-θ) → начало
θ = 0. Из базиса выходит клетка (3, 1). Это вырожденный сдвиг: перевозки и стоимость не меняются, но меняется базис. Затем заново определяем потенциалы.
Итерация 3: Контур перераспределения
| Поставщик | Магазин 1j = 1 | Магазин 2j = 2 | Магазин 3j = 3 | Магазин 4j = 4 | Ai | Ui |
|---|---|---|---|---|---|---|
| Склад 1i = 1 | 410 +θ | 495 | 230 -θ | 671 | 40 | U1 = 0 |
| Склад 2i = 2 | -167 | -101 | -336 | 120 | 20 | U2 = -5 |
| Склад 3i = 3 | 451 | 425 | 20 +θ | 65 -θ | 30 | U3 = 0 |
| Склад 4 (фикт.)i = 4 | 010 -θ | 000 | -202 | 200 +θ-2 | 10 | U4 = -4 |
| Bj | 20 | 25 | 30 | 25 | ||
| Vj | V1 = 4 | V2 = 4 | V3 = 2 | V4 = 6 |
Расчет потенциалов и оценок по клеткам
Принимаем U1 = 0. В базисе Ui + Vj = Cij:
Для каждой свободной клетки:
X4,4 (+θ) → X4,1 (-θ) → X1,1 (+θ) → X1,3 (-θ) → X3,3 (+θ) → X3,4 (-θ) → начало
θ = 5. Из базиса выходит клетка (3, 4). В плюсах прибавляем θ, в минусах вычитаем θ. Баланс каждой строки и столбца сохраняется.
Итерация 4: Контур перераспределения
| Поставщик | Магазин 1j = 1 | Магазин 2j = 2 | Магазин 3j = 3 | Магазин 4j = 4 | Ai | Ui |
|---|---|---|---|---|---|---|
| Склад 1i = 1 | 415 +θ | 495 | 225 -θ | 473 | 40 | U1 = 0 |
| Склад 2i = 2 | 165 | 100 +θ-1 | -134 | 120 -θ | 20 | U2 = -3 |
| Склад 3i = 3 | 451 | 425 -θ | 25 +θ | 462 | 30 | U3 = 0 |
| Склад 4 (фикт.)i = 4 | 05 -θ | 000 | -202 | 05 +θ | 10 | U4 = -4 |
| Bj | 20 | 25 | 30 | 25 | ||
| Vj | V1 = 4 | V2 = 4 | V3 = 2 | V4 = 4 |
Расчет потенциалов и оценок по клеткам
Принимаем U1 = 0. В базисе Ui + Vj = Cij:
Для каждой свободной клетки:
X2,2 (+θ) → X2,4 (-θ) → X4,4 (+θ) → X4,1 (-θ) → X1,1 (+θ) → X1,3 (-θ) → X3,3 (+θ) → X3,2 (-θ) → начало
θ = 5. Из базиса выходит клетка (4, 1). В плюсах прибавляем θ, в минусах вычитаем θ. Баланс каждой строки и столбца сохраняется.
Оптимальное решение найдено
| Поставщик | Магазин 1j = 1 | Магазин 2j = 2 | Магазин 3j = 3 | Магазин 4j = 4 | Ai | Ui |
|---|---|---|---|---|---|---|
| Склад 1i = 1 | 420 | 495 | 220 | 572 | 40 | U1 = 0 |
| Склад 2i = 2 | 066 | 05 | -235 | 115 | 20 | U2 = -4 |
| Склад 3i = 3 | 451 | 420 | 210 | 561 | 30 | U3 = 0 |
| Склад 4 (фикт.)i = 4 | -101 | -101 | -303 | 010 | 10 | U4 = -5 |
| Bj | 20 | 25 | 30 | 25 | ||
| Vj | V1 = 4 | V2 = 4 | V3 = 2 | V4 = 5 |
Расчет потенциалов и оценок по клеткам
Принимаем U1 = 0. В базисе Ui + Vj = Cij:
Для каждой свободной клетки:
В оптимальном плане = 10 — это недопоставка магазину 4. Он получает 15 вместо 25 тыс. единиц. Затраты 235 ниже исходных 245 из-за уменьшения реальных перевозок; это не улучшение снабжения.
4. Независимая проверка и Excel
18 октября 2026 года исходная и измененная задачи независимо решены SciPy/HiGHS с ограничениями равенства строк и столбцов и неотрицательностью. Минимумы совпали: 245 и 235. Проверка относится к этим условиям варианта 3.
В книге проверены формулы стоимости, потенциалов, оценок, сдвигов и баланса. Надстройка Excel «Поиск решения» при этой проверке не запускалась.
Как самостоятельно проверить в «Поиске решения»
Откройте блок «Проверка решения» в книге. Цель — ячейка E последнего плана ( для исходного, для измененного). Выберите минимум. Изменяемые ячейки — только X в нижней левой четверти клеток последней таблицы. Ограничения: суммы по каждой строке равны , суммы по каждому столбцу равны , все X ≥ 0. Метод — «Симплекс LP». Сравните целевое значение; при альтернативном оптимуме сами перевозки могут отличаться.
Планы книги фиксируют последовательность выбранных базисов. Изменение входа пересчитывает формулы, но не запускает оптимизацию заново: для новых условий используйте решатель.
5. Общий случай и подготовка к защите
Основа: пособие Смородинского С.С. и Батина Н.В., разделы 5.1–5.6, с. 56–78. В листе задания используется другая нумерация разделов (4.1–4.5). Точные два вопроса преподавательницы пока не подтверждены аудиозаписью в NotebookLM. Ниже — учебный разбор по пособию.
В числовых примерах ниже используем масштаб таблицы: тысячи единиц товара. Если преподаватель говорит буквально о 10 штуках, это q = 0,01 в нашей таблице. Сначала уточняем единицы измерения.
Что делать, если на одном складе не хватает товара?
Уточнить новый запас этого склада и сравнить общие суммы. Если суммарный запас меньше суммарного спроса, добавить фиктивного поставщика с запасом, равным дефициту, и Cфик,j = 0. Его поставка показывает, сколько соответствующий магазин недополучит. В нашем измененном варианте = 20, дефицит 10, = 10.
Недостаток на отдельном складе не всегда означает общий дефицит: его могут покрыть другие склады. Определяет тип модели именно сумма запасов.
Как распределить недопоставку между всеми магазинами по методичке?
В примере 5.4 все потребности умножаются на k = ΣA / ΣB. Фиктивный поставщик не нужен. Это одинаковая доля удовлетворенного спроса для каждого магазина.
Для A = [40,20,30] получаем k = 0,9; B′ = [18; 22,5; 27; 22,5]. Недопоставка равна [2; 2,5; 3; 2,5], то есть по 10% каждому. Дробные объемы сохраняют баланс. Если товар неделим, округление надо согласовать так, чтобы сумма новых потребностей точно равнялась запасам.
А если каждый магазин должен недополучить ровно 10 единиц?
Это другое дополнительное условие. Уменьшаем каждый спрос на q = 10: B′j = − q ≥ 0. При полном использовании запасов должно выполняться ΣB − ΣA = Nq.
В нашей задаче четыре магазина и дефицит всего 10: одинаковая недопоставка равна 10/4 = 2,5 каждому. По 10 каждому требует дефицита 40. Иначе условие несовместимо с полным вывозом товара со складов. Если оставлять часть товара разрешено, после уменьшения спроса останется избыток: его моделируют фиктивным потребителем.
Склады отправляют товар, магазины получают. Поэтому «склад недополучил» нужно уточнить: речь о потребителе или о невывезенном остатке у поставщика.
Как оставить по 10 единиц на каждом складе?
При буквальном требовании одинакового остатка используем A′i = − 10 ≥ 0. Для полного снабжения всех магазинов требуется ΣA − ΣB = 10M. Это задача об избытке, а не о дефиците.
Пример 5.5 пособия распределяет излишек в одинаковой доле: A′i = · ΣB/ΣA. Количество оставшегося товара на разных складах при этом обычно различается. Излишек без дополнительных требований описывает фиктивный потребитель с нулевыми тарифами.
Как гарантировать полное снабжение конкретного магазина?
В примере 5.3 тариф от фиктивного поставщика к защищаемому магазину заменяется большим штрафом M, остальные фиктивные тарифы остаются нулевыми. После решения обязательно проверить, что фиктивная поставка защищенному магазину равна нулю. Число 1000 в пособии — пример для его масштаба тарифов, а не универсальная гарантия для любой матрицы.
При жестком запрете недопоставки ограничение Xфик,j = 0 нужно соблюдать явно. Большой штраф выражает предпочтение, а невозможные ограничения не превращает в выполнимые.
Почему базисных клеток ровно M + N − 1? Что значит нулевая перевозка?
Одно из M+N балансовых уравнений избыточно: общий вывоз равен общей доставке. Базис содержит M+N−1 независимых клеток. Как двудольный граф строк и столбцов он представляет связное дерево без циклов.
При одновременном исчерпании запаса и спроса исключают только строку или только столбец. Возникает базисная перевозка 0. Нельзя считать все нули свободными: нулевая базисная клетка участвует в уравнениях потенциалов и построении цикла. Дополнительные нули вводят без замыкания цикла.
Что означают потенциалы, псевдостоимость и отрицательная оценка?
Для каждой базисной клетки + = . Один потенциал выбирается произвольно (здесь = 0), остальные определяются по базису. Потенциалы могут быть отрицательными.
Если все оценки свободных клеток неотрицательны, план оптимален. Отрицательная оценка означает возможность улучшить план вводом этой клетки в базис. Выбираем наиболее отрицательную; при совпадении — первую по индексам. Величина − показывает снижение стоимости на единицу сдвига по соответствующему циклу.
Как строить цикл, выбрать θ и пересчитать стоимость?
Начать в выбранной свободной клетке со знаком плюс. Переходить по строкам и столбцам через базисные клетки, чередуя знаки, и замкнуть маршрут. В дереве базиса добавление одного ребра создает единственный цикл.
Плюсовые перевозки увеличиваем на θ, минусовые уменьшаем. Из достигших нуля минусовых клеток исключаем ровно одну. Строковые и столбцовые суммы сохраняются. Затем потенциалы и оценки рассчитываются заново.
Почему при θ = 0 стоимость не уменьшается? Когда оптимум не единственный?
θ = 0 появляется, если среди минусовых вершин есть базисный ноль. Сдвиг меняет базис, сохраняя план и стоимость. Это показано во второй итерации измененной задачи.
Свободная клетка с D = 0 допускает ввод без изменения стоимости. Если по ее циклу возможен положительный сдвиг , получается другой оптимальный план. При меняется лишь базис; одного нулевого шага недостаточно, чтобы показать другой план перевозок.
Почему Excel и сайт могут показывать разные промежуточные планы?
Равные тарифы, равные отрицательные оценки и несколько кандидатов на выход допускают выбор. Если все правила метода соблюдены, конечная минимальная стоимость одинакова, хотя число итераций и конкретный оптимальный план могут различаться. Образец Максима решает вариант 4; перенос его чисел в наш вариант 3 был бы ошибкой.
Оценки относятся к конкретному базису: нельзя переносить старые и на план после сдвига. В старой нашей книге промежуточная подпись повторяла предыдущие потенциалы; в новом разборе при E=255 используются U=[0,−3,1], V=[4,3,2,4].