Методы исследования операций
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. Конспекты лекций по курсу “Экономико-математическое моделирование”. Темы: “Производственные функции как простейшие экономико-математические модели”, “Экономико-математические модели условной классической оптимизации”, “Экономико-математические модели линейного программирования, их численная реализация и анализ”, “Модели и методы динамического программирования”.
Другие рефераты на тему «Экономико-математическое моделирование»:
Поиск рефератов
Последние рефераты раздела
- Выборочные исследования в эконометрике
- Временные характеристики и функция времени. Графическое представление частотных характеристик
- Автоматизированный априорный анализ статистической совокупности в среде MS Excel
- Биматричные игры. Поиск равновесных ситуаций
- Анализ рядов распределения
- Анализ состояния финансовых рынков на основе методов нелинейной динамики
- Безработица - основные определения и измерение. Потоки, запасы, утечки, инъекции в модели