Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курсовая Работа Примерное оформление.docx
Скачиваний:
6
Добавлен:
22.11.2019
Размер:
1.14 Mб
Скачать

Решение в программе tora

Запускаем программу, в главном меню программы выбираем Transportation model (Транспортная модель).

Далее, выбираем необходимое количество ограничений и переменных (рис.1 а,б).

Рис.1 (а) Заполнение переменных

Рис.1 (б) Заполнение переменных

Теперь нужно ввести все значения переменных в созданную таблицу (рис.2).

Рис.2 Заполнение таблицы

Когда данные будут введены, нажимаем кнопку «SOLVE Menu» и выбираем метод Solve Problem => Iterations => Least-Cost starting solution (Метод наименьшего элемента) с помощью которого необходимо решить задачу.

Далее, появиться оптимальное решение транспортной задачи (рис.3).

Рис.3 Оптимальное решение

Пояснение …..Ответ к которому пришли

Решение в программе msExcel

Про маросы расписать со скринами.

Для того чтобы решить задачу в MSExcel (Версию которая использовалась), необходимо установить дополнительный модуль «поиск решения».

Для этого необходимо перейти на вкладку «Пуск », нажать кнопку «Параметры Ecxel» => «Надстройки» и выбрать компонент «Поиск решения» (рис.1)

Рис.1 Надстройки

Далее переходим к вводу данных задачи.

В ячейки B4-E5, В10-D10, G7;G8 вводим значения из условия задачи, которые необходимо оптимизировать. В ячейки E4 и E5 вставляем нули, так как это фиктивный потребитель, а ячейка E10 считается автоматически, как только будут заполнены ячейки с потребностями и запасами: =(G7+G8)-(B10+C10+D10). В ячейку D12 вписывается значение затрат на 1 единицу (рис.2).

Рис.2 Редактирование

На вкладке «Данные» нажимаем функцию «Поиск решения» (рис.3)

Тут устанавливаем целевую ячейку B12, так как нам нужно найти минимальные затраты ставим галочку на «Минимальное значение»

Расчеты и изменения будут происходить в ячейках B7-E8, поэтому и указываем эти ячейки в графе «Изменения ячейки»

Теперь укажем ограничения:

В ячейках B7-E8 введем параметр > 0,

B9;E9 = B10;E10,

F7;F8 <= G7;G8

Рис.3 Параметры функции «Поиск решения»

После того, как мы выставили все ограничения, нажимаем на кнопку «Выполнить». Программа рассчитает оптимальный грузооборот и выведет его в ячейку B12. А в ячейку С14 будут минимальные расходы на грузоперевозки и она равны 3700000 д.е. (рис.4).

Рис.4 Результат расчетов

Пояснение ….Ответ

Разработка программы для решения задачи в общем виде (Delphi)

Инструкция пользователю. Описание структуры программы.

Системные требования программы

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

Оболочка программы реализована на Delphi, однако расчеты производятся в файле Excel, выполненном ранее.

Чтобы начать пользоваться программой нужно запустить файл 16var.exe

Откроется окно с данными исходной задачи (рис.1).

Рис.1 Интерфейс программы (Для заполнения)

Предоставляется возможность редактировать данные в программе, а именно:

Поставщики (Элеватор 1, Элеватор 2), потребители (Хлебозавод 1, Хлебозавод 2, Хлебозавод 3), потребности и запасы. Есть возможность ввести «Затраты на единицу», если в условии указанны затраты на 1 единицу.

После того, как данные будут заполнены нажать на кнопку «Считать»

Программа произведет расчеты и будет выведен результат в строки «Оптимальный грузооборот» и «Минимальные затраты» (рис. 2).

После закрытия, программа вернет все начальные данные из условия задачи.

Рис.2 Интерфейс программы (Расчет результатов)

В коде нужно расписывать отдельный блок, и для чего использовался, а не полностью код

Листинг программы Delphi

unit MMIPU;

interface

uses

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

Dialogs, OleCtnrs, ComObj, StdCtrls;

type

TForm1 = class(TForm)

