- •Методичні вказівки
- •1. Опис дисципліни Мета і завдання вивчення дисципліни
- •2. Структура курсової роботи
- •На тему “розробка програмного комплексу по оптимізації вантажних перевезень на транспортної мережі”
- •До виконанні курсової роботи Завдання на курсову роботу
- •Методичні вказівки до виконання курсової роботи
- •Опорний план за методом мінімального вузла
- •Опорний план за методом мінімального вузла
- •Опорний план за методом мінімального вузла
- •Опорний план за методом випадкового
- •Перша ітерація тт
- •Друга ітерація тт
- •Третя ітерація тт
- •Четверта ітерація тт
- •П’ята ітерація тт
- •Шоста ітерація тт
- •Тт після розподілу вантажу у клітинку а3в2
- •Тт після розподілу вантажу у клітинку а1в4
- •Тт після розподілу вантажу у клітинку а2в1
- •Тт після розподілу вантажу у клітинку а1в4
- •Перша ітерація тт
- •Друга ітерація тт
- •Модифікований метод дейкстри (метод new) зведення сітьового представлення перевезень вантажу на тм до табличного виду – тт
- •1. Задача пошуку найкоротшого шляху між двома заданими вершинами
- •2. Задача пошуку найкоротших шляхів між заданими множинами вершин
- •Результуюча матриця найкоротших відстаней
- •Матрично-мережева модель управління перевезеннями вантажів в тс
- •Масив відстаней між сусідніми вузлами тм
- •Матриця транспортних кореспонденцій між всіма вузлами тм
- •Матриця найкоротших відстаней на тм
- •Опорний план перевезень
- •Тт з потенціалами
- •4. Література
- •Варіанти завдань по курсовій роботі
- •Обсяги поставок і замовлень продукції до структур тм з номерами варіантів від 1-го до 15-го
- •Обсяги поставок і замовлень продукції до структур тм з номерами варіантів від 16-го до 30-го
- •Вартість перевезення одиниці вантажу між сусідніми вузлами тм
- •Вантажу методом північна – західного кута
- •Текст процедури побудови опорного плану перевезень вантажу методом північна – східного кута
- •Текст процедури побудови опорного плану перевезень вантажу методом південна – західного кута
- •Текст процедури побудови опорного плану перевезень вантажу методом південна – східного кута
- •Текст процедури побудови опорного плану перевезень
- •Текст процедури побудови опорного плану перевезень
- •Текст процедури побудови опорного плану перевезень
- •Текст процедури побудови опорного плану перевезень
- •Текст процедури побудови опорного плану перевезень
- •Текст процедури побудови опорного плану перевезень
- •Текст процедури побудови опорного плану перевезень
- •Текст процедури побудови опорного плану перевезень
- •Текст програми на мові Delphi, яка реалізує симплексний метод рішення тз
- •Текст процедури на мові Pascal, яка реалізує алгоритм Дейкстри
- •Текст процедури на мові Delphy, яка реалізує метод графів
- •Завдання на курсову роботу студента
Текст процедури побудови опорного плану перевезень
вантажу методом мінімального вузла призначення ТТ
// A[m, n] – матриця транспортних комунікацій (суміжності), де у A[i, j]-ї
клітинці знаходяться вартість транспортування одиниці вантажу із і-того транспортного вузла в j-й
// TT[m+1, n+1] – транспортна таблиця, де у (n+1)-ї колонці знаходяться обсяги
запасів, а у (m+1)-ї строки – обсяги заявок вантажу
// m – кількість постачальників вантажу
// n – кількість споживачів вантажу
for j:=1 to n do
for i:=1 to m do
A[m+2,j] := A[m+2,j] + A[i,j];
for j:=1 to n do
begin
min := A[m+2,1];
ind := 1;
for i:=2 to n do
if (A[m+2,i] < min) then
begin
min := A[m+2,i];
ind := i;
end;
A[m+2,ind] := 999;
A[m+3,j] := ind;
end;
sum_vid := 1; // Сумарний обсяг відправлення вантажу
sum_pryz := 1; // Сумарний обсяг призначення вантажу
while ((sum_vid <> 0) and (sum_pryz <> 0)) do
begin
for j:=1 to n do
begin
min := A [1,A[m+3,j]];
i_ := 1;
j_ := A[m+3,j];
for i:=2 to m do
if (A[i,A[m+3,j]] < min) then
begin
min := A[i,A[m+3,j]];
i_ := i;
end;
if (min <> 999) then
begin
if (A[m+1,j_] <= A[i_,n+1]) then
TT[i_,j_] := A[m+1,j_]
else
TT[i_,j_] := A[i_,5];
A[i_,j_] := 999;
A[m+1,j_] := A[m+1,j_] - TT[i_,j_];
A[i_,n+1] := A[i_,n+1] - TT[i_,j_];
if (A[m+1,j_] = 0) then
for l:=1 to m do
A[l,j_] := 999;
if (A[i_,n+1] = 0) then
for l:=1 to n do
A[i_,l] := 999;
end;
end;
sum_vid := 0;
for i:=1 to m do
sum_vid := sum_vid + A[i,n+1];
sum_pryz := 0;
for j:=1 to n do
sum_pryz := sum_pryz + A[m+1,j];
end;
Додаток 13
Текст процедури побудови опорного плану перевезень
вантажу методом мінімального вузла відправлення-призначення ТТ
// A[m, n] – матриця транспортних комунікацій (суміжності), де у A[i, j]-ї
клітинці знаходяться вартість транспортування одиниці вантажу із і-того транспортного вузла в j-й
// TT[m+1, n+1] – транспортна таблиця, де у (n+1)-ї колонці знаходяться обсяги
запасів, а у (m+1)-ї строки – обсяги заявок вантажу
// m – кількість постачальників вантажу
// n – кількість споживачів вантажу
for j:=1 to n do
begin
for i:=1 to m do
A[m+2,j] := A[m+2,j] + A[i,j];
A[m+3,j] := A[m+2,j];
end;
for i:=1 to m do
for j:=1 to n do
A[i,n+2] := A[i,n+2] + A[i,j];
for j:= (n+1) To (m+n) Do
A[m+3,j] := A[m+3,j] + A[j-4,n+2];
for j:=1 to (m+n) Do
begin
min := A[m+3,1];
ind := 1;
for i:=2 To (m+n) Do
if (A[m+3,i] < min) then
begin
min := A[m+3,i];
ind := i;
end;
A[m+3,ind] := 999;
if (ind <= n) then
begin
for k:=1 To n do
if (A[m+2,k] = min) then
A[m+4,j] := k;
A[m+5,j] := 2;
end
else
begin
for k:= 1 to m do
if (A[k,n+2] = min) then
A[m+4,j] := k;
A[m+5,j] := 1;
end;
end;
sum_vid := 1; // Сумарний обсяг відправлення вантажу
sum_pryz := 1; // Сумарний обсяг призначення вантажу
while ((sum_vid <> 0) and (sum_pryz <> 0)) do
begin
for j:=1 to (m+n) do
if (A[m+5,j] = 1) then
begin
min := A[A[m+4,j],1];
i_ := A[m+4,j];
j_ := 1;
for i:=2 to n do
if (A[A[m+4,j],i] < min) then
begin
min := A[A[m+4,j],i];
j_ := i;
end;
if (min <> 999) then
begin
if (A[m+1,j_] <= A[i_,n+1]) then
TT[i_,j_] := A[m+1,j_]
else
TT[i_,j_] := A[i_,n+1];
A[i_,j_] := 999;
A[m+1,j_] := A[m+1,j_] - TT[i_,j_];
A[i_,n+1] := A[i_,n+1] - TT[i_,j_];
if (A[m+1,j_] = 0) then
for l:=1 to m do
A[l,j_] := 999;
if (A[i_,n+1] = 0) then
for l:=1 to n do
A[i_,l] := 999;
end;
end
else
begin
min := A[1,A[m+4,j]];
i_ := 1;
j_ := A[m+4,j];
for i:=2 to m do
if (A[i,A[m+4,j]] < min) then
begin
min := A[i,A[m+4,j]];
i_ := i;
end;
if (min <> 999) then
begin
if (A[m+1,j_] <= A[i_,n+1]) then
TT[i_,j_] := A[m+1,j_]
else
TT[i_,j_] := A[i_,n+1];
A[i_,j_] := 999;
A[m+1,j_] := A[m+1,j_] - TT[i_,j_];
A[i_,n+1] := A[i_,n+1] - TT[i_,j_];
if (A[m+1,j_] = 0) then
for l:=1 to m do
A[l,j_] := 999;
if (A[i_,n+1] = 0) then
for l:=1 to n do
A[i_,l] := 999;
end;
end;
sum_vid := 0;
for i:=1 To m do
sum_vid := sum_vid + A[i,n+1];
sum_pryz := 0;
for j:=1 To n do
sum_pryz := sum_pryz + A[m+1,j];
end;
Додаток 14