Курсовая работа: Минимизация транспортных расходов при перевозе груза со станций отправления грузовых поездов

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Панель палитры компонентов расположена в правой части главного окна среды разработчика. Она открывает доступ к VCL (Visual Component Library- библиотеки визуальных компонентов) и содержит кнопки с пиктограммами компонентов VCL. С помощью палитры компонентов можно выбрать и включить в приложение всевозможные интерфейсные элементы управления: кнопки, меню, списки, панели и пр. Палитра компонентов состоит из ряда страниц с различными группами компонентов. В Delphi можно изменять содержимое страниц Палитры компонентов и добавлять в нее пиктограммы собственных компонентов.

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

Окно Инспектора объектов - это двухстраничное окно, которое является одним из самых важных средств программирования Delphi. Оно отображает свойства или события одного или нескольких выбранных объектов или форм. Окно Инспектора объектов содержит 2 страницы: страницу свойств (Properties) и страницу событий (Events). В верхней части Инспектора объектов страницы помечены закладками. С их помощью можно переходить со страницы на страницу в процессе разработки программы. В верхней части Инспектора объектов расположен выпадающий список с именами компонентов активной формы: окно с кнопкой справа. При нажатии на кнопку появляется выпадающий список, из которого можно выбрать и тем самым активизировать требуемый объект формы.

Окно формы расположено с правой стороны рабочего поля над окном редактора кода (текста модуля формы). Это визуальное изображение главного окна приложения. Окно содержит заголовок и рабочую область формы для размещения компонентов приложения. В правой части заголовка расположены стандартные оконные управляющие элементы: уменьшить, увеличить, закрыть форму. Рабочая область размечена специальной сеткой, по которой выравниваются расставляемые компоненты. В скомпилированном приложении сетка не появляется. Простые программы имеют одну форму, более сложные могут иметь ряд форм.

Окно редактора кода содержит код (текст) программы на языке Object Pascal. В нижней части окна есть закладка с именем Code для перехода из Окна формы в Окно редактора кодов. Каждая форма имеет текст соответствующего ей модуля. По умолчанию имя модуля формы Form1='Unit1.pas'. В верхней части Окна редактора имеются закладки для выбора текста одного из открытых модулей. Список всех модулей, доступных в приложении, можно вызвать с помощью кнопки View Unit на панели инструментов или пункта меню View\Units. В нижней части Окна редактора отображается также информация компилятора (сообщения об ошибках, обнаруженных на этапе компиляции) и интегрированного отладчика. Окно редактора является многостраничным. Если проект содержит несколько модулей, редактор обеспечивает доступ и работу с каждым из них. Переход от модуля к модулю осуществляется с помощью закладок, расположенных в верхней части Окна редактора или команды подменю View\Units.

Для разработки конкретно своей программы я использовала такие компоненты Delphi, как:

- Label - метка для вывода текста. С помощью этого компонента я оформила 1-ую форму, которая является у меня титульной. Оформление заключается в заголовке «Курсовая работа», теме на которую она написана, а также выполнена. Также компонент Label используется на 3-ей форме, с помощью которого я описала все события поставленной задачи. Для вывода текста на метку в две и более строк я установила ее свойство WordWrap = True, а для выравнивания текста внутри компонента свойство Alignment.

- Button - кнопка, которая расположена на каждой форме и в разном количестве. Эти кнопки я использовала для перехода между формами, для выхода из запущенной программы, для расчета формул, для просмотра условия задачи и графика, а также вывода комментарий по расчету формул.

- StringGrid - компонент, который представляет собой таблицу для отображения данных в виде строк и столбцов. Таких компонентов я использовала два на 2-ой форме.

StringGrid2 состоит из 4 столбцов и 11 строк, в которых я вывела порядковый номер и подсчитала временные параметры работ и их резервы времени, из результата которых нашла критический путь. А StringGrid1 состоит из 7 столбцов и 12 строк, в которых я вывела порядковый номер события, работу, время совершения работы, а также подсчитала временные параметры событий.

- Image - компонент изображения, с помощью которого поместила на 3-ю форму рисунок сетевого графика данной задачи, который перед этим сохранила в блокноте с расширением .bmp и открыла с помощью свойства этого компонента Picture.

- OleContainer - для помещения на 5-ую и 6-ую формы комментарий с формулами и решением по расчету данной задачи.

2. СПЕЦИАЛЬНЫЙ РАЗДЕЛ

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

Для следующих задач составить сценарий, по нему построить сетевой график, вычислить временные параметры событий и работ и определить критический путь. Составить программу решения задачи в среде Delphi. Произвести расчет временных параметров с использованием пакета Excel:

Вариант 9. Минимизация транспортных расходов при перевозе груза со станций отправления грузовых поездов

2.2 Решение задачи

На трех станциях отправления имеются соответственно 50, 30 и 20 единиц однородного груза который нужно доставить в три пункта назначения в количестве соответственно 30,40 и 30 единиц.

Стоимости перевозок и составляло

С11=4 С12=1 С13=2

С21=3 С22=7 С23=5

С31=5 С32=6 С33=1

Найти такой план перевозок, чтобы общая стоимость всех перевозок была минимальна.

Пусть имеется m=3 станций А1,А2,А3 и n=3 потребителей В1,В2,В3.

На первой станции кол-во груза а1=50, на второй станции кол-во груза а2=30, на третей станции кол-во груза а3=20.

Потребность в грузе в1=30, в2=40, в3=30.

1) а1+а2+а3=50+30+40+20=100

в1+в2+в3=30+40+30=100

?а=?в

100=100

Задача является сбалансированной. Модель закрытая.

Xij - кол-во груза перевозимого от i-станций, к j- потребителей

CijXij - транспортные расходы при перевозки груза от i-n к j-потребителей

C11X11=8*X11

Целевая функция:

F=4X11+X12+2X13+3X21+7X22+5X23+5X31+6X32+X33>min

X11+X12+X13 =50 X11+ X21 + X31=30

X21+X22+X23=30 X12+ X22 + X32=40

X31+X32+X33=20 X13+ X23 + X33=30

X11?0 X12?0 X13 ?0 X21?0 X22?0 X23?0 X31?0 X32?0 X33?0

Метод минимального элемента. Начинаем с min стоимости

30

40

3010

50

10

4

40

1

10

2

30

30

3

7

5

20

5

6

20

1

X12= min{ а1; в2}= min {50;40}= min 40

а1> в1 то первый столбец вычеркиваем

X33= min{ а3; в3}= min {20;30}= min 20

а3< в3 то первой вычеркиваем строку

X13 = min{ а1; в3}= min {10;10}= min 10

а1= в1

X21= min 30

X12 =40

X33 =20 базисные переменные

X13 =10

X21=30

X11=0

X22=0

X23=0 не базисные переменные

X31=0

X32=0

F=4*0+40+2*10+3*30+7*0+5*0+5*0+6*0+20=40+20+90+20=170

Ответ: Минимальные транспортные расходы F=170

при X12 =40 X33 =20 X13 =10 X21=30

Метод северо-западного угла

30

40 20

30 20

50

20

30

4

20

1

2

30

10

3

20

7

10

5

20

5

6

20

1

X11= min{ а1; в1}= min {50;30}= min 30

а1> в1 то первый столбец вычеркиваем

X12= min{ а1; в2}= min {20;40}= min 20

а1< в2 то первой вычеркиваем строку

X22 = min{ а2; в2}= min {30;20}= min 20

а2> в2 то первый столбец вычеркиваем

X23= min{ а2; в3}= min {10;30}= min 10

а2< в3 то первой вычеркиваем строку

X33=20

X11 =30

X12 =20

X22 =20 базисные переменные

X23=10

X33 =20

X13 =0

X21=0 не базисные переменные

X31 =0

X32=0

F=4X11+X12+2X13+3X21+7X22+5X23+5X31+6X32+X33>min

F=4*30+20+2*0+3*0+7*20+5*10+5*0+6*0+20=120+20+140+50+20=350

30

40

30

50

30

4

20

1

-1

2

u1=

0

30

10

3

20

7

10

5

u2=

6

20

6

5

3

6

20

1

u3=

2

v1=4

v2=1

v3=-1

u1+v1=4 u1=0 v1=4

u1+v2=1 v2=1

u2+v2=7 u2+1=7 u2=7-1=6

u2+v3=5 6+v3=5 v3=5-6=-1

u3+v3=1 u3+(-1)=1 u3=2

C'13= u1+ v3=0+(-1)= -1

C'21= u2+ v1=6+4=10

C'31= u3+ v1=2+4=6

C'32= u3+ v2=2+1=3

C'13-C13=0+(-1)= -1

C'21-C21=6+4=10>0

C'31-C31=2+4=6>0

C'32-C32=2+1=3

так как два результата больше 0 решение не является оптимальным

Х21=0 + 20=20

Х11=30 - 20=10

Х12=20 + 20=40

