Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
40694-10Variant.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
549.38 Кб
Скачать

Библиографический список

    1. Акулич И.А. Математическое программированиев примерах и задачах. М.: Высш. школа, 1986.

    2. Балашевич В.А. Основы математического программирования. Минск: Высшэйшая школа, 1985.

    3. Гершгорн А.С. Математическое программирование и его применение в экономических расчетах. М.: Экономика, 1968.

    4. Грешилов А.А. Как принять наилучшее решение в реальных условиях. М.: Радио и связь, 1991.

    5. Кузнецов Ю.Н., Кузубов А.Б., Волощенко А.Б. Математическое программирование, М.: Высш. школа, 1980.

    6. Х. Таха «Введение в исследование операций». – М.: Мир, 1985. Т.1,2.

    7. М.С. Красс, Б.П. Чупрынов «Основы математики и ее приложения в экономическом образовании». – М.: Изд. Дело, 2001.

    8. О.М. Кудряшова «Нахождение оптимального решения прямой и двойственной задач ЛП и проведение анализа мат. моделей на чувствительность», метод. указания к курсовой работе.

Приложения приложение а

Листинг программы

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.