Транспортная задача

Автор работы: Пользователь скрыл имя, 04 Января 2013 в 12:30, курсовая работа

Описание работы

При появлении мощных ЭВМ стало возможным проведение сложных и емких расчетов, следовательно, появилась возможность реализовать на практике многие придуманные ранее теории. Одной из таких теорий является решение «транспортных задач». В связи с ростом промышленности и грузообороте без математической системы оптимизации обойтись было нельзя. Данные методы стали, применяться в промышленности, транспорте и др. областях.
В данной работе автор поставил задачу:
Изучить методы решения транспортной задачи.
Написать программу вычисляющую, одним из способов, решение Т.З.

Содержание работы

Введение
1.Транспортная задача.
1.1 Постановка задачи
1.2 Закрытая и открытая модели транспортной задачи
1.3 Опорный план
2. Решение транспортных задач.
2.1 Метод северо-западного угла
2.2 Метод минимального элемента
2.3 Метод аппроксимации
2.4 Потенциалы.
2.5 Критерий оптимальности плана

3. Программа
3.1 Инструкция по эксплуатации программы (Delphi 7)
3.2 Код программы
3.3 Разработка программы при помощи MS Excel.
4. Практическое применение методов.
Заключение
Список использованной литературы.

Файлы: 1 файл

КУРСОВИК ДЛЯ ПЕЧАТИ.doc

— 488.00 Кб (Скачать файл)

        edit12.Text:=inttostr(b3-strtoint(edit9.Text));

        end;

      end;

    end;

    if strtoint(edit1.Text)+strtoint(edit4.Text)>b1 then

    begin

    edit4.Text:=inttostr(b1-strtoint(edit1.Text));

    edit5.Text:=inttostr(a2-strtoint(edit4.Text));

      if strtoint(edit5.Text)<=b2 then

      begin

      edit8.Text:=inttostr(a3);

        if (strtoint(edit5.Text)+strtoint(edit8.Text))<=b2 then

        begin

        edit11.Text:=inttostr(b2-(strtoint(edit5.Text)+strtoint(edit8.Text)));

        edit12.Text:=inttostr(a4-strtoint(edit11.Text));

        end;

        if (strtoint(edit5.Text)+strtoint(edit8.Text))>b2 then

        begin

        edit8.Text:=inttostr(b2-strtoint(edit5.Text));

        edit9.Text:=inttostr(a3-strtoint(edit8.Text));

        edit12.Text:=inttostr(a4);

        end;

      end;

      if strtoint(edit5.Text)>b2 then

      begin

      edit5.Text:=inttostr(b2);

      edit6.Text:=inttostr(a2-(strtoint(edit4.Text)+strtoint(edit5.Text)));

      edit9.Text:=inttostr(a3);

      edit12.Text:=inttostr(a4);

      end;

    end;

  end;

  if strtoint(edit1.Text)>b1 then

  begin

  edit1.Text:=inttostr(b1);

  edit2.Text:=inttostr(a1-strtoint(edit1.Text));

    if strtoint(edit2.Text)<=b2 then

    begin

    edit5.Text:=inttostr(a2);

      if strtoint(edit2.Text)+strtoint(edit5.Text)<=b2 then

      begin

      edit8.Text:=inttostr(a3);

        if strtoint(edit2.Text)+strtoint(edit5.Text)+strtoint(edit8.Text)<=b2 then

        begin

          edit11.Text:=inttostr(b2-(strtoint(edit2.Text)+strtoint(edit5.Text)+strtoint(edit8.Text)));

          edit12.Text:=inttostr(b3);

        end;

        if strtoint(edit2.Text)+strtoint(edit5.Text)+strtoint(edit8.Text)>b2 then

        begin

        edit8.Text:=inttostr(b2-(strtoint(edit2.Text)+strtoint(edit5.Text)));

        edit9.Text:=inttostr(a3-strtoint(edit8.Text));

        edit12.Text:=inttostr(a4);

        end;

      end;

      if strtoint(edit2.Text)+strtoint(edit5.Text)>b2 then

      begin

      edit5.Text:=inttostr(b2-strtoint(edit2.Text));

      edit6.Text:=inttostr(a2-strtoint(edit5.Text));

      edit9.Text:=inttostr(a3);

      edit12.Text:=inttostr(a4);

      end;

    end;

    if strtoint(edit2.Text)<=b2 then

    begin

    edit2.Text:=inttostr(b2);

    edit3.Text:=inttostr(a1-(strtoint(edit1.Text)+strtoint(edit2.Text)));

    edit6.Text:=inttostr(a2);

    edit9.Text:=inttostr(a3);

    edit12.Text:=inttostr(a4);

    end;

  end;

  begin

    if (edit1.Text)<>('') then begin w1:=(strtoint(edit1.Text)*strtoint(edit21.Text)) end else w1:=(0) ;

    if (edit2.Text)<>('') then begin w2:=(strtoint(edit2.Text)*strtoint(edit22.Text)) end else w2:=(0);

    if (edit3.Text)<>('') then begin w3:=(strtoint(edit3.Text)*strtoint(edit23.Text)) end else w3:=(0);

    if (edit4.Text)<>('') then begin w4:=(strtoint(edit4.Text)*strtoint(edit24.Text)) end else w4:=(0);

    if (edit5.Text)<>('') then begin w5:=(strtoint(edit5.Text)*strtoint(edit25.Text)) end else w5:=(0);

    if (edit6.Text)<>('') then begin w6:=(strtoint(edit6.Text)*strtoint(edit26.Text)) end else w6:=(0);

    if (edit7.Text)<>('') then begin w7:=(strtoint(edit7.Text)*strtoint(edit27.Text)) end else w7:=(0);

    if (edit8.Text)<>('') then begin w8:=(strtoint(edit8.Text)*strtoint(edit28.Text)) end else w8:=(0);

    if (edit9.Text)<>('') then begin w9:=(strtoint(edit9.Text)*strtoint(edit29.Text)) end else w9:=(0);

    if (edit10.Text)<>('') then begin w10:=(strtoint(edit10.Text)*strtoint(edit30.Text)) end else w10:=(0);

    if (edit11.Text)<>('') then begin w11:=(strtoint(edit11.Text)*strtoint(edit31.Text)) end else w11:=(0);

    if (edit12.Text)<>('') then begin w12:=(strtoint(edit12.Text)*strtoint(edit32.Text)) end else w12:=(0);

    edit33.Text:=inttostr(w1+w2+w3+w4+w5+w6+w7+w8+w9+w10+w11+w12);

  end;

