Решение задачи о смесях симплексным методом

 

Содержание


Введение

.Симплекс-метод

.Линейное программирование

.Общая характеристика задачи о смесях

.Аналитическое решение

.Математическая постановка задачи

.Разработка основных алгоритмов решения задачи. Решение задачи в среде визуального программирования Delphi

.Проектирование интерфейса пользователя. Построение графа состояний интерфейса

.Разработка форм ввода-вывода информации

.Контрольный пример

.Заключение

.Исходный код

Список использованной литературы


Введение


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

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


1. Симплекс-метод


Симплекс-метод - алгоритм решения оптимизационной <#"justify">1.нахождение исходной вершины множества допустимых решений,

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

При этом в некоторых случаях исходное решение очевидно или его определение не требует сложных вычислений, например, когда все ограничения представлены неравенствами вида «меньше или равно» (тогда нулевой вектор совершенно точно является допустимым решением, хотя и, скорее всего, далеко не самым оптимальным). В таких задачах первую фазу симплекс-метода можно вообще не проводить. Симплекс-метод, соответственно, делится на однофазный и двухфазный.


2. Линейное программирование


Линейное программирование - математическая дисциплина, посвящённая теории и методам решения задач об экстремумах <#"justify">Линейное программирование (планирование) служит для выбора наилучшего плана распределения ограниченных однородных ресурсов в целях решения поставленной задачи.

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

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

Задачи курсовой работы:

-изучить теоретический материал по данной теме;

-решить поставленную задачу;

-разработать алгоритм для решения данной задачи;

-автоматизировать процесс решения;

-разработать программу для решения задач данного класса.

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

Программа будет разработана в среде Borland Delphi 7. Системные требования: процессор с частотой свыше 300 МГц, Windows 98/SE/2000/ME/XP/Vista/Win 7, 128 RAM.


3. Общая характеристика задачи о смесях


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

В результате чего и разработали методы решения данных задач, называемых оптимизационными методами задач распределения, основные из них: симплекс-метод, двойственный симплекс-метод, метод искусственного базиса, графический метод и решение задач средствами Excel через «Поиск решений».

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


4. Аналитическое решение


Задача:

Нефтеперерабатывающий завод получает четыре полуфабриката:

тыс. л. алкилата;

тыс. л. крекинг-бензина;

тыс. л. бензина прямой перегонки;

тыс. л. изопентона;

В результате смешивания этих четырёх компонентов в разных пропорциях образуются три сорта авиационного бензина:

Бензин А - 2 : 3 : 5 : 2 ;

Бензин В - 3 : 1 : 2 : 1 ;

Бензин С - 2 : 2 : 1 : 3 ;

Стоимость 1 тыс.л. указанных сортов бензина:

Бензин А - 120 руб.

Бензин Б - 100 руб.

Бензин С - 150 руб.

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

Сводная таблица условий задачи:

Таблица1

Компоненты, используемые для производства трёх видов бензина.Сорта производимого бензинаОбъем ресурсов (тыс. л)АВСАлкилат400Крекинг-бензин250Бензин прямой перегонки300Изопентат250Цена бензина (рублей за 1 тыс.л.)120100150

5. Математическая постановка задачи


Составим математическую модель задачи. Обозначим через t1 количество бензина А, через t2 количество бензина В, через t3 количество бензина С. Тогда, целевая функция будет:

L=y1t1+ y2t2+ y3t3=120t1+100t2+150t3 ?max

Система ограничений:



Приведем систему ограничений к виду основной задачи линейного программирования (введем новые переменные t4 , t5 ,t6 ,t7, которые входят в целевую функцию с нулевыми коэффициентами):


Выберем t1 , t2 ,t3 свободными переменными, а t4 , t5 ,t6 ,t7 - базисными и приведем к стандартному виду для решения с помощью симплекс-таблицы:


L=0-(-120t1-100t2-150t3)


