Автор: Пользователь скрыл имя, 25 Января 2012 в 22:49, реферат
В последние годы в прикладной математике большое внимание уделяется новому классу задач оптимизации, заключающихся в нахождении в заданной области точек наибольшего или наименьшего значения некоторой функции, зависящей от большого числа переменных. Это так называемые задачи математического программирования, возникающие в самых разнообразных областях человеческой деятельности и прежде всего в экономических исследованиях, в практике планирования и организации производства.
Введение
Линейное программирование
Симплекс метод
Постановка задачи
Разработка алгоритма
Решение задачи
Программная реализация на языке Delphi
Приложение
Заключение
Список используемой литературы
is_basis:=true;
for k:=1 to n do
if k<>i then
if (matrix[k,j]<>0) then
if (is_basis=true) then
begin
is_basis:=false;
all_basis[i]:=0;
end;
end;
if is_basis=false then
begin
i_basis:=i_basis+1;
y:=y+1;
for k:=1 to n+1 do
begin {во всех ограничениях и в ЦФ}
{перед правой частью добавляем столбец}
matrix[k,m+y+1]:=matrix[k,m+y]
matrix[k,m+y]:=0;{состоящий из нулей}
end;
matrix[i,m+y]:=1;
all_basis[i]:=m+y;
end;
end;
{//////////////// Закончили ввод искусственного базиса //////////////////////}
{/////////////////////////////
{/////////////////////////////
{//////////////// теперь надо от него избавиться ////////////////////////////}
if i_basis>0 then
begin
write(f, '<H2>Необходимо ввести искусственный базис</H2>');
zapisat(n+1,m+y+1,-1,-1);
writeln(f, '<P>Искусственный базис введен.<br>');
writeln(f, 'Избавившись от него, получим первое допустимое решение</P>');
iter:=0;
repeat
inc(iter);
findved;
preobr;
until (i_basis=0) or (iter=20) or (done=true);
if i_basis=0 then
begin
writeln(f,'<P>Искусственный базис выведен полностью.<br>');
writeln(f,'Получено первое допустимое решение!</P>');
end
else
begin
writeln(f,'<P>Не удалось вывести искусственный базис.<br>');
writeln(f,'Решение не найдено.</P>');
end;
end;
{//////////////////////// попытки избавленя окончены ////////////////////////}
{/////////////////////////////
{/////////////////////////////
if i_basis=0 then
begin
iter:=0;
findved;
if done=false then
begin
writeln(f,'<H2>Применяем симплекс метод</H2>');
repeat
inc(iter);
findved;
preobr;
until (done=true) or (iter=20);
end;
end;
otvet;
{/////////////////////////////
writeln(f,'</BODY>');
writeln(f,'</HTML>');
CloseFile(f);
{/////////////////////////////
end;
{/////////////////////////////
{///////// все, что ниже, относится к переходам между шагами ////////////////}
{/////////////////////////////
procedure TForm1.ExitClick(Sender: TObject);
begin
Close();
end;
procedure TForm1.Button_NextClick(
begin
step:=step+1;
Form1.Button_Prev.Enabled:=
case step of
1:Step1;
2:begin
Step2;
Form1.Button_Next.Enabled:=
end;
else step:=step-1;
end;
form1.Caption:='Симплекс метод - шаг '+inttostr(step);
end;
procedure TForm1.Button_PrevClick(
begin
step:=step-1;
Form1.Button_Next.Enabled:=
case step of
0:begin
Init;
Form1.Button_Prev.Enabled:=
end;
1:Step1;
else step:=step+1;
end;
form1.Caption:='Симплекс метод - шаг '+inttostr(step);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Init;
end;
Заключение
В данной курсовой
работе было рассмотрено решение
задач линейного
Таким образом,
вычислительная техника в настоящее
время находит широкое
Список используемой литературы
1. Зайченко Ю.П., Шумилова С.А. Исследование операций.
2. Лищенко «Линейное и нелинейное программирование», М. 2003
3. А.Н. Карасев,
Н.Ш. Кремер, Т.Н. Савельева «
4. Орлов А.И.
Теория принятия решений.
5. Интернет