Оптимизация в логистике. Транспортная задача

Автор работы: Пользователь скрыл имя, 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

Файлы: 1 файл

Методы Курсовая.doc

— 1.05 Мб (Скачать файл)

        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;


Информация о работе Оптимизация в логистике. Транспортная задача