Составим симплекс-таблицу.

Это решение опорное, т.к. все свободные члены положительны.

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


Таблица 2

bt1t2t3 L0 -120 -100 -150 6000 60 60 180t4400 2 3 2 400/2=200 -100 -1 -1 -3t5250 3 1 2 250/3=83,3 -150 -1,5 -1,5 -4,5t6350 5 2 1 350/5=70 -250 -2,5-2,5 -7,5t7100 21 3 100/2=50 50 0,5 0,5 1,5

Далее меняем t2 и t1 .

Таблица 3

bt7t2t3L6000 60 -40 30 4000 40 80 120t4300 -1 2 -1 300/2=150 -200 -2 -4 -6t5100 -1,5 -0,5 -2,5 50 0,5 1 -4,5t650 -2,5 -0,5 -6,5 50 0,5 1-7,5t150 0,5 0,51,5 50/0,5=100 100 1 2 1,5

Таблица 3

bt7t1t3L10000 100 80 150 t4100 -3 -4 -7 t5150 -1 1 -1 t6100 -2 1 -5 t2100 1 2 3

Т.к. коэффициенты при переменных в целевой функции положительны, следовательно, это оптимальное решение.

Таким образом, t1 = t3 =0; t2=100; L=10000.

Т.е. для получения максимальной прибыли следует производить только бензин В (100 тыс. л.), при этом выручка составит 10000 руб.

ОТВЕТ: для получения максимальной прибыли следует производить только бензин В (100 тыс. л.), при этом выручка составит 10000 руб.


6. Разработка основных алгоритмов решения задачи. Решение задачи в среде визуального программирования Delphi


Анализ процесса обработки информации и выбор структур данных для ее хранения

Для хранения первичных данных используются целочисленные переменные Count , Count2 и компонент StringGrid.

Переменные целочисленного типа tmp и k они указывают на количество столбцов и строк.

Для вычисления минимального значения столбца и минимального значения строки используются переменные целочисленного типа MinC, MinR.

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

Переменные целочисленного типа Count, Count2 используются как счетчики в циклических операторах.

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

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

Переменная вещественного типа zna4 используется для нахождения максимального значения прибыли во время промежуточных расчетов. Для хранения коэффициента X при максимальном значении прибыли используется переменная целочисленного типа a.

Переменная Boo логического типа хранит итоговый результат-максимальная прибыль.

Для хранения и вычисления данных используется компонент StringGrid.

7. Проектирование интерфейса пользователя. Построение графа состояний интерфейса
























Рисунок 1- граф состояния интерфейса

8. Разработка форм ввода-вывода информации





















Рисунок 2 - Form1

1.компонент edit1 - ввод наименования ресурса;

2.компонент edit2 - ввод количества литров;

.компонент BitBtn1-добавляет новый ресурс в таблицу ;

.компонент BitBtn2 - изменяет ресурс добавленный в таблицу;

.компонент BitBtn3 -удаляет ресурс из таблицы;

.компонент StringGrid1 - таблица для ввода-вывода данных;

.компонент RadioButton1-компонент выбирает максимальную прибыль предприятия;

.компонент RadioButton2-компонент выбирает минимальные затраты предприятия;

.компонент BitBtn4- выход из программы;

.компонент BitBtn5- очищает таблицу ввода данных;

.компонент BitBtn6- переход на Form2;

.компонент BitBtn7-справка;













Рисунок 3 - Form2


1.компонент edit1 - ввод наименования ресурса;

2.компонент edit2 - ввод стоимости ресурса за одну единицу товара;

.компонент BitBtn1-добавляет новый ресурс в таблицу ;

.компонент BitBtn2 - изменяет ресурс добавленный в таблицу;

.компонент BitBtn3 -удаляет ресурс из таблицы;

.компонент StringGrid1 - таблица для ввода-вывода данных;

.компонент BitBtn4-выход из программы;

