Методы исследования операций

write(ft,' ',xi:10:2,' ',effect:10:2,' ');

{}

if xi = K then

begin

writeln(ft,max_effect:10:2);

break;

end;

writeln(ft);

if K-xi < delta then xi := K

else xi := xi + delta;

end;

{}

SetValue(F[n],K,max_effect);

{}

SetValue(x[n],K,arg_max_effect);

{}

K := K + delta;

end;

writeln(ft,'****************************************

*********************************************************');

{}

for i:=n-1 downto 2 do

begin

{}

{ y:=0;}

{}

_y_:=min(_x[i-1],Kmax);

{new}

y:=_y_;

{}

writeln(ft,'Шаг ',n-i+1);

writeln(ft,' .');

write(ft,' K',i,' X',i,' fi',i,'(X',i,') K',i+1,'=K',i,'-X',i,'+f(X',i,')');

write(ft,' F',n-i,'(K',i+1,') fi',i,'(X',i,')+F',n-i,'(K',i+1,') ',' F',n-i+1,'(K',i,')');

writeln(ft);

{}

{ while y<=_y_ do}

{new}

while y>=0 do

begin

{}

max_effect := -10000000;

{}

K := Kmax - y + fret(a,y);

{}

_x_ := min(_x[i],K);

{}

xi := 0;

{}

writeln(ft,' .');

while xi <= _x_ do

begin

{}

effect := GetValue(fi[i],xi) + GetValue(F[i+1],K - xi + fret(a,xi));

{}

if effect > max_effect then

begin

max_effect := effect;

arg_max_effect := xi;

end;

{}

if xi=0 then

write(ft,K:10:2)

else

write(ft,' ');

write(ft,' ',xi:10:2,' ',GetValue(fi[i],xi):10:2,' ',K - xi + fret(a,xi):10:2);

write(ft,' ',GetValue(F[i+1],K - xi + fret(a,xi)):10:2,' ',effect:10:2,' ');

{}

if xi = _x_ then

begin

writeln(ft,max_effect:10:2);

break;

end;

writeln(ft);

if _x_ - xi < delta then xi := _x_

else xi := xi + delta;

end;

{}

SetValue(F[i],K,max_effect);

{}

SetValue(x[i],K,arg_max_effect);

{}

{ y := y + delta;}

{new}

y := y-delta;

end;

writeln(ft,'*************************************************************************************************');

end;

{}

i:=1;

max_effect := -10000000;

K := Kmax;

_x_ := min(_x[i],K);

xi := 0;

{ SetValue(x[i],K,0);}

writeln(ft,'Шаг ',n-i+1);

writeln(ft,' .');

write(ft,' K',i,' X',i,' fi',i,'(X',i,') K',i+1,'=K',i,'-X',i,'+f(X',i,')');

write(ft,' F',n-i,'(K',i+1,') fi',i,'(X',i,')+F',n-i,'(K',i+1,') ',' F',n-i+1,'(K',i,')');

writeln(ft);

writeln(ft,' .');

{}

while xi <= _x_ do

begin

{}

effect := GetValue(fi[i],xi) + GetValue(F[i+1],K - xi + fret(a,xi));

{}

if effect > max_effect then

begin

max_effect := effect;

arg_max_effect := xi;

end;

{}

if xi=0 then

write(ft,K:10:2)

else

write(ft,' ');

write(ft,' ',xi:10:2,' ',GetValue(fi[i],xi):10:2,' ',K - xi + fret(a,xi):10:2);

write(ft,' ',GetValue(F[i+1],K - xi + fret(a,xi)):10:2,' ',effect:10:2,' ');

{}

if xi = _x_ then

begin

writeln(ft,max_effect:10:2);

break;

end;

writeln(ft);

{}

if _x_ - xi < delta then xi := _x_

else xi := xi + delta;

end;

{}

SetValue(F[i],K,max_effect);

{}

SetValue(x[i],K,arg_max_effect);

{}

writeln(ft,'*************************************************************************************************');

{}

K := Kmax;

writeln(ft);

writeln(ft,'Оптимальное распределение вложений :');

for i:=1 to n do

begin

{}

arg_max_effect := GetValue(x[i],K);

writeln(ft,'x',i,' = ',arg_max_effect:10:2);

{}

K := K - arg_max_effect + fret(a,arg_max_effect);

end;

{}

writeln(ft,'Максимальный экономический эффект составляет ',max_effect:10:2);

{}

closefile(ft);

{}

end;

end;

end.

UNIT Tables;

{}

INTERFACE

const

_N = 20;{}

_M = 50;{}

type

arr_1_M = array [1 _M] of real;{}

{}

table = record

n:integer; {}

x_x:arr_1_M; {}

f_x:arr_1_M; {}

end;

ttable = array[1 _N] of table;{}

{}

function linterp(x1,x2,x:real;y1,y2:real):real;

{}

function GetValue(t:table;arg:real):real;

{}

procedure Vstavka(var t:table;iBefore:integer;arg:real;val:real);

{}

procedure SetValue(var t:table; arg:real; val:real);

IMPLEMENTATION

{}

function linterp;

begin

linterp := y1 + (x-x1)*(y2-y1)/(x2-x1);

end;

{}

function GetValue;

var

res:real;

i:integer;

begin

res:= 0;

for i:=1 to t.n do

begin

if arg = t.x_x[i] then

begin

{}

res := t.f_x[i];

break;

end;

if (i>1) and (arg>t.x_x[i-1]) and (arg<t.x_x[i]) then

begin

{}

res := linterp(t.x_x[i-1],t.x_x[i],arg,t.f_x[i-1],t.f_x[i]);

break;

end

end;

if(arg>t.x_x[t.n]) then

{}

res := t.f_x[t.n];

GetValue := res;

end;

{}

procedure Vstavka;

var

i:integer;

args:arr_1_M;

vals:arr_1_M;

begin

if iBefore=1 then

begin

{}

args[1] := arg;

vals[1] := val;

{}

for i:=1 to t.n do

begin

args[i+1] := t.x_x[i];

vals[i+1] := t.f_x[i];

end;

{}

t.n := t.n + 1;

{}

for i:=1 to t.n do

begin

t.x_x[i] := args[i];

t.f_x[i] := vals[i];

end;

end

else

begin

{}

for i:=1 to iBefore-1 do

begin

args[i] := t.x_x[i];

vals[i] := t.f_x[i];

end;

{}

args[iBefore] := arg;

vals[iBefore] := val;

{}

for i:=iBefore to t.n do

begin

args[i+1] := t.x_x[i];

vals[i+1] := t.f_x[i];

end;

{}

t.n := t.n + 1;

{}

for i:=1 to t.n do

begin

t.x_x[i] := args[i];

t.f_x[i] := vals[i];

end;

end;

end;

procedure SetValue;

var

i:integer;

b:boolean;

begin

{}

b := false;

{}

for i:=1 to t.n do

begin

if arg = t.x_x[i] then

begin

t.f_x[i] := val;

b := true;

break;

end

else

if arg < t.x_x[i] then

begin

Vstavka(t,i,arg,val);

b:=true;

break;

end

end;

{}

if t.n = 0 then

{}

Vstavka(t,1,arg,val)

else

{}

if b = false then

{}

Vstavka(t,t.n+1,arg,val);

end;

Begin

End.

Скриншоты по работе с программой.

Начало работы с программой.

Выбор файла с исходными данными.

Выбор файла для вывода результатов.

Расчет завершен.

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

1. Конспекты лекций по курсу “Экономико-математическое моделирование”. Темы: “Производственные функции как простейшие экономико-математические модели”, “Экономико-математические модели условной классической оптимизации”, “Экономико-математические модели линейного программирования, их численная реализация и анализ”, “Модели и методы динамического программирования”.

Страница:  1  2  3  4  5  6  7  8  9  10  11  12 


Другие рефераты на тему «Экономико-математическое моделирование»:

Поиск рефератов

Последние рефераты раздела

Copyright © 2010-2024 - www.refsru.com - рефераты, курсовые и дипломные работы