
Библиографический список
Акулич И.А. Математическое программированиев примерах и задачах. М.: Высш. школа, 1986.
Балашевич В.А. Основы математического программирования. Минск: Высшэйшая школа, 1985.
Гершгорн А.С. Математическое программирование и его применение в экономических расчетах. М.: Экономика, 1968.
Грешилов А.А. Как принять наилучшее решение в реальных условиях. М.: Радио и связь, 1991.
Кузнецов Ю.Н., Кузубов А.Б., Волощенко А.Б. Математическое программирование, М.: Высш. школа, 1980.
Х. Таха «Введение в исследование операций». – М.: Мир, 1985. Т.1,2.
М.С. Красс, Б.П. Чупрынов «Основы математики и ее приложения в экономическом образовании». – М.: Изд. Дело, 2001.
О.М. Кудряшова «Нахождение оптимального решения прямой и двойственной задач ЛП и проведение анализа мат. моделей на чувствительность», метод. указания к курсовой работе.
Приложения приложение а
Листинг программы
Program simple_simplex;
uses crt;
const mm=50; nn=50;
var
A: array[1..mm,1..nn] of double;
fun: array[1..nn] of integer;
m,n:integer;
basis:array[1..nn] of integer;
i,j: integer;
x: array[1..nn] of double;
Procedure solve;
var i,j,i0,j0:integer;
tmp:double;
opt:boolean;
begin
opt:=false;
repeat
j0:=-1; i0:=0;
while (j0<m+n+1) and (A[m+1,j0]>=0) do inc(j0);
if A[m+1,j0]>=0 then opt:=true;
if not opt then begin
tmp:=10000;
for i:=1 to m do
if (A[i,j0]>0) and (A[i,m+n+1]/A[i,j0]<tmp) then
begin
tmp:=A[i,m+n+1]/A[i,j0];
i0:=i
end;
basis[i0]:=j0;
for i:=1 to m+1 do
if i<>i0 then
begin
tmp:=A[i,j0];
for j:=1 to m+n+1 do
A[i,j]:=A[i,j]-A[i0,j]*tmp/A[i0,j0];
end;
tmp:=A[i0,j0];
for j:=1 to m+n+1 do
A[i0,j]:=A[i0,j]/tmp;
end;
until opt;
end;
begin
writeln('Vvedite zna4enie n');
read(n);
writeln('Vvedite zna4enie m');
read(m);
writeln('Vvedite koefficientu celevoi funkcii');
for i:=1 to n do read(fun[i]);
writeln('Vvedite zna4enie roefficientov bez pravoi 4asti');
for i:=1 to m do
for j:=1 to n do
read(A[i,j]);
writeln('Vvedite pravie 4asti ograni4enii');
for i:=1 to m do
read(A[i,n+m+1]);
for i:=1 to m do
A[i,n+i]:=1;
fillchar (A[m+1],sizeof(A[m+1]),0);
for i:=1 to m do
basis[i]:=n+i;
for j:=1 to n do
A[m+1,j]:=-fun[j];
solve;
for i:=1 to m do
if basis[i]<=n then;
x[basis[i]]:=A[i,m+n+1];
writeln('max f(x)=',A[m+1,m+n+1]:0:3);
end.