.компонент BitBtn5-очищает таблицу ввода данных;

.компонент BitBtn6-возвращает пользователя на Form1;

.компонент BitBtn7-переход на Form3;














Рисунок 4 - Form3

1.компонент StringGrid1 - таблица вывода результата;

2.компонент BitBtn1-выход из программы;

.компонент BitBtn2-очищает таблицу вывода результата;

.компонент BitBtn3-возвращает пользователя на Form2;

симплекс метод delphi

9. Контрольный пример




10. Заключение


В процессе написания данной курсовой работы были углублены знания в таких дисциплинах, как: Основы алгоритмизации и программирования, Основы программирования в среде программирования Delphi и Математические методы. Также в процессе работы над курсовой работой были изучены множественные информационные источники разной предметной направленности в таких сферах, как Объектно-ориентированное программирование, Алгоритмизация, Программирование в среде Delphi, Динамическое программирование и Экономической оптимизации.

В результате данной работы были достигнуты поставленные цели и задачи, а именно:

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

-разработан алгоритм решения данной задачи о смесях для нахождения максимальной прибыли или минимальных затрат предприятия;

-автоматизирован процесс решения поставленной задачи симплексным методом на нахождения максимальной прибыли предприятия;

-разработана программа для решения поставленной задачи симплексным методом для нахождения максимальной прибыли и минимальных затрат предприятия;

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


11. Исходный код

Unit1;, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, Grids, StdCtrls, Buttons, ComCtrls, Menus;= class(TForm): TGroupBox;: TEdit;: TEdit;: TBitBtn;: TBitBtn;: TLabel;: TLabel;: TStringGrid;: TLabel;: TGroupBox;: TBitBtn;: TBitBtn;: TBitBtn;: TBitBtn;: TGroupBox;: TBitBtn;: TBitBtn;: TBitBtn;: TEdit;: TLabel;: TEdit;: TLabel;: TStringGrid;: TLabel;: TLabel;: TGroupBox;: TStringGrid;: TLabel;: TGroupBox;: TStringGrid;: TBitBtn;: TBitBtn;: TGroupBox;: TMemo;: TRichEdit;: TButton;: TButton;: TButton;: TRadioButton;: TRadioButton;BitBtn6Click(Sender: TObject);Edit1KeyPress(Sender: TObject; var Key: Char);BitBtn1Click(Sender: TObject);StringGrid1Click(Sender: TObject);BitBtn7Click(Sender: TObject);FormCreate(Sender: TObject);BitBtn2Click(Sender: TObject);Edit2KeyPress(Sender: TObject; var Key: Char);BitBtn4Click(Sender: TObject);BitBtn5Click(Sender: TObject);Edit3KeyPress(Sender: TObject; var Key: Char);Edit4KeyPress(Sender: TObject; var Key: Char);BitBtn3Click(Sender: TObject);BitBtn9Click(Sender: TObject);BitBtn8Click(Sender: TObject);StringGrid2Click(Sender: TObject);StringGrid3KeyPress(Sender: TObject; var Key: Char);BitBtn11Click(Sender: TObject);BitBtn10Click(Sender: TObject);Button1Click(Sender: TObject);Button2Click(Sender: TObject);Button3Click(Sender: TObject);

{ Private declarations }

{ Public declarations };: TForm1;

{$R *.dfm}Otchistka();.stringgrid1.RowCount :=2;.stringgrid1.Cells [0,form1.stringgrid1.RowCount - 1] := '';.stringgrid1.Cells [1,form1.stringgrid1.RowCount - 1] := '';.stringgrid2.RowCount :=2;.stringgrid2.Cells [0,form1.stringgrid2.RowCount - 1] := '';.stringgrid2.Cells [1,form1.stringgrid2.RowCount - 1] := '';.stringgrid3.RowCount :=2;.stringgrid2.Cells [0,form1.stringgrid2.RowCount - 1] := '';.stringgrid2.Cells [1,form1.stringgrid2.RowCount - 1] := '';.stringgrid3.ColCount :=2;.stringgrid3.RowCount :=2;;Otvet();count,count2:integer;

boo:boolean;.Memo1.Lines.Add('Выгодно производить/использовать следующую продукцию:');

for count:=1 to form1.StringGrid4.RowCount -1 docount2:=0 to form1.StringGrid2.RowCount -1 doform1.StringGrid4.Cells[0,count] = form1.StringGrid2.Cells[0,count2] then.Memo1.Lines.Add (form1.StringGrid4.Cells[0,count]+ ' в количестве ' + form1.StringGrid4.Cells[1,count]+' ед.');;:=false;count:=1 to form1.StringGrid4.RowCount -1 docount2:=0 to form1.StringGrid1.RowCount -1 doform1.StringGrid4.Cells[0,count] = form1.StringGrid1.Cells[0,count2] then:=true;;;boo then.Memo1.Lines.Add('');

form1.Memo1.Lines.Add('При этом будут такие излишки ресурсов:');

for count:=1 to form1.StringGrid4.RowCount -1 docount2:=0 to form1.StringGrid1.RowCount -1 doform1.StringGrid4.Cells[0,count] = form1.StringGrid1.Cells[0,count2] then.Memo1.Lines.Add (form1.StringGrid4.Cells[0,count]+ ' в количестве ' + form1.StringGrid4.Cells[1,count]+' ед.');;;.Memo1.Lines.Add('');form1.RadioButton2.Checked then.Memo1.Lines.Add('Затраты при таком плане использования составят ' + floattostr((-1)*strtofloat(form1.StringGrid4.Cells[1,1]))+' у.е.').Memo1.Lines.Add('Прибыль при таком плане производства составит ' + form1.StringGrid4.Cells[1,1]+' у.е.');;zapolni();Count:integer;.StringGrid3.Cells[1,0]:='ОФР';Count:=1 to form1.stringgrid1.RowCount-1 do.StringGrid3.RowCount :=form1.StringGrid3.RowCount +1;.StringGrid3.Cells[0,Count+1]:=form1.StringGrid1.Cells[0,Count];;.StringGrid3.Cells[0,1]:='Прибыль';.StringGrid3.Cells[1,1]:='0';Count:=1 to form1.stringgrid2.RowCount-1 do.StringGrid3.ColCount := form1.StringGrid3.ColCount+1;.StringGrid3.Cells[Count+1,0]:=form1.StringGrid2.Cells[0,Count];;Count:=1 to form1.StringGrid1.RowCount -1 do.StringGrid3.Cells[1,Count+1]:=form1.StringGrid1.Cells[1,Count];Count:=1 to form1.StringGrid2.RowCount -1 do.StringGrid3.Cells[Count+1,1]:=form1.StringGrid2.Cells[1,Count];;ZapEnd();Count,count2,tmp,k:integer;:=1;form1.RadioButton2.Checked then k:=-1;.StringGrid4.RowCount :=form1.StringGrid3.RowCount;.StringGrid4.ColCount := form1.StringGrid3.ColCount;count:=0 to form1.StringGrid3.RowCount-1 docount2:=0 to form1.StringGrid3.ColCount-1 do.StringGrid4.Cells [Count2,count] :=form1.StringGrid3.Cells [Count2,count];count:=1 to form1.StringGrid3.RowCount-1 docount2:=1 to form1.StringGrid3.ColCount-1 do.StringGrid4.Cells [Count2,count] :=floattostr(k*strtofloat(form1.StringGrid3.Cells [Count2,count]));count:=1 to form1.StringGrid4.ColCount -1 do.StringGrid4.Cells[count,1]:=floattostr(strtofloat(form1.StringGrid4.Cells[count,1])*(-1));:=form1.StringGrid4.ColCount;.StringGrid4.ColCount := tmp + form1.StringGrid3.RowCount -2;Count:=2 to form1.StringGrid3.RowCount -1 do.StringGrid4.Cells [count+tmp-2,0]:=form1.StringGrid3.Cells [0,count];;count:=tmp to form1.StringGrid4.ColCount-1 docount2:=1 to form1.StringGrid4.RowCount - 1 doform1.StringGrid4.Cells [count,0]= form1.StringGrid4.Cells [0,count2] then.StringGrid4.Cells [count,count2]:='1'.StringGrid4.Cells [count,count2]:='0';;Proverka():boolean;Count,Count2:integer;:boolean;:=true;.StringGrid3.Cells [1,1]:='0';Count:=1 to form1.StringGrid3.RowCount -1 doCount2:=1 to form1.StringGrid3.ColCount -1 doform1.StringGrid3.Cells [Count2,Count]='' then:=false;.Label5.Caption :='Ошибка заполнения таблицы. Найдено пустое поле!';

end;

proverka:=boo;;SimplexMetod(n:boolean);Count,Count2,MinC,MinR:integer;,zna4,zna4TMP,zna4TMP2:double;,reshil:boolean;:=false;:=false;count:=1 to form1.StringGrid4.ColCount -1 dostrtofloat(form1.StringGrid4.Cells [count,1])<0 then boo:=true;boo then:=2;:=strtofloat(form1.StringGrid4.Cells [2,1]);count:=2 to form1.StringGrid4.ColCount -1 dostrtofloat(form1.StringGrid4.Cells [count,1])<zna4 then:=strtofloat(form1.StringGrid4.Cells [count,1]);:=count;;TMP:=strtofloat(form1.StringGrid4.Cells [1,2]);TMP2:=strtofloat(form1.StringGrid4.Cells [MinC,2]);:=zna4TMP/zna4TMP2;:=2;Count:=2 to form1.StringGrid4.RowCount -1 doTMP:=strtofloat(form1.StringGrid4.Cells [1,count]);TMP2:=strtofloat(form1.StringGrid4.Cells [MinC,count]);zna4TMP2>0 then:=zna4TMP/zna4TMP2;zna4<MinEl then:=zna4;:=Count;;;;:=strtofloat(form1.StringGrid4.Cells[MinC,MinR]);count:=1 to form1.StringGrid4.ColCount -1 do.StringGrid4.Cells[count,MinR]:=floattostr(strtofloat(form1.StringGrid4.Cells[count,MinR])/MinEl);count:=1 to form1.StringGrid4.ColCount -1 doCount2:=1 to form1.StringGrid4.RowCount -1 do(count<>MinC)and(count2<>MinR) then.StringGrid4.Cells [count,count2]:=floattostr(strtofloat(form1.StringGrid4.Cells [count,count2])-strtofloat(form1.StringGrid4.Cells [count,MinR])*strtofloat(form1.StringGrid4.Cells [MinC,count2]));.StringGrid4.Cells[0,MinR]:=form1.StringGrid4.Cells[MinC,0];count:=1 to form1.StringGrid4.RowCount - 1 doform1.StringGrid4.Cells [MinC,0]= form1.StringGrid4.Cells [0,count] then.StringGrid4.Cells [MinC,count]:='1'.StringGrid4.Cells [MinC,count]:='0';.Label5.Caption :='Решение найдено!!!';:=true;;reshil or n;;DvSimplexMetod(n:boolean);Count,Count2,MinC,MinR:integer;,zna4,zna4TMP,zna4TMP2:double;,reshil,dv:boolean;:=false;:=form1.RadioButton2.Checked;:=false;count:=2 to form1.StringGrid4.ColCount -1 dostrtofloat(form1.StringGrid4.Cells [count,1])<0 then boo:=true;count:=2 to form1.StringGrid4.RowCount -1 dostrtofloat(form1.StringGrid4.Cells [1,count])<0 then boo:=true;boo then:=2;:=strtofloat(form1.StringGrid4.Cells [1,2]);count:=2 to form1.StringGrid4.RowCount -1 dostrtofloat(form1.StringGrid4.Cells [1,count])<zna4 then:=strtofloat(form1.StringGrid4.Cells [1,count]);:=count;;TMP:=strtofloat(form1.StringGrid4.Cells [2,1]);TMP2:=strtofloat(form1.StringGrid4.Cells [2,MinR]);:=zna4TMP/zna4TMP2;:=2;Count:=2 to form1.StringGrid4.ColCount -1 doTMP:=strtofloat(form1.StringGrid4.Cells [count,1]);TMP2:=strtofloat(form1.StringGrid4.Cells [count,MinR]);(zna4TMP>0) and (zna4TMP2<0) then:=zna4TMP/zna4TMP2;abs(zna4)<abs(MinEl) then:=zna4;:=Count;;;;:=strtofloat(form1.StringGrid4.Cells[MinC,MinR]);count:=1 to form1.StringGrid4.ColCount -1 do.StringGrid4.Cells[count,MinR]:=floattostr(strtofloat(form1.StringGrid4.Cells[count,MinR])/MinEl);count:=1 to form1.StringGrid4.ColCount -1 doCount2:=1 to form1.StringGrid4.RowCount -1 do(count<>MinC)and(count2<>MinR) then.StringGrid4.Cells [count,count2]:=floattostr(strtofloat(form1.StringGrid4.Cells [count,count2])-strtofloat(form1.StringGrid4.Cells [count,MinR])*strtofloat(form1.StringGrid4.Cells [MinC,count2]));.StringGrid4.Cells[0,MinR]:=form1.StringGrid4.Cells[MinC,0];count:=1 to form1.StringGrid4.RowCount - 1 doform1.StringGrid4.Cells [MinC,0]= form1.StringGrid4.Cells [0,count] then.StringGrid4.Cells [MinC,count]:='1'.StringGrid4.Cells [MinC,count]:='0';.Label5.Caption :='Решение найдено!!!';:=true;;reshil or n;;TForm1.BitBtn6Click(Sender: TObject);.Close;;TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);key of

