3 Координати джерел і розподіл поставок
Розв’язок для двох джерел: S₁ = (2; 3), S₂ = (14; 9). Перше джерело обслуговує клієнтів 1–5, друге - клієнтів 6–10. У таблиці 2 наведено всі доданки цільової функції, які можна перевірити без програмного забезпечення.
Таблиця 2 - Перевірка відстаней і транспортної роботи
Клієнт |
Джерело |
qᵢ, т/добу |
dᵢ, км |
qᵢdᵢ, т·км/добу |
1 |
S1 |
10 |
2 |
20 |
2 |
S1 |
10 |
2 |
20 |
3 |
S1 |
15 |
2 |
30 |
4 |
S1 |
15 |
2 |
30 |
5 |
S1 |
20 |
0 |
0 |
6 |
S2 |
20 |
2 |
40 |
7 |
S2 |
20 |
2 |
40 |
8 |
S2 |
10 |
2 |
20 |
9 |
S2 |
10 |
2 |
20 |
10 |
S2 |
30 |
0 |
0 |
Разом |
- |
160 |
16 |
220 |
Наприклад, відстань від клієнта 1 до S₁ становить √((2 − 0)² + (3 − 3)²) = 2 км. Його внесок у зважену суму дорівнює 10 · 2 = 20 т·км/добу. Клієнти 5 і 10 розташовані безпосередньо в точках джерел, тому відповідні відстані дорівнюють нулю. У цій моделі таке розміщення дозволене.
(6)
(7)
(8)
Отже, зважена сума відстаней становить W = 220 т·км/добу, а транспортні витрати T₂ = cW = 220 ум. грош. од./добу. Звичайна незважена сума відстаней дорівнює 16 км. Ці величини мають різні одиниці й не є взаємозамінними. Середня відстань перевезення одиниці продукції дорівнює W / 160 = 1,375 км.
4 Схема розміщення і перевірка координат
На рисунку 1 показано клієнтів, їхній попит та зв’язки з джерелами. Координати джерел збігаються з координатами клієнтів 5 і 10. Розмір круглої позначки пропорційний попиту; білий хрест позначає джерело.
Рисунок 1 - Оптимальне розміщення двох джерел і клієнтів
Для групи 1–5 нижню межу можна отримати з нерівності трикутника. Клієнти 1 і 2 віддалені один від одного на 4 км і мають однаковий попит 10. Для будь-якого розміщення джерела S виконується 10‖S − A₁‖ + 10‖S − A₂‖ ≥ 40. Аналогічно для клієнтів 3 і 4 маємо нижню межу 15 · 4 = 60. Внесок клієнта 5 невід’ємний. Отже:
(9)
У точці S₁ = (2; 3) ця межа досягається: відстань до кожного з чотирьох крайніх клієнтів становить 2 км, а до клієнта 5 - 0. Для групи 6–10 аналогічно отримуємо нижню межу 20 · 4 + 10 · 4 = 120, яка досягається в S₂ = (14; 9). Таким чином, для зазначеного розподілу мінімальна зважена сума точно дорівнює 100 + 120 = 220.
Цей доказ перевіряє координати всередині обраних груп, але сам по собі ще не доводить оптимальність поділу клієнтів. Тому додатково перевірено всі можливі розбиття на дві непорожні групи. Результат повного перебору наведено далі.
5 Перевірка глобального результату
Для кожної непорожньої підмножини клієнтів G розв’язувалася одноджерельна задача Вебера. Її цільова функція опукла, тому знайдена точка з нульовим субградієнтом дає глобальний мінімум для цієї групи [1; 2]. Загалом для десяти клієнтів існує 2¹⁰ − 1 = 1023 непорожні підмножини.
(10)
У коді спочатку перевіряється можливість оптимуму в одній із точок клієнтів. Якщо такої точки немає, застосовуються чисельна мінімізація BFGS і уточнення ітераціями Вайсфельда. Для точки, що не збігається з клієнтом, крок має вигляд [2]:
(11)
У точці Aₖ звичайна формула містить ділення на нуль. Тому в ній перевіряється умова оптимальності ‖∑ᵢ≠ₖ qᵢ(Aₖ − Aᵢ)/‖Aₖ − Aᵢ‖₂‖₂ ≤ qₖ. Зважений центр координат використовується лише як початкове наближення; він не є загальним розв’язком задачі мінімуму суми відстаней.
Для p = 2 достатньо перебрати 511 = (2¹⁰ − 2)/2 різних розбиттів. Щоб не враховувати перестановку джерел двічі, клієнт 1 завжди залишається у першій групі. Для кожного розбиття обчислюється φ(G) + φ(V \ G), де V - множина всіх десяти клієнтів.
Найкраще розбиття - {1, 2, 3, 4, 5} та {6, 7, 8, 9, 10}, його значення 220. Найменша нижня межа серед усіх інших розбиттів становить приблизно 316,619038. Вона строго перевищує 220, тому інший поділ клієнтів не може покращити знайдений результат.
Для всіх p = 1, …, 10 використано динамічне програмування за підмножинами. D(M, k) - найменша вартість обслуговування клієнтів M за допомогою k непорожніх груп. Рекурентне співвідношення:
(12)
Початкові значення: D(∅, 0) = 0; неможливим станам відповідає +∞. Умова min(M) ∈ G лише прибирає дублювання перестановок груп. Для обраного тарифу Tₚ = D(V, p). Пошук не обмежує джерела заданим набором координат: кожна φ(G) мінімізується на площині.
Числову похибку перевірено через опуклу нижню оцінку L(G) = φ(S) − ‖g(S)‖ · maxᵢ∈G‖S − Aᵢ‖, де g(S) - градієнт. Оптимум лежить в опуклій оболонці клієнтів. Максимальний розрив між верхньою та нижньою оцінками підзадач був меншим за 10⁻⁷; для десяти груп сумарний контрольний допуск не перевищує 10⁻⁶.
