Автор работы: Пользователь скрыл имя, 29 Марта 2011 в 15:13, реферат
Линейное программирование является частным случаем выпуклого программирования, которое в свою очередь является частным случаем математического программирования. Одновременно оно — основа нескольких методов решения задач целочисленного и нелинейного программирования. Одним из обобщений линейного программирования является дробно-линейное программирование.
1. Количество базовых переменных
2. Количество переменных
3. Степень точности
Выходная информация в приложении – это таблицы, в первую таблицу заносится условие задачи, во второй таблице будут отражены промежуточные результаты i-ой итерации
7.1
Описание программного продукта
В моём приложении
6 процедур:
//по вводу данных формируются матрицы на форме2 "Решение"
procedure TForm1.Button1Click(Sender: TObject);
//процедура ввода данных задачи
procedure TForm1.FormCreate(Sender: TObject);
//процедура решения k-й таблицы
procedure TForm2.resh;
//процедура формирования новой таблицы
procedure TForm2.newtab;
//процедура решения по кнопке "Вычислить"
procedure TForm2.Button1Click(Sender: TObject);
//по закрытию формы - выход из программы
procedure TForm2.FormClose(Sender:
TObject; var Action: TCloseAction);
7.2
Руководство пользователю
1.Открыть Program.exe, появится окно приложения, вводим в него количество переменных, количество базовых переменных и степень точности, затем выбираем на максимум или на минимум, нажать кнопку начать, появится форма для ввода задачи
2.Форма для ввода задания
3. Вводим данные в таблицу и нажимаем кнопку «Решение»
4.После нажатия кнопки производится вычисление задачи, высвечивается сообщение с результатом i-ой итерации
На
сообщении нажимаем кнопку «ОК», выводится
последняя таблица с конечным
результатом.
Заключение
В процессе работы над курсовым проектом были закреплены, ранее полученные знания по линейному программированию, в частности по решению задач линейного программирования симплекс- методом. А также получены практические навыки по созданию алгоритма вычисления задач в среде ООП Delphi 7.В результате моего курсового проекта было получено решение задачи на нахождение максимальной прибыли от продажи радиаторов, симплекс- методом.
Методы оптимизации в примерах и задачах: Учеб. пособие/ А. В. Пантелеев, Т. А. Летова. – М.: Высш. шк., 2002. – 544.
Конспект по “Мат. Методам”
program Program;
uses
Forms,
Unit1 in 'Unit1.pas' {Form1},
Unit2 in 'Unit2.pas' {Form2};
//Unit4 in 'Unit4.pas'
{Form4};
{$R *.res}
begin
Application.Initialize;
//Application.CreateForm(
Application.CreateForm(TForm1, Form1);
Application.CreateForm(TForm2, Form2);
Application.Run;
end.
//ФОРМИРОВАНИЕ МАТРИЦ НА ФОРМЕ
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls,
Spin;
type
TForm1 = class(TForm)
Button1: TButton;
Edit1: TEdit;
Edit2: TEdit;
Label1: TLabel;
Label2: TLabel;
panel1: TPanel;
Label3: TLabel;
SpinEdit1: TSpinEdit;
RadioButton1: TRadioButton;
RadioButton2: TRadioButton;
Label4: TLabel;
Label5: TLabel;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
mgl:array[1..200,1..200] of tedit;
strm:array[1..100] of tedit;
mp:array[1..2,1..100] of tedit;
x,y:integer;
e:longint;
maxmin:integer;
prz:byte;
sh:byte;
implementation
uses Unit2, Unit3;
{$R *.dfm}
//по вводу данных формируются матрицы на форме2 "Решение"
procedure TForm1.Button1Click(Sender: TObject);
var i,j,k,xtop,yleft:integer;
const cx=45;
ch=20;
nleft=-30;
ntop=80;
cy=20;
cw=45;
begin
inc(sh);
e:=SpinEdit1.Value;
if RadioButton1.Checked then maxmin:=-1 else maxmin:=1;
if (Edit2.Text='')or(Edit1.Text='
then begin showmessage('Введите значение >0');exit;end;
x:=strtoint(Edit1.Text)+3;
y:=strtoint(Edit2.Text);
for i:=1 to y do
begin
xtop:=ntop+i*cy;
for j:=1 to x do
begin
yleft:=nleft+j*cx;
if (i=1)and(j>2) then
begin
strm[j-2]:=tedit.Create(Form2)
with strm[j-2] do
begin
Parent:=Form2;
Top:=ntop+y*cy+30;
Left:=yleft;
Width:=cw;
Height:=ch;
end;
end;
if (i=1)and(j>3) then
for k:=1 to 2 do
begin
mp[k,j-3]:=tedit.Create(Form2)
with mp[k,j-3] do
begin
Parent:=Form2;
Top:=50+(k-1)*20;
Left:=yleft;
Width:=cw;
Height:=20;
end;
end;
mgl[i,j]:=tedit.Create(Form2);
with mgl[i,j] do
begin
Parent:=Form2;
Top:=xtop;
Left:=yleft;
Width:=cw;
Height:=ch;
end;
end;
end;
Form2.Show;
form1.Visible:=false;
end;
//ввод данных моей задачи
procedure TForm1.FormCreate(Sender: TObject);
begin
Edit1.Text:='12';
Edit2.Text:='7';
RadioButton1.Checked:=true;
end;
end.
//ФОРМА РЕШЕНИЯ
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Mask,
ExtCtrls, jpeg;
type
TForm2 = class(TForm)
Button1: TButton;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Button3: TButton;
Label2: TLabel;
Label3: TLabel;
procedure Button1Click(Sender: TObject);
procedure resh(var x1,y1:byte;var rm:real;var pr:boolean);
procedure newtab(x1,y1:byte;rm:real);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure
Button3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form2: TForm2;
mgl_r:array[1..200,1..200]of string;
strm_r:array[1..200]of string;
pr:boolean;
xr,yr:byte;
implementation
uses Unit1, Unit3;
{$R *.dfm}
//решение k-й таблицы
procedure TForm2.resh;
var i,j:byte;
dstrm,maxstrm,minp:real;
begin
pr:=true;
maxstrm:=0;
for j:=3 to x do
begin
dstrm:=0;
for i:=1 to y do
begin
mgl_r[i,j]:=mgl[i,j].text;
dstrm:=dstrm+strtofloat(mgl[i,
end;
if(j>3)then
begin
dstrm:=dstrm-strtofloat(mp[1,
if(maxmin*dstrm>maxstrm*
end;
strm[j-2].text:=floattostr(
end;
if(maxmin*maxstrm>0)then pr:=false;
minp:=999999;
for i:=1 to y do
if((strtofloat(mgl[i,x1].Text)
begin
minp:=strtofloat(mgl[i,3].
y1:=i;end;
rm:=strtofloat(mgl[y1,x1].
mgl[y1,x1].Color:=clskyblue;
mgl[y1,1].text:=mp[2,x1-3].
mgl[y1,2].text:=mp[1,x1-3].
end;
//формирование новой таблицы
procedure TForm2.newtab;
var i,j:byte;
begin
for i:=1 to y do