#8: ;

#13: edit2.SetFocus ;

'a'..'z': ;

'A'..'Z': ;

'а'..'я': ;

'А'..'Я': ;

'0'..'9': ;key:=#0;;;TForm1.BitBtn1Click(Sender: TObject);Count:integer;:boolean;:=true;(edit1.Text ='')or(edit2.Text ='') then:=false;.Caption :='Заполните все поля ввода.';;Count := 1 to stringgrid1.RowCount do(edit1.Text = stringgrid1.Cells [0,Count]) then:=false;;boo then(stringgrid1.RowCount = 2) and (stringgrid1.Cells[0,1]='') then.RowCount := stringgrid1.RowCount.RowCount := stringgrid1.RowCount + 1;.Cells [0,stringgrid1.RowCount - 1] := edit1.Text;.Cells [1,stringgrid1.RowCount - 1] := edit2.Text;.Caption :='Ресурс добавлен!';.SetFocus();.Caption :='Такой ресурс уже есть';;TForm1.StringGrid1Click(Sender: TObject);i :integer;:=stringgrid1.Row;.Text := stringgrid1.Cells [0,i];.Text := stringgrid1.Cells [1,i];.Caption := '';;TForm1.BitBtn7Click(Sender: TObject);Count,i:integer;:boolean;:=true;Count := 1 to stringgrid1.RowCount do(edit1.Text = stringgrid1.Cells [0,Count]) then:=Count;:=false;;;boo then

label5.Caption :='Такого ресурса нет в списке!';