Х22=20 - 20=0

30

40

30

50

10

4

40

1

6

2

u1=

0

30

20

3

0

7

10

5

u2=

-1

20

-1

5

-4

6

20

1

u3=

-5

v1=4

v2=1

v3=6

u1+v1=4 u1= 0 v1= 4

u1+v2=1 v2=1

u2+v1=3 u2= -1

u2+v3=5 v3= 6

u3+v3=1 u3= -5

F=4*10+40+2*0+3*20+7*0+5*10+5*0+6*0+20=40+40+60+20+50=210

C'13= u1+ v3=6 C'13-C13=-6-2=4>0

C'22= u2+ v2=0 C'21-C21=0-7= -7

C'31= u3+ v1= -1 C'31-C31= -1-5= -6

C'32= u3+ v2= -4 C'32-C32= -4-6= -10

Х13=0 + 10=10

Х11=20 - 10=0

Х21=20 + 10=30

Х23=10 - 10=0

30

40

30

50

0

4

40

1

10

2

u1=

0

30

30

3

0

7

1

5

u2=

-1

20

3

5

0

6

20

1

u3=

-1

v1=4

v2=1

v3=2

u1+v1=4 u1= 0 v1= 4

u1+v2=1 v2=1

u1+v3=3 v3= 2

u2+v1=5 u2= -1

u3+v3=1 u3= -1

C'22= u2+ v2=0 C'22-C22=-0-7= -7

C'23= u2+ v3=1 C'23-C23=1-5= -4

C'31= u3+ v1= 3 C'31-C31= 3-5= -2

C'32= u3+ v2= 0 C'32-C32= 0-6= -6

F=0+40+2*10+3*30+0+0+0+20=170

Ответ: Минимальные транспортные расходы F=170

при X12 =40 X33 =20 X13 =10 X21=30

2.3 Описание алгоритма

2.4 Инструкция пользователя

Загрузите двойным кликом мышки программ;

Ознакомьтесь с Формой 1 и нажмите Далее;

Ознакомьтесь с Формой 2 и при нажатии кнопки вычислить выыодится результат;

Ознакомьтесь с Формой 3при нажатии кнопки решение северо-западного угла появляется форма 3. при нажатии кнопки вычислить выводится результат:

При нажатии кнопки пояснение появляется форма 6.

при нажатии на второй форме кнопку решение через появится форма5

При нажатии кнопки математическая модель выводится форма 4

ЗАКЛЮЧЕНИЕ

При разработке курсовой работы, я достигла поставленной цели. Разработала программу, которая позволяет решить данную мне задачу, в соответствии с выданным вариантом. В процессе разработки программного продукта вспомнила все этапы решения данной задачи. Повторила изученные навыки и стили программирования, которые использовала для оформления дизайна программного интерфейса. В отчете, в котором описала весь порядок выполнения курсовой работы и раскрыла поставленную тему, использовала ГОСТы, таким образом отчет написан в соответствии со всеми стандартами ИСО

ПРИЛОЖЕНИЕ

Листинги текстов модулей

program Project1;

uses

Forms,

Unit1 in 'Unit1.pas' {Form1},

Unit2 in 'Unit2.pas' {Form2},

Unit3 in 'Unit3.pas' {Form3},

Unit4 in 'Unit4.pas' {Form4},

Unit5 in 'Unit5.pas' {Form5},

Unit6 in 'Unit6.pas' {Form6};

{$R *.res}

begin

Application.Initialize;

Application.CreateForm(TForm1, Form1);

Application.CreateForm(TForm2, Form2);

Application.CreateForm(TForm3, Form3);

Application.CreateForm(TForm4, Form4);

Application.CreateForm(TForm5, Form5);

Application.CreateForm(TForm6, Form6);

Application.Run;

end.

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, Buttons;

type

TForm1 = class(TForm)

Label1: TLabel;

Label2: TLabel;

Button1: TButton;

Label3: TLabel;

Label9: TLabel;

BitBtn1: TBitBtn;

Label4: TLabel;

Label5: TLabel;

Label6: TLabel;

procedure Button1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

// Form2: TForm2;

implementation

uses Unit2;

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);

begin

Form2.show;

end;

end.

unit Unit2;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, Grids, OleCtnrs, StdCtrls, Buttons;

type

TForm2 = class(TForm)

StringGrid2: TStringGrid;

StringGrid1: TStringGrid;

Label1: TLabel;

OleContainer1: TOleContainer;

Button2: TButton;

Button3: TButton;