Кумир. Линейное программирование. Построение графика целевой функции.
| СПБ, Лицей №554
| Kumir-2.1.0-rc7/bin/kumir2-classic.exe
| Ноябрь 2018
| 04-01
| Первая функция: график оранжевого цвета (yf1) x+4y=1000
|
| Вторая функция: график красного цвета (yf2) х+у = 700
|
| Третья функция: график черного цвета - целевая функция это
| максимальное значение прибыли для всех допустимых значений у | по вертикали от текущего значения х на горизонтальной оси.
|
| Линии желтого цвета ограничивают область допустимых значений
| входных переменных сверху и справа (слева и сниэу область | ограничена осями координат т.к. значения х и у положительны).
| Строим графики в масштабе 1:100.
использовать Чертежник
алг | Программа выбора оптимального количества х-пирожков и | у-пирожных с целью получения максимальной прибыли ymp.
| Ограничения: 8-часовой рабочий день, 700 мест на складе.
| Оборудование позволяет выпускать х= 0-1000 пирожков (если
| не выпускать пмрожные) и 250 пирожных (если не выпускать
| пирожки). На пирожное уходит в 4 раза больше времени, | чем на пирожок. Пирожное стоит в 2 раза дороже пирожка.
| Если принять стоимость пирожка 1 р и выпускать только | пирожки получим 700 р прибыли и простаивание оборудования.
| Если выпускать только пирожные, то 500 р прибыли.
| Надо найти такие значения х и у, которые обеспечат | максимальный доход при заданных ограничениях.
| Если время в минутах на 1 пирожок обозначить t, то получим
| x*t+y*4t = 8*60 = 480 минут, но время на 1 пирожок можно
| вычислить как 480/1000 = 0.48 минуты. Подставим в уравнение | и получим:
| x+4y=1000 (1) | Место на складе ограничивает общее количество.
| х+у = 700 (2)
| Целевая функция ymd (максимальный доход) определяется по | формуле:
| ymd = x + 2y (3)
| Надо найти такие положительные значения х и у, которые при | заданных ограничениях обеспечивают максимальное значение дохода. | Строим графики в масштабе 1:100.
нач
|Обьявление величин: цел x,y,xmax,ymax
xmax:=0
ymax:=0 вещтаб ymd[0:1001] вещтаб ygr1[0:1001] вещтаб ygr2[0:1001] вещтаб ygr[0:1001]
вещтаб ymdt[0:1001] | текущее значение на вертикали
x:=0;y:=0
. нц пока x<=1000
. . x:=x+1
. . ymd[x]:=0
. . ygr1[x]:=0
. . ygr2[x]:=0
. . ygr[x]:=0
. кц .
.
. | Проведем линию 1 в масштабе 1:100
. x:=0
. поднять перо
. сместиться в точку(0,7)
. выбрать чернила(красный)
. опустить перо
. нц пока x<=700
. . x:=x+1
. . y:=700-x
. . сместиться в точку(x/100,y/100)
. кц .
. | Проведем линию 2 в масштабе 1:100
. поднять перо
. сместиться в точку(0,2.5)
. выбрать чернила(оранжевый)
. опустить перо
. нц пока x<=1000
. . x:=x+1
. . y:=int((1000-x)/4)
. . сместиться в точку(x/100,y/100)
. кц .
. | Вычислим массив значений у для верхней и правой границы
. | Окрасим границу в желтый цвет
. x:=0
. y:=0
. поднять перо
. сместиться в точку(0,2.5)
. выбрать чернила(желтый)
. опустить перо
. нц пока x<=1000
. . x:=x+1
. . ygr1[x]:=700-x
. ygr[x]:=ygr1[x]
. ygr2[x]:=(1000-x)/4
. если ygr2[x] < ygr[x]
. . то
. . . ygr[x]:=ygr2[x] . . .
. все .
. если ygr[x]>=0 и ygr2[x] >= 0
. . то
. . . . сместиться в точку(x/100,ygr[x]/100)
. . . . |вывод " x = ",x," ygr = ",ygr[x], нс
. . все . .
. кц .
. | Найдем максимальные значения целевой функции . | ymd для каждого значения х.
. x:=0
. y:=0
. ygr[0]:=250
. ygr[1000]:=0
. ymd[0]:=500
. цел yt
. yt:=0
. поднять перо
. сместиться в точку(x/100,ymd[x]/100)
. опустить перо
. сместиться в точку(x/100,ymd[x]/100)
. x:=0
. нц пока x<=700
. . | Цикл вычисления ymd[x] на вертикали до границы ygr[x]
. . yt:=0
. . нц пока yt <= ygr[x] . . .
. . . ymd[x] := x+2*yt . . .
. . . если ymd[x]>=ymax
. . . . то
. . . . . xmax:=x
. . . . . ymax:=int(ymd[x])
. . . . . |вывод " x = ",xmax," y = ",ymax, нс
. . . все . . .
. . . |вывод "x= ",x," y= ",yt," ymd[x]= ",ymd[x], нс |
(4)
. . . yt:= yt+1 . . .
. . . опустить перо
. . кц
. . выбрать чернила (черный)
. . сместиться в точку(x/100,ymd[x]/100)
. . x:=x+10 кц
| Просмотрим массив ymd[x] и найдем максимальное значение
x:=0 ymax:=0 нц пока x<=700
. если ymd[x]>=ymax
. . то
. . . xmax:=x
. . . ymax:=int(ymd[x])
. . . . y:= 700-x
. . все . .
. . x:=x+1
. кц
. вывод " x = ",xmax," y= ",y," макс. доход = ",ymax, нс
кон
© ООО «Знанио»
С вами с 2009 года.