end.Cells [0,i] := edit1.Text;.Cells [1,i] := edit2.Text;.Caption :='Ресурс изменен.';;;TForm1.FormCreate(Sender: TObject);.Cells [0,0]:='Наименование';.Cells [1,0]:='ОФР';.Cells [0,0]:='Наименование';.Cells [1,0]:='Стоимость';;TForm1.BitBtn2Click(Sender: TObject);Count,i:integer;:boolean;:=true;Count := 1 to stringgrid1.RowCount do(edit1.Text = stringgrid1.Cells [0,Count]) then:=Count;:=false;;;boo then

label5.Caption :='Такого ресурса нет в списке!';

end.Rows[i].Clear ;Count := i to stringgrid1.RowCount-1 do.Cells [0,Count]:=stringgrid1.Cells [0,Count+1];.Cells [1,Count]:=stringgrid1.Cells [1,Count+1];;.RowCount := stringgrid1.RowCount -1;.Caption :='Ресурс стерт.';;;TForm1.Edit2KeyPress(Sender: TObject; var Key: Char);key of

#8: ;

#13: bitbtn1.SetFocus;

'0'..'9': ;

#110:;

#46:;key:=#0;;;TForm1.BitBtn4Click(Sender: TObject);.Caption :='';groupbox5.Visible = true then.Visible := false;.Visible := true;.Visible :=false;.Visible :=false;.Clear();.Enabled :=false;form1.RadioButton2.Checked then(False)(False);();;groupbox4.Visible = true thenProverka() then.Visible := false;.Visible := true;.Visible :=true;.Visible :=true;.Caption := '<Ответ>';();;;groupbox3.Visible = true thenstringgrid2.Cells[0,1]<>'' then.Visible := false;.Visible := true;.ColCount :=2;.RowCount :=2;();label5.Caption :='Подуктов нет?!';;groupbox1.Visible = true thenstringgrid1.Cells[0,1]<>'' then.Enabled := true;.Visible := false;.Visible := true;label5.Caption :='Ресурсы не могут отсутствовать!';;;TForm1.BitBtn5Click(Sender: TObject);.Caption :='';groupbox3.Visible = true then.Enabled := false;.Visible := false;.Visible := true;;groupbox4.Visible = true then.Visible := false;.Visible := true;;groupbox5.Visible = true then.Visible := false;.Visible := true;.Visible :=false;.Visible :=false;.Caption := 'Дальше -->';.Enabled :=true;;groupbox6.Visible = true then.Visible := false;.Visible := true;.Visible :=true;.Visible :=true;.Enabled :=true;;;TForm1.Edit3KeyPress(Sender: TObject; var Key: Char);key of

#8: ;

#13: edit4.SetFocus ;

'a'..'z': ;

'A'..'Z': ;

'а'..'я': ;

'А'..'Я': ;

'0'..'9': ;key:=#0;;;TForm1.Edit4KeyPress(Sender: TObject; var Key: Char);key of

#8: ;

#13: bitbtn3.SetFocus;

'0'..'9': ;

#110:;

#46:;key:=#0;;;TForm1.BitBtn3Click(Sender: TObject);Count:integer;:boolean;:=true;(edit3.Text ='')or(edit4.Text ='') then:=false;.Caption :='Заполните все поля ввода.';;Count := 1 to stringgrid2.RowCount do(edit3.Text = stringgrid2.Cells [0,Count]) then:=false;;boo then(stringgrid2.RowCount = 2) and (stringgrid2.Cells[0,1]='') then.RowCount := stringgrid2.RowCount.RowCount := stringgrid2.RowCount + 1;.Cells [0,stringgrid2.RowCount - 1] := edit3.Text;.Cells [1,stringgrid2.RowCount - 1] := edit4.Text;

label5.Caption :='Продукт добавлен!';

edit3.SetFocus();.Caption :='Такой продукт уже есть';;TForm1.BitBtn9Click(Sender: TObject);Count,i:integer;:boolean;:=true;Count := 1 to stringgrid2.RowCount do(edit3.Text = stringgrid2.Cells [0,Count]) then:=Count;:=false;;;boo then

label5.Caption :='Такого продукта нет в списке!';

end.Rows[i].Clear ;Count := i to stringgrid2.RowCount-1 do.Cells [0,Count]:=stringgrid2.Cells [0,Count+1];.Cells [1,Count]:=stringgrid2.Cells [1,Count+1];;.RowCount := stringgrid2.RowCount -1;.Caption :='Продукт стерт.';;;TForm1.BitBtn8Click(Sender: TObject);Count,i:integer;:boolean;:=true;Count := 1 to stringgrid2.RowCount do(edit3.Text = stringgrid2.Cells [0,Count]) then:=Count;:=false;;;boo then

label5.Caption :='Такого продукта нет в списке!';

end.Cells [0,i] := edit3.Text;.Cells [1,i] := edit4.Text;

label5.Caption :='Продукт изменен.';

end;;TForm1.StringGrid2Click(Sender: TObject);i :integer;:=stringgrid2.Row;.Text := stringgrid2.Cells [0,i];.Text := stringgrid2.Cells [1,i];.Caption := '';;TForm1.StringGrid3KeyPress(Sender: TObject; var Key: Char);key of

#8: ;

#13:;

'0'..'9': ;

#110:;

',': ;

#46:;key:=#0;;;TForm1.BitBtn11Click(Sender: TObject);form1.RadioButton2.Checked then(True)(True);;TForm1.BitBtn10Click(Sender: TObject);form1.RadioButton2.Checked then(False)(False);;

//заполняем затраты();.Cells [2,2] := '2';.Cells [2,3] := '1';.Cells [2,4] := '7';.Cells [2,5] := '4';.Cells [3,2] := '4';.Cells [3,3] := '8';.Cells [3,4] := '4';.Cells [3,5] := '6';.Cells [4,2] := '5';.Cells [4,3] := '6';.Cells [4,4] := '5';3.Cells [4,5] := '7';

//заполняем и выполняем

bitBtn5.Enabled:=true;Proverka() then.Visible := false;.Visible := true;.Visible :=true;.Visible :=true;.Caption := '<Ответ>';();;;TForm1.Button2Click(Sender: TObject);.Visible :=false;.Visible :=false;.Caption := 'Дальше -->';.Enabled :=true;.Visible := true;.Visible := false;.Visible := false;.Visible := false;.Visible := false;.Caption:='';();;TForm1.Button3Click(Sender: TObject);

begin.MessageBox('Данный программный продукт был разработан Гринёвой Татьяной.'+ #13 +' Использование данного продукта разрешено только в учебных целях.','О программе.');;.


Список использованной литературы


1Зайченко Ю.П., Шумилова С.А. Исследование операций.

2Вентцель. Е. С. Элементы динамического программирования / Е. С.

Карасев А.Н., Н.Ш. Кремер, Т.Н. Савельева «Математические методы в экономике», М. 2000

Лищенко «Линейное и нелинейное программирование», М. 2003

А.Н. Карасев, Н.Ш. Кремер, Т.Н. Савельева «Математические методы в экономике», М.2000

Интернет источники:

<http://cyberfac.ru/>

<http://emm.ostu.ru/l>

<http://matekonomika.narod.ru/>

7 О.О. Замков, А.В. Толстопятенко, Ю.Н. Черемных «Математические методы <http://institutiones.com/download/books/1039-matematicheskie-metodi-v-ekonomike.html>»


Содержание Введение .Симплекс-метод .Линейное программирование .Общая характеристика задачи о смесях .Аналитическое решение .Математическа

Больше работ по теме:

КОНТАКТНЫЙ EMAIL: [email protected]

Скачать реферат © 2017 | Пользовательское соглашение

Скачать      Реферат

ПРОФЕССИОНАЛЬНАЯ ПОМОЩЬ СТУДЕНТАМ