end; //конец подсчета

end; //конечный

procedure TForm1.Button2Click(Sender: TObject);

begin

edit13.Color:=clwindow;

edit14.Color:=clwindow;

edit15.Color:=clwindow;

edit16.Color:=clwindow;

edit17.Color:=clwindow;

edit18.Color:=clwindow;

edit19.Color:=clwindow;

button1.Enabled:=true;

button2.Enabled:=false;

button3.Enabled:=false;

edit1.Text:=('');

edit2.Text:=('');

edit3.Text:=('');

edit4.Text:=('');

edit5.Text:=('');

edit6.Text:=('');

edit7.Text:=('');

edit8.Text:=('');

edit9.Text:=('');

edit10.Text:=('');

edit11.Text:=('');

edit12.Text:=('');

edit13.Text:=('');

edit14.Text:=('');

edit15.Text:=('');

edit16.Text:=('');

edit17.Text:=('');

edit18.Text:=('');

edit19.Text:=('');

edit20.Text:=('');

edit21.Text:=inttostr(0);

edit22.Text:=inttostr(0);

edit23.Text:=inttostr(0);

edit24.Text:=inttostr(0);

edit25.Text:=inttostr(0);

edit26.Text:=inttostr(0);

edit27.Text:=inttostr(0);

edit28.Text:=inttostr(0);

edit29.Text:=inttostr(0);

edit30.Text:=inttostr(0);

edit31.Text:=inttostr(0);

edit32.Text:=inttostr(0);

edit33.Text:=('');

edit20.Color:=clwindow;

end;

procedure TForm1.Button3Click(Sender: TObject);

begin

button1.Enabled:=true;

edit13.Color:=clwindow;

edit14.Color:=clwindow;

edit15.Color:=clwindow;

edit16.Color:=clwindow;

edit17.Color:=clwindow;

edit18.Color:=clwindow;

edit19.Color:=clwindow;

edit20.Color:=clwindow;

end;

end.

Программа прилагается. Находится в той же папке.

3.2 Excel. Разработка программы при помощи средств MS Excel:

 

Кроме разработанной мною программы  на Delphi 7, я решил, что будет целесообразно разработать программу, составляющую опорный план методом СЗУ используя средства MS Excel.

Это программа получилась сверхэргономична. Здесь ненужно нажимать кнопки, программа  сама, по мере ввода исходных данных автоматически, в режиме реального  времени подсчитывает результат. Форматировать  данные можно в любое время.

Функции:

=ЕСЛИ( A4<=E1;  A4;E1) – для заполнения рабочих полей матрицы.

=A1*A8+A2*A9+A3*A10+B1*B8+B2*B9+B3*B10+C1*C8+C2*C9+C3*C10+D1*D8+D2*D9+D3*D10 – для подсчета итоговой суммы.

=A4-A1-A2 – для подсчета промежуточных  результатов.

160

60

0

0

220

60

0

0

0

160

130

40

330

330

170

40

0

0

0

250

300

300

300

300

160

220

130

290

       

0

160

130

290

       

0

0

0

250

       
               

6

6

3

5

       

4

5

3

2

       

6

3

5

4

       
               

итог

3590

           

 

Кроме того, эта  программа легко масштабируема, ее алгоритм без затруднений подстраивается, под задачу с любым числом поставщиков и заказчиков.

 

Программа прилагается  на отдельном листе Excel.

Находится в  той же папке.

 

 

 

 

 

 

 

 

 

 

 

 

 

  1. Практическое применение методов.

Введение.

Одно дело разработать  методы решения транспортных задач, написать программу, составляющую оптимальный план. 

Совсем другое дело –  применить методы и программу  на практике. Ввести программу на производство.  На самом деле это оказалось гораздо  тяжелее, чем я думал.

 

Есть много  факторов препятствующих внедрению методов на предприятие:

Непонимание  новых  разработок. 

Множество начальников, предпринимателей,  современных  предприятий не имеют достаточного образования и по этому просто не догадываются о существовании огромного количества возможностей по оптимизации производства, перевозок, использования электроэнергии и др.

 

Невиденье экономической выгоды  в их использовании.

Эта проблема так же связана, частично с необразованностью, частично от собственных побуждений управленца, остается огромное количество директоров старого, доперестроичного периода. У них свои методы «выполнения плана», минимизации затрат и увеличение прибыли. Что делать? Переучивать их? В большинстве случаев бесполезно!!!

 

Боязнь экспериментировать.

В данный момент экономика  нашей страны только выходит из кризиса, и у большинства наших предпринимателей и директоров свежи в памяти воспоминания о дефолте, экономических пирамидах и о других обманах и издевательствах государства, мошенников и крупных банков над нашей экономикой и производством.

У многих сложилось страшное мнение:  Типа тише едешь - дальше будешь, если предприятие рентабельно, то лучше ничего не трогать, даже если оно только - только покрывает расходы. А если предприятие убыточно, то тут уже ничего не поделаешь – заниматься другим делом или банкротить…

 

Принципиальное отвержение нововведений старыми директорами

Здесь большую роль играет человеческий фактор, психология отдельной личности. Боязнь за кресло директора, страх перед новыми разработками, принципы и др.

 

Бардак и неразбериха.

После проведения приватизации множество крупных предприятий построенных работать, как единое целое были разорваны на мелкие предприятия. Сразу же появилось множество начальников, директоров. У каждого свои принципы, правила и методы, в итоге мы имеем полную неразбериху. Один делает одно, его сосед другое и т.д. Один предприниматель соглашается на нововведение, другой нет. А без кооперации и совместных действии ничего здесь не сделаешь. Необходимо стабильное и грамотное управление!

 

Нехватка стимулов управляющих государственными предприятиями.

Не достаточное  упорство людей предлагающих новинки.

 

И многое другое…

 

