Главная Случайная страница


Полезное:

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


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






Список использованных источников. 1 акулич. И. Л. Математическое программирование в примерах и задачах / и





1 Акулич. И. Л. Математическое программирование в примерах и задачах / И. Л. Акулич. - учеб. пособие для студентов эконом. спец. вузов. – М.: Высшая школа. 1986.-319 с.

2 Вирт. Н. Алгоритмы + структуры данных = программы / Н. Вирт. - М.: Мир. 1985.-353 с.

3 Муну. М. Математическое программирование. Теория алгоритмов / М. Муну. - М.: Наука. 1990.-342 с.

4 Вентцель. Е. С. Элементы динамического программирования / Е. С. Вентцель. - М.: Наука 1987.-472 с.

5 Аоки. М. Введение в методы оптимизации / М. Аоки. М.: Наука. 1977.-297 с.

6 Краснов. М. В помощь программисту / М. Краснов. – учеб. пособие – СПБ.: Графа. 1999.-214 с.


 

ПРИЛОЖЕНИЯ

Приложение 1

Выполнение процедуры «Рассчитать оптимальный план»

procedure TForm1.Button5Click(Sender: TObject);

Var i,j:byte;

px,wx:real;

begin

prib:=0;

Memo1.Clear;

Memo1.Enabled:=true;

Button6.Enabled:=false;

Button8.Enabled:=true;

For i:=1 to kc do

For j:=1 to kr do

Z[i,j]:=StrToFloat(StringGrid1.Cells[i,j]);

shag:=kr;

Memo1.Lines.Add('Количество вкладываемых средств: '+IntToStr(kc)+' у.е.');

Memo1.Lines.Add('Количество шагов оптимизации: '+IntToStr(shag));

Memo1.Lines.Add('');

For i:=1 to kc do

Begin

P[i,shag].x:=i;

P[i,shag].ws:=Z[i,shag];

End;

Memo1.Lines.Add

{-------------------Обработка второго шага------------------

s:=1; j:=1;

Repeat

For i:=0 to s do

Begin

If (i<>0)

Then Begin If (i=s) Then Begin px:=Z[i,shag-1]; wx:=0; End

Else Begin px:=Z[i,shag-1]; wx:=P[s-i,shag].ws; End;

End

Else Begin px:=0; wx:=P[s-i,shag].ws; End;

Memo1.Lines.Add('| '+FloatToStr(px)+' | '+'x = '+IntToStr(i)+' | '+FloatToStr(wx)+' |');

ptemp[i].x:=i; ptemp[i].ws:=px+wx;

Memo1.Lines.Add('W(s) = '+FloatToStr(px+wx));

End;

max:=ptemp[0].ws; a:=0;

For i:=0 to s do

If ptemp[i].ws>max Then Begin max:=ptemp[i].ws; a:=i; End;

inc(j);

P[j-1,2]:=ptemp[a];

Memo1.Lines.Add('===================================================');

inc(s);

Until s=(kc+1);

shag:=2; s:=kc; j:=1;

Repeat

For i:=0 to s do

Begin

If (i<>0)

Then Begin If (i=s) Then Begin px:=Z[i,shag-1]; wx:=0; End

Else Begin px:=Z[i,shag-1]; wx:=P[s-i,shag].ws; End;

End

Else Begin px:=0; wx:=P[s-i,shag].ws; End;

Memo1.Lines.Add('| '+FloatToStr(px)+' | '+'x = '+IntToStr(i)+' | '+FloatToStr(wx)+' |');

ptemp[i].x:=i; ptemp[i].ws:=px+wx;

Memo1.Lines.Add('W(s) = '+FloatToStr(px+wx));

End;

max:=ptemp[0].ws; a:=0;

For i:=0 to s do

If ptemp[i].ws>max Then Begin max:=ptemp[i].ws; a:=i; End;

inc(j);

P[j-1,1]:=ptemp[a];

Memo1.Lines.Add('===================================================');

inc(s);

Until s=(kc+1);

shag:=1; s:=kc; j:=1;

Repeat

max:=P[j,shag].ws;

For i:=1 to s do

If P[i,shag].ws>max Then Begin max:=P[i,shag].ws; a:=i; End;

Memo1.Lines.Add(IntToStr(shag)+' предприятию выделить '+FloatToStr(P[a,shag].x)+' у.е.');

prib:=prib+P[a,shag].ws;

s:=s-P[a,shag].x;

inc(shag);

Until shag=kr;

For i:=1 to kc do

If P[i,shag].x=s

Then Memo1.Lines.Add(IntToStr(shag)+' предприятию выделить '+FloatToStr(P[i,shag].x)+' у.е.');

Memo1.Lines.Add('');

Memo1.Lines.Add('Ожидаемая прибыль: '+FloatToStr(prib)+' у.е.');

end;

Initialization

shag:=0; prib:=0; max:=0; kc:=0; kr:=0; s:=0; a:=0; end.

 

Приложение 2

Выполнение процедуры «Первичная обработка»для проверки правильности заполнения таблицы;

procedure TForm1.Button4Click(Sender: TObject);

Var i,j,x,count:byte;

b1,b2,b3,b4:boolean;

str:string;

begin

str:='';

b1:=false; b2:=false; b3:=false; b4:=false; count:=0;

For i:=1 to StringGrid1.ColCount-1 do

For j:=1 to StringGrid1.RowCount-1 do

If (StringGrid1.Cells[i,j]='') Then b1:=true;

If b1 Then Showmessage('Не все поля таблицы заполнены!')

Else Begin

For i:=1 to StringGrid1.ColCount-1 do

For j:=1 to StringGrid1.RowCount-1 do

Begin

If (Length(StringGrid1.Cells[i,j])>5) Then Begin b2:=true; StringGrid1.Cells[i,j]:=''; End;

End;

If b2 Then Showmessage('В таблицу внесено слищком большое число прироста прибыли предприятия')

Else Begin

For i:=1 to StringGrid1.ColCount-1 do

For j:=1 to StringGrid1.RowCount-1 do

Begin

str:=StringGrid1.Cells[i,j];

For x:=1 to Length(str) do

If (str[x]=',') Then inc(count);

If ((count>1)or(str[1]=',')or(str[Length(str)]=',')) Then b3:=true;

str:=''; count:=0;

End;

If b3 Then Begin Showmessage('В таблице неверно расставлены запятые!'); Button7.Visible:=true; End

Else Begin

j:=1;

Repeat

For i:=1 to StringGrid1.ColCount-2 do

If ((StrToFloat(StringGrid1.Cells[i,j]))>(StrToFloat (StringGrid1.Cells[i+1,j])))

Then b4:=true;

inc(j);

Until (j=StringGrid1.RowCount);

If b4 Then Begin Showmessage('Числовые данные в таблице заданы неверно!'); Button7.Visible:=true; End

Else Begin

Button2.Enabled:=false;

Button4.Enabled:=false;

Button6.Enabled:=true;

Button5.Enabled:=true;

Button7.Visible:=false;

StringGrid1.Enabled:=false;

End;

End;

End;

End;

end;

Приложение 3

Выполнение процедуры «Изменить» для внесения изменений в табличные данные.

procedure TForm1.Button6Click(Sender: TObject);

begin

StringGrid1.Enabled:=true;

Button5.Enabled:=false;

Button6.Enabled:=false;

Button2.Enabled:=true;

Button4.Enabled:=true;

Button7.Visible:=true;

end;

Приложение 4

Выполнение процедуры «Применить параметры» для генерации таблицы;

procedure TForm1.Button1Click(Sender: TObject);

Var i:byte;

begin

If (Edit1.Text='')

Then Showmessage('Введите количество вкладываемых средств!')

Else If ((Edit1.Text='0')or(Edit1.Text='1')or(Edit1.Text='2'))

Then Showmessage('Для количества вкладываемых средств нужно ввести значение больше 2 у.е.!')

Else If (Length(Edit1.Text)>3)

Then Begin Showmessage('Для количества вкладываемых средств слишком большое значение!'); Edit1.Clear; En Else If (StrToInt(Edit1.Text)>250)

Then Showmessage('Для количества вкладываемых средств слишком большое значение!')

Else If (Edit2.Text='')

Then Showmessage('Введите колличество предприятий!')

Else If (Edit2.Text='0')

Then Showmessage('Для количества предприятий нужно ввести значение отличное от нуля!')

Else If (Length(Edit2.Text)>1)

Then Begin Showmessage('Для колличества предприятий слишком большое значение!'); Edit2.Clear; End

Else If (StrToInt(Edit2.Text)>3)

Then Showmessage('Для колличества предприятий слишком большое значение!')

Else

Begin

StringGrid1.ColCount:=StrToInt(Edit1.Text)+1;

StringGrid1.RowCount:=StrToInt(Edit2.Text)+1;

kc:=StrToInt(Edit1.Text);

kr:=StrToInt(Edit2.Text);

For i:=2 to StringGrid1.ColCount-1 do

StringGrid1.Cells[i,0]:=IntToStr(i);

For i:=2 to StringGrid1.RowCount-1 do

StringGrid1.Cells[0,i]:='F'+IntToStr(i)+'(x)';

StringGrid1.Enabled:=true;

Edit1.Enabled:=false;

{Edit2.Enabled:=false;}

Button1.Enabled:=false;

Button2.Enabled:=true;

Button4.Enabled:=true;

End;

end;

Приложение 4

Выполнение процедуры «Рассчитать новый план»

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

procedure TForm1.Button8Click(Sender: TObject);

var i,j:byte;

begin

For i:=1 to StringGrid1.ColCount-1 do

For j:=1 to StringGrid1.RowCount-1 do

StringGrid1.Cells[i,j]:='';

Edit1.Text:='3';

Edit2.Text:='3';

Edit1.Enabled:=true;

{Edit2.Enabled:=true;}

StringGrid1.ColCount:=2;

StringGrid1.RowCount:=2;

StringGrid1.Cells[0,0]:='X';

StringGrid1.Cells[0,1]:='F1(x)';

StringGrid1.Cells[1,0]:='1';

StringGrid1.Enabled:=false;

Button1.Enabled:=true;

Button5.Enabled:=false;

Button8.Enabled:=false;

Memo1.Enabled:=false;

shag:=0; prib:=0; max:=0; kc:=0; kr:=0; s:=0; a:=0;

Memo1.Clear;

end;

Date: 2016-05-23; view: 273; Нарушение авторских прав; Помощь в написании работы --> СЮДА...



mydocx.ru - 2015-2024 year. (0.007 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию