Автор работы: Пользователь скрыл имя, 04 Ноября 2013 в 21:49, курсовая работа
Целью данной работы является обзор основ логистики, а также изучение методов оптимизации, применяемых в данной области. В настоящее время производственная и экономическая сферы достигли высокого уровня развития, что делает задачи снабжения и распределения особенно актуальными. В данной работе особое внимание будет уделено Транспортной задаче. Будут рассмотрены несколько методов её решения и создана программа, реализующая один из них.
Введение 4
1.1. Основы логистики 5
2. Задача о нахождение кратчайшего пути 7
2.1. Описание задачи и способы решения 7
2.2. Формальное определение 8
2.3. Неформальное объяснение 8
3. Транспортная задача 9
3.1. Определение 9
3.2. Историческая справка 10
3.3. Балансировка задачи 11
3.4. Поиск начального решения 12
3.5. Метод северо-западного угла 12
3.6. Метод минимальных тарифов 13
3.7. Метод Фогеля 17
3.8. Метод Потенциалов 18
3.9. Решение транспортной задачи симплекс-методом 24
4. Реализация программы 26
Список использованных источников 28
ПРИЛОЖЕНИЕ A 29
double p[3][4] = {0, 0 , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; //распределение
int i, j, i1, j1;
double min = 100000;
double S = 0;
//Ввод данных
a[0] = Edit13->Text.ToDouble();
a[1] = Edit14->Text.ToDouble();
a[2] = Edit15->Text.ToDouble();
b[0] = Edit16->Text.ToDouble();
b[1] = Edit17->Text.ToDouble();
b[2] = Edit18->Text.ToDouble();
b[3] = Edit19->Text.ToDouble();
c[0][0] = Edit1->Text.ToDouble();
c[0][1] = Edit4->Text.ToDouble();
c[0][2] = Edit5->Text.ToDouble();
c[0][3] = Edit6->Text.ToDouble();
c[1][0] = Edit2->Text.ToDouble();
c[1][1] = Edit7->Text.ToDouble();
c[1][2] = Edit8->Text.ToDouble();
c[1][3] = Edit9->Text.ToDouble();
c[2][0] = Edit3->Text.ToDouble();
c[2][1] = Edit10->Text.ToDouble();
c[2][2] = Edit11->Text.ToDouble();
c[2][3] = Edit12->Text.ToDouble();
do
{
//Проверка правильности ввода
if((a[0]+a[1]+a[2]) != (b[0] + b[1] + b[2] + b[3]))
{
ShowMessage("Запасы не равны
break;
}
//Определение минимального
for(i = 0; i <= 2; i++)
{
if(a[i] == 0)
continue;
for(j = 0; j <= 3; j++)
{
if(b[j] == 0)
continue;
if(min > c[i][j])
{
min = c[i][j];
i1 = i;
j1 = j;
}
}
}
min = 100000;
//Распределение запасов
if(a[i1] >= b[j1])
{
p[i1][j1] = b[j1];
a[i1] = a[i1] - b[j1];
b[j1] = 0;
}
else
{
p[i1][j1] = a[i1];
b[j1] = b[j1] - a[i1];
a[i1] = 0;
}
if((a[0] == 0) && (a[1] == 0) && (a[2] == 0) && (b[0] == 0) && (b[1] == 0) && (b[2] == 0) && (b[3] == 0))
break;
}
while(TRUE);
//Вывод данных
Label21->Caption = p[0][0];
Label22->Caption = p[0][1];
Label23->Caption = p[0][2];
Label24->Caption = p[0][3];
Label25->Caption = p[1][0];
Label26->Caption = p[1][1];
Label27->Caption = p[1][2];
Label28->Caption = p[1][3];
Label29->Caption = p[2][0];
Label30->Caption = p[2][1];
Label31->Caption = p[2][2];
Label32->Caption = p[2][3];
S = p[0][0]*c[0][0] + p[0][1]*c[0][1] + p[0][2]*c[0][2] + p[0][3]*c[0][3] + p[1][0]*c[1][0] + p[1][1]*c[1][1] +
p[1][2]*c[0][2] + p[1][3]*c[1][3] + p[2][0]*c[2][0] + p[2][1]*c[2][1] + p[2][2]*c[2][2] + p[2][3]*c[2][3];
Label34->Caption = S;
Информация о работе Оптимизация в логистике. Транспортная задача