Когда я предпринял попытку  применить «транспортную» на практике, я столкнулся со многими из вышеперечисленных  факторов:

Бардак и неразбериха.

Непонимание  новых  разработок. 

Боязнь экспериментировать.

И многое другое…

 

ОАО «Мурманский  хладокомбинат»

 

Владелец – Олесин В.А.

Предприятие, которое  я выбрал «мурманский хладокомбинат».

Изучив структуру предприятия, я понял, что применение здесь методов оптимизации грузоперевозок может дать хорошие результаты.  Рис 1.

 

 

 

 

 

  1. Администрация. Здесь располагаются офисы, столовая и другие объекты вспомогательного производства.
  2. Здания обслуживающего персонала. Сейчас – офисы.
  3. Старый хладокомбинат.

Возможность поставить фур – 12

Длинна – 170м

Количество камер – 24 (больших)

 

  1. Новый хладокомбинат.

Возможность поставить  фур – 3

Количество камер – 15 - 7 (больших, сквозных)

 

  1. Фабрика по производству мороженого.
  2. Газовая.
  3. Гараж.
  4. Проходная.
  5. Вспомогательные здания.

 

  1. Эстокада для автомобильного транспорта.

                    Вместительность – 15 большегрузных  машин

               Длинна эстокады – 240м

 

  1. Эстокада для Ж.Д транспорта.

Вместительность – 10 вагонов  2 секции

Длинна – 230м

 

Постановка  задачи:

Разработать алгоритм позволяющий упорядочить движение, при помощи задач линейного программирования, добиться гибкой системы построения опорного плана. Оптимального плана перевозок. Добиться улучшения производительности на предприятии.

 

Задача:

Упорядочить движение погрузчиков при помощи построения опорного плана перевозок.

 

Данные:

- Производительность комбината в день составляет в среднем  20 фур или в среднем 350т.

- Поставщики – фуры или вагоны у эстокады  1 – 25.

- Заказчики – морозильные камеры 1 – 31.

- Вместительность вагона – 45 т. (допустимый предел)

- Вместительность фуры – 20 т. (допустимый предел)

- Время доставки – 0,8 – 20мин.

- Максимальная грузоподъемность погрузчика – 1т. (800кг)

- Наличие подъемников – 20 шт.

- Время работы погрузчика без подзарядки – 4 ч.

- Время полной подзарядки:

               Щелочной погрузчик   8ч.

               Кислотный погрузчик  4ч.

- Используемые приспособления  для разгрузки:

               Тележка – домкрат  ROKLA  30 шт.

               Грузовые  лифты комбината    6 шт.

               Погрузчики                              20 шт.

- Среднее время доставки (тариф) 2,80 = 2мин. 48сек.

 

Нормативы:

На разгрузку не тарного груза 

НОРМА  1т.               3мин

НОРМА  10т.           30мин

НОРМА  20т.              1час


 

Все тарифные ставки (время  затрачиваемое на доставку и возврат  погрузчика к  поставщику просчитаны и выбраны из нормативов).

 

На хладокомбинате были предусмотрены секции с камерами для мяса, рыбы, масла и др.

 

Реальное  событие:

У эстокады стоит 10 фур, из которых 1 с мясом, 3 спиртное, 3 полуфабрикаты и 3 рыба.

Доставить груз на  22 различные морозильные камеры. 

 

Заказчики - камеры

Алкогольная продукция

7,80

АЛКО 

12,70

ПЕТРОХОЛОД

16,10

АО СМИРНОВ СПИРТНОЕ1

3,00

ФЕБОС

4,00

АЛКО ДИОНИС


Полуфабрикаты

7,00

ЧП КОНОВАЛОВ   ПОЛУФАБР

6,80

ЧП ГРОМ  ПОЛУФАБР.

2,80

ЧП САЛЮТ  ПОЛУФАБР.

0,20

ЧП САЛЮТ  ПОЛУФАБР.

5,00

ЧП ИВАНОВ  ПОЛУФАБРИКАТЫ

12,00

NORD WEST    ПОЛУФАБР

3,00

NORD WEST    ПОЛУФАБР

Информация о работе Транспортная задача