Линейное программирование: решение задач графическим методомРефераты >> Программирование и компьютеры >> Линейное программирование: решение задач графическим методом
if X=XTmp then XResult:=X;
if Y=YTmp then YResult:=Y;
end;
end;
{далее мы находим максимум функции}
BoolAnswer:=False;
for k:=1 to i do begin
N:=Matr[k];
if (N.x*XResult+N.y*YResult<=N.b) then begin
{Если в ОДЗ}
c:=cTmp;
boolAnswer:=True;
end;
{далее проверяем вышла ли cTmp за ОДЗ}
if (N.x*XResult+N.y*YResult>N.b) then begin Exit
end;
end;
cTmp:=cTmp+STEP;{Увеличиваем cTmp на STEP}
if keyPressed then key:=ReadKey;{если Esc нажата, то прерываем}
until (key=#27) or (cTmp>=10000);
if boolAnswer then begin
{пишем ответ:}
{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:\BP\BGI'); { Путь к 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 с.
9. Глухов В.В., Медников М.Д., Коробко С.Б. Математические методы и модели для менеджмента - СПб.: Издательство “Лань”, 2000. -480 с.
10. Гольштейн Е.Г., Юдин Д.Б. Линейное программирование,теория, методы и приложения. - М.: Наука, 1969.
11. Гасс С.Линейное программирование. - М.: Физматгиз, 1961.
12. Заварыкин В. М. и др. Численные методы: Учеб. пособие для студентов физ.-мат. спец. пед. ин-тов / В.М. Заварыкин, В.Г. Житомирский, М.П. Лапчик. - М.: Просвещение, 1990. - 176 с
13. .Кузнецов А.В., Сакович В.А., Холод Н.И. Высшая математика. Математическое программирование. /Под общ. ред. проф. Кузнецова А.В., М., “ВЫШЭЙШАЯ ШКОЛА”, 1994. - 288 с.
14. Кузнецов Ю.Н., Кузубов В.И., Волощенко А.Б. Математическое программирование: Учеб. пособие. – 2-е изд., перераб и доп. - М.: Высш. школа, 1980. -300 с.
15. Ляшенко И.Н, Карагодова Е.А, Черникова Н.В., Шор Н.З. Линейное и нелинейное программирование. Издательское объединение “Вища школа”, 1975. - 372 с.
16. Пер. с яп. /М. Кубонива, М. Табата, С. Табата, Ю. Хасэбэ, под ред. М. Кубонива. Математическая экономика на персональном компьютере: - М.: Высш. школа, 1980.
17. Под ред и с предисл. Е.З. Демиденко – М.: Финансы и статистика, 1991. – 304 с.
18. Солодовников А.С. Введение в линейную алгебру и линейное программирование. М., Изд. “Просвещение”, 1966. - 184 с.
19. Схрейвер А. Теория линейного и целочисленного программирования: В 2-х т. Т.1: Пер с англ. - М.: Мир, 1991. -360 с.
20. Тынкевич М.А. Экономико-математические методы (исследование операций). Изд. 2, испр. и доп. - Кемерово, 2000. - 177 с.