Edit1: TEdit;

Edit2: TEdit;

Edit3: TEdit;

Edit5: TEdit;

Edit6: TEdit;

Edit7: TEdit;

Button1: TButton;

Label1: TLabel;

Button2: TButton;

Edit14: TEdit;

Edit15: TEdit;

Edit16: TEdit;

Edit17: TEdit;

Label15: TLabel;

Label16: TLabel;

Label17: TLabel;

Label18: TLabel;

Label19: TLabel;

Label20: TLabel;

Label6: TLabel;

Label7: TLabel;

Edit9: TEdit;

Edit10: TEdit;

Label2: TLabel;

Label3: TLabel;

Label4: TLabel;

Edit11: TEdit;

Edit12: TEdit;

Memo1: TMemo;

procedure FormCreate(Sender: TObject);

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

procedure FormClose(Sender: TObject; var Action: TCloseAction);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

ap: variant;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);

begin

//При запуске программы создается OLE обьект. И программа открывает Excel файл, который производит все вычисления

Ap := CreateOleObject('Excel.Application');

Ap.Workbooks.Open(ExtractFilePath(ParamStr(0))+'\TZ.xlsx');

//Далее программа заполняет данные согласно варианту

Edit9.Text:='4200';

Edit10.Text:='1200';

Edit14.Text:='1000';

Edit15.Text:='2000';

Edit16.Text:='1600';

Edit17.Text:='25';

Edit1.Text:='20';

Edit2.Text:='30';

Edit3.Text:='50';

Edit5.Text:='60';

Edit6.Text:='20';

Edit7.Text:='40';

Edit11.Text:='0';

Edit12.Text:='0';

end;

procedure TForm1.Button1Click(Sender: TObject);

begin

//при нажатии на кнопку считать происхадит записывание данных из программы в Exel файл и Exel производит вычисления

Ap.Range['B4']:=strtofloat(Edit1.Text);

Ap.Range['C4']:=strtofloat(Edit2.Text);

Ap.Range['D4']:=strtofloat(Edit3.Text);

Ap.Range['B5']:=strtofloat(Edit5.Text);

Ap.Range['C5']:=strtofloat(Edit6.Text);

Ap.Range['D5']:=strtofloat(Edit7.Text);

Ap.Range['G7']:=strtofloat(Edit9.Text);

Ap.Range['G8']:=strtofloat(Edit10.Text);

Ap.Range['B10']:=strtofloat(Edit14.Text);

Ap.Range['C10']:=strtofloat(Edit15.Text);

Ap.Range['D10']:=strtofloat(Edit16.Text);

Ap.Range['D12']:=strtofloat(Edit17.Text);

// После вычислений происходит считавание данных из Exel файла и запись готовых ответов в программу.

Edit1.Text:=Ap.Range['B4'];

Edit2.Text:=Ap.Range['C4'];

Edit3.Text:=Ap.Range['D4'];

Edit5.Text:=Ap.Range['B5'];

Edit6.Text:=Ap.Range['C5'];

Edit7.Text:=Ap.Range['D5'];

Edit9.Text:=Ap.Range['G7'];

Edit10.Text:=Ap.Range['G8'];

Edit11.Text:=inttostr(Ap.Range['B12']);

Edit12.Text:=inttostr(Ap.Range['C14']);

Edit14.Text:=Ap.Range['B10'];

Edit15.Text:=Ap.Range['C10'];

Edit16.Text:=Ap.Range['D10'];

Edit17.Text:=Ap.Range['D12'];

end;

procedure TForm1.Button2Click(Sender: TObject);

// кнопка EXIT.

// Закрытие Exel файла

begin

Ap.DisplayAlerts := False;

Ap.Workbooks.close;

Ap.Application.Quit;

Ap.Quit;

Application.Terminate; //Загрытие программы

end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);

begin

// кнопка EXIT.

// Закрытие Exel файла

Ap.DisplayAlerts := False;

Ap.Workbooks.close;

Ap.Application.Quit;

Ap.Quit;

Application.Terminate; //Загрытие программы

end;

end.