3. Математическая модель, предмета разработки и алгоритм ее решения
Под названием транспортная задача объединяется широкий круг задач с единой математической моделью. Данные задачи относятся к задачам линейного программирования и могут быть решены известным симплексным методом. Однако, обычная транспортная задача имеет большое число переменных и решение ее симплексным методом громоздко. С другой стороны матрица системы ограничений транспортной задачи весьма своеобразна, поэтому для ее решения разработаны специальные методы. Эти методы, как и симплексный метод, позволяют найти начальное опорное решение, а затем, улучшая его, получить последовательность опорных решений, которая завершается оптимальным решением.
Однородный груз сосредоточен у m поставщиков в объемах a1, a2,... am. Данный груз необходимо доставить n потребителям в объемах b1, b2... bn. Известны Cij, i=1,2,...m; j=1,2,...n — стоимости перевозки единиц груза от каждого i-го поставщика каждому j-му потребителю. Требуется составить такой план перевозок, при котором запасы всех поставщиков вывозятся полностью, запросы всех потребителей удовлетворяются полностью, и суммарные затраты на перевозку всех грузов являются минимальными.
Исходные данные транспортной задачи записываются в виде таблицы:
Исходные данные задачи могут быть представлены в виде:
- вектора А=(a1,a2,...,am) запасов поставщиков
- вектора B=(b1,b2,...,bn) запросов потребителей
- матрицы стоимостей:
Переменными (неизвестными) транспортной задачи являются xij, i=1,2,...,m j=1,2,...,n — объемы перевозок от i-го поставщика каждому j-му потребителю. Эти переменные могут быть записаны в виде матрицы перевозок:
Так как произведение Cij*Xij определяет затраты на перевозку груза от i-го поставщика j-му потребителю, то суммарные затраты на перевозку всех грузов равны:
По условию задачи требуется обеспечить минимум суммарных затрат. Следовательно, целевая функция задачи имеет вид:
Система ограничений задачи состоит из двух групп уравнений. Первая группа из m уравнений описывает тот факт, что запасы всех m поставщиков вывозятся полностью и имеет вид:
Вторая группа из n уравнений выражает требование удовлетворить запросы всех n потребителей полностью и имеет вид:
Учитывая условие неотрицательности объемов перевозок математическая модель выглядит следующим образом:
В рассмотренной модели транспортной задачи предполагается, что суммарные запасы поставщиков равны суммарынм запросам потребителей, т.е.:
Математическая формулировка транспортной задачи такова: найти переменные задачи X=(xij), i=1,2,...,m; j=1,2,...,n, удовлетворяющие системе ограничений (цифра 2 на математической модели), условиям неотрицательности и обеспечивающие минимум целевой функции.
4. Технология разработки программного продукта
Программный продукт будет разрабатываться в программе Delphi7 Delphi — среда программирования, в которой используется язык программирования Object Pascal. Язык программирования - произошел от turbo pascal, и создавался изначально - для windows, но позже появились и среды разработки под linux. Создадим формы, в соответствие с ИС Автоматизации. Компонент Form1 появляется автоматически после запуска Delphi. Чтобы добавить ещё один Form, нужно перейти в File->New->Form Систему необходимо будет защитить от несанкционированного доступа логином и паролем (рис.16).
Рис.16 Вид первой формы.
На форму добавляем следующие компоненты:
ü Label, Labe2 - Метка (пояснительный текст) на Форме. указывает пользователю, что именно он должен ввести в поле ввода. Для этого достаточно в Инспекторе объектов в свойстве Caption ввести нужный текст.
ü Edit1, Edit2 - представляет собой однострочное текстовое поле, служащее для ввода данных пользователем. Основным свойством компонента Delphi Edit, передающим введённую информацию, является свойство Edit1.Text типа String.
ü Button1, Button2 - Компонент Delphi Button это простая командная кнопка. Командная кнопка Delphi Button используется для реализации в программе команд с помощью обработчика события OnClick этого компонента.
В Unit1 заносим программный код:
procedure TForm1.Button2Click(Sender: TObject);
begin
Form1.Close;
end;
procedure TForm1.Button1Click(Sender: TObject);
const
log='admin';
pas='505';
var log0,pas0:string;
begin
log0:=edit1.Text;
pas0:=edit2.Text;
if (log=log0) and (pas=pas0) then begin Form2.show; form1.Hide; end else
if (log<>log0) or (pas<>pas0) then showmessage('введены не верно login\password ');
end; end.
Затем создаем Form2, в ней будет представлена в табличном виде информация о выпускаемом ассортименте. Эта форма будет представлять ИС Автоматизации организации управления выбора поставщиков и потребителей (рис.17). Заказчик с помощью этой ИС сможет получить необходимые сведения как в целом о выпускаемом ассортименте, так и конкретно по видам продукции. Так у администраторов которые будут обслуживать эту ИС будет возможность оперативно добавить новые сведения, изменить их, или удалить.
Рис.17 Вид второй формы.
Рис.18 Вид второй закладки второй формы.
Рис.19 Вид третьей закладки второй формы.
Рис.20 Вид четвертой закладки второй формы.
Рис.21 Вид пятой закладки второй формы.
Рис.22 Вид шестой закладки второй формы.
На форму добавляем следующие компоненты:
ü DBEdit1-25 - это окно редактирования. DBEdit – связанный с данными аналог обычного окна редактирования Edit. Он позволяет отображать и редактировать данные полей различных типов: строка, число, булева величина. Преобразование значения поля в строку текста, отображаемую в DBEdit, производится автоматически.
ü DBNavigator1-6 для добавления, редактирования, и удаления строк таблицы.
ü GroupBox1-6 - имеет встроенную рамку с надписью, которая обычно используется для выделения на форме группы функционально объединенных компонентов.
ü Image1- рисунок. Выводится логотип бренда «Вкуснотеево».
ü ADOConnection1 – компонент используется для соединяться с источником данных.
ü DataSource1-6 - Источник данных. Связывает компоненты доступа данных и компоненты отображения данных.
ü ADOTable1-6 - Таблица. Служит мощным средством доступа к файлам баз данных (к таблицам).
В Unit2 заносим программный код:
procedure TForm2.Button1Click(Sender: TObject);
begin
Form2.Close;
Form1.Close;
end;
procedure TForm2.Button2Click(Sender: TObject);
begin
form3.showmodal;
end;
end.
Затем добавляем третью форму (Form3), которая служит для организации ИС Автоматизации организации перевозок (рис.23). Так как у поставщика имеется много заказчиков различной удаленности, необходимо проанализировать и выбрать наиболее рациональный путь. Программа будет сортировать заказчиков по удаленности, тем самым повышается эффективность транспортных грузоперевозок.
Рис.23 Вид третей формы.
На форму добавляем следующие компоненты:
ü StringGrid1 - представляет собой таблицу, ячейки которой содержат строки символов. Для ввода массива удобно использовать компонент StringGrid.
В Unit3 заносим программный код:
procedure TForm3.Button1Click(Sender: TObject);
begin
Form1.Close;
Form2.Close;
Form3.Close;
end;
procedure TForm3.FormActivate(Sender: TObject)
begin
tabl.Cells[0,0]:= Заказчик';
tabl.Cells[1,0]:='Расстояние (km)';
tabl.Cells[0,1]:='Гипермаркет «Линия» ';
tabl.Cells[0,2]:='Супермаркет «Европа» ';
tabl.Cells[0,3]:='Торговый центр «Поиск»';
tabl.Cells[0,4]:='777';
end;
procedure TForm3.Button2Click(Sender: TObject);
var
c,r:integer;
s:integer;
p:integer;
m:integer;
buf:array[0..5] of string;
i:integer;
begin
for r:=1 to tabl.rowcount do /
begin
for c:=1 to 3 do
if tabl.cells[c,r] <> ''
then s:=s+StrToInt(tabl.cells[c,r])
else tabl.cells[c,r]:='0';
p:=7*StrToInt(tabl.cells[1,r])+
6*StrToInt(tabl.cells[2,r])+
5*StrToInt(tabl.cells[3,r]);
tabl.cells[4,r]:=IntToStr(s); // âñåãî ìåäàëåé
tabl.cells[5,r]:=IntToStr(p); // î÷êîâ
end;
for r:=1 to tabl.rowcount-1 do
begin
m:=r; // for i:=r to tabl.rowcount-1 do
if StrToInt(tabl.cells[5,i])>StrToInt(tabl.cells[5,m])
then m:=i;
if r <> m then
begin
for c:=0 to 5 do
begin
buf[c]:=tabl.Cells[c,r];
tabl.Cells[c,r]:=tabl.Cells[c,m];
tabl.Cells[c,m]:=buf[c];
end;
end;
end;
end;
procedure TForm3.Button3Click(Sender: TObject);
begin
form4.showmodal;
end; end.
Завершающей формой будет четвертая форма (Form4), которая будет формировать ИС Автоматизация планирования накладной на продукцию (рис.24). Ознакомившись с продукцией производителя, заказчик сможет сделать заказ, для этого клиент, ориентируясь на таблицу Ассортимента, введет Наименование необходимой продукции и Количество. Данные заказа автоматически передадутся в текстовый документ более удобный для печати.
Рис.24 Вид четвертой формы.
На форму добавляем следующие компоненты:
ü LabeledEdit1-2 - комбинация однострочного редактора и метки. Впервые введен в версии 6.
ü WordApplication1 - запуск и соединение с сервером.
ü WordParagraphFormat1 - Для создания документа Microsoft Word из Delphi.
ü SaveDialog - диалог «Сохранить файл как...».
В Unit4 заносим программный код:
procedure TForm4.Button1Click(Sender: TObject);
begin
Form1.Close;
Form2.Close;
Form3.Close;
Form4.Close;
end;
procedure TForm4.FormCreate(Sender: TObject);
var TS: OleVariant;
NT: OleVariant;
begin
WordApplication1.Connect;
TS:='Normal';
NT:=FALSE;
WordApplication1.Documents.AddOld(TS,NT);
WordApplication1.ActiveDocument.PageSetup.LeftMargin:=15.0;
WordApplication1.ActiveDocument.PageSetup.TopMargin:=10.0;
WordApplication1.ActiveDocument.PageSetup.RightMargin:=10.0;
WordApplication1.ActiveDocument.PageSetup.BottomMargin:=10.0; // end;
procedure TForm4.FormClose(Sender: TObject; var Action: TCloseAction);
begin
WordApplication1.Disconnect
end;
procedure TForm4.Button2Click(Sender: TObject);
var CD: OleVariant;
FN: OleVariant;
FT: OleVariant;
begin
if SaveDialog.Execute then
begin
CD:=wdCollapseEnd;
FN:=SaveDialog.FileName;
FT:=wdFormatDocument;
WordApplication1.Selection.ParagraphFormat.Alignment:=wdAlignParagraphCenter; WordApplication1.Selection.InsertBefore(labeledEdit1.text+' '+ #30);
WordApplication1.Selection.Collapse(CD); WordApplication1.Selection.InsertBefore(LabeledEdit2.Text+#13);
WordApplication1.Selection.Collapse(CD); WordApplication1.ActiveDocument.SaveAs(FN,FT,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam);
WordApplication1.Visible:=TRUE
end
end;
procedure TForm4.WordApplicationQuit(Sender: TObject);
begin
Close
end; end.
... системы заключается в автоматизации и замене ручного труда автоматизированным трудом с высвобождением персонала. Конкретно будет разрабатываться автоматизированная информационная система для управления портфелем реальных инвестиций предприятия СФ ОАО «ВолгаТелеком». Разработка данной системы приведет к экономии затрат, связанных с проведением анализа и оценки инвестиционных решений и компоновки ...
... обоснование проекта 5.1 Разработка математической модели проекта 5.1.1 Определение источника доходов проекта Целью данного дипломного проекта является разработка автоматизированной информационной системы для лизинговой компании. Разработка настоящего программного продукта осуществляется с целью его внедрения и эксплуатации на предприятие ООО "Тольяттинская Лизинговая Компания". Прибылью ...
... Architect, Visible Analyst Workbench, EasyCASE), так и новые версии и модификации перечисленных систем. 3 Глава. Разработка концептуальной модели информационной системы для поддержки принятия управленческих решений при формировании маркетинговой стратегии региона Процесс создания и внедрения любой ИС принято разделять на четыре последовательные фазы: анализ, глобальное проектирование ( ...
... создания. Ответственность за разработку ТЗ несет основной разработчик. 3.1 Общие сведения Полное наименование АИС: Информационная система по автоматизации учёта товаров и денежных потоков на предприятии «Computer Master». Условное обозначение: АИС – «Computer Master». Разработка ведется на основании договора №1 от 09.11.09 между заказчиком (Виктором Ивановичем директор «Computer Master») ...
0 комментариев