Дисциплина:
Раздел:
Выполнил:

Вариационное исчисление

Линейное программирование

студент, матфак, 4 курс

www.domath.ru

>   

restart:
with(plots):
#Пакет графики
#Для начала введем целевую функцию
p(x,y):= x-5*y+1;
#Введем условия, ограничивающие решение  
ops:= [10*x-y<=50, 1*x+2*y<=15.5, x>=0, y>=0];

#Ниже представим команду вычисления градиента (вектора) целевой функции  
grad := arrow([0,0],[diff(p(x,y),x)/2,diff(p(x,y),y)/2],color=blue):

#Ниже представим команду, которая решает поставленную задачу на максимум P(x,y)=>max, при условиях ops
sol:=Optimization[LPSolve](p(x,y), ops, maximize);


#Данная команда подготавливает к построению множества, удов.-его условиям-ограничениям  
p1 := inequal(ops, x=-1..10, y=-1..10,

                optionsfeasible=(color=gold),

                optionsclosed=(color=black, thickness=1),

                optionsexcluded=(color=white)
):

#Данная команда подготавливает к построению паралельных линий перпендикулярных к градиенту
#это дает визуальное представление полученного решения.

p2 := contourplot(p(x,y), x=-1..10, y=-1..10):

#Данная команда подготавливает к графическому построению искомого решения

#pointplot команда построения точки
p3 := pointplot({map(rhs,sol[2])}, symbolsize=20, colour=blue):

#Данная команда выводит все графические обьекты на дисплей экрана
display(grad, p1, p2, p3,scaling=CONSTRAINED);

графический метод решения задачи линейного программирования