Линейное программирование_ Решение задач грфическим способом

Страница: 9/10

{пишем ответ:}

{1. Рисуем целевую ф-ю в нужном месте}

c:=MainF.x*XResult+MainF.y*YResult;

MoveTo(MinX+1,MinY-Round(C/MainF.y*MASHT)-1);

SetColor(Red);{рисуем целевую линию на экр. красным}

LineTo(MinX+Round(C/MainF.x*MASHT)+1,MinY-1);

SetLineStyle(1,0,NormWidth);

SetColor(Yellow);

{2. Считаем max(f)}

Str(MainF.x*XResult+MainF.y*YResult:2:1,STmp);

Result:='max(f)='+Stmp;

{3. Рисуем значение на оси X}

Line(MinX+Round(XResult)*MASHT,MinY-Round(YResult)*MASHT,MinX+Round(XResult)*MASHT,MinY+3);

Str(XResult:2:1,STmp);

OutTextXY(MinX+Round(XResult)*MASHT,MinY+4,STmp);

Result:=Result+' при x='+Stmp;

{4. Рисуем значение на оси Y}

Line(MinX+Round(XResult)*MASHT,MinY-Round(YResult)*MASHT,MinX-3,MinY-Round(YResult)*MASHT);

Str(YResult:2:1,STmp);

OutTextXY(MinX-30,MinY-Round(YResult)*MASHT,STmp);

Result:=Result+' y='+Stmp;

SetColor(White);

SetLineStyle(0,0,NormWidth);

OutTextXY(300,230,Result);{Выводим строку ответа}

end

else

OutTextXY(7,3,'Вычисления не закончены!!!');

{Завешение программы}

Bar(0,0,GetMaxX,MaxY-1);

SetColor(White);

OutTextXY(7,3,'Нажмите любую клавишу для выхода');

ReadKey;

End;

BEGIN

i:=0;{Начальное значение кол-ва неравенств}

Gd:=Detect;

InitGraph(Gd, Gm, 'C:BPBGI'); { Путь к BGI драйверам }

if GraphResult <> grOk then Halt(1);

ShowXOY;

EnterNerav;

EnterMainF;

GetResult;

CloseGraph;

END.

Заключение

Программа решения задач линейного программирования графическим способом на IBM PC была написана на языке Borland Pascal 7.1. В ней, для удобства, рассматривается случай когда количество переменных равно двум т. е. решение задачи можно разместить на плоскости. С помощью этой программы можно наглядно продемонстрировать метод графического решения задач.

Вообще, с помощью графического метода может быть решена задача линейного программирования, система ограничений которой содержит n неизвестных и m линейно независимых уравнений, если N и M связаны соотношением N – M = 2.

Действительно, пусть поставлена задача линейного программирования.

Найти максимальное значение линейной функции

Z = С1х1+С2х2+ . +СNxN при ограничениях

a11x1 + a22x2 + . + a1NХN = b1

a21x1 + a22x2 + . + a2NХN = b2

. . . . . . . . . . . . . . .

aМ1x1 + aМ2x2 + . + aМNХN = bМ

xj ≥ 0 (j = 1, 2, ., N)

где все уравнения линейно независимы и выполняется cоотношение N - M = 2.

Используя метод Жордана-Гаусса, производим M исключений, в результате которых базисными неизвестными оказались, например, M первых неизвестных х1, х2, ., хM, а свободными - два последних: хМ+1, и хN, т. е. система ограничений приняла вид:

x1 + a1,М+1xМ+1 + a1NХN = b1

x2 + a2,М+1xМ+1 + a2NХN = b2

. . . . . . . . . . . .

xМ + aМ, М+1x2 + aМNХN = bМ

xj ≥ 0 (j = 1, 2, ., N)

С помощью уравнений преобразованной системы выражаем линейную функцию только через свободные неизвестные и, учитывая, что все базисные неизвестные - неотрицательные: хj ≥ 0 (j = 1, 2, ., M), отбрасываем их, переходя к системе ограничений, выраженных в виде неравенств.

Литература

1. Абрамов Л.М., Капустин В.Ф. Математическое программирование. Л., Изд-Ленингр. ун-та, 1976. - 184 с.

2. Акулич И.Л. Математическое программирование в примерах и задачах: Учеб. пособие - 2-е изд., испр. и доп. - М.: Высш. шк. ,1993 - 336 с.

3. Ашманов С.А.Линейное программирование. - М.: Наука, 1981.

4. Баканов М.И., Шеремет А.Д. Теория экономического анализа: Учебник. -4-е изд., доп. и перераб. - М.: Финансы и статистика, 2000. - 416 с.

5. Баканов М.И., Шеремет А.Д.Экономический анализ: ситуации, тесты, примеры, задачи, выбор оптимальных решений, финансовое прогнозирование: Учеб. пособие. - М.: Финансы и статистика, 1999. -656 с.

6. Банди Б. Основы линейного программирования: Пер. с англ. - М.: Радио и связь, 1989. -176 с.

7. Габасов Р., Кириллова Ф.М. Методы линейного программирования. Ч.1. Общие задачи, Минск, Изд-во БГУ им. В.И. Ленина, 1977. - 176 с.

8. Габасов Р., Кириллова Ф.М. Методы линейного программирования. Ч.2. Транспортные задачи, Минск, Изд-во БГУ им. В.И. Ленина, 1977. - 240 с.

Реферат опубликован: 3/01/2008