Montážní závod má v plánu namontovat 150 ks telefonních zapojovačů DZ61,DZ68 a MTZ10/1. Zapojovačů typu DZ může být namontovaných nejvíce 100 kusů a typů MTZ nejvíce 80 kusů.
Náklady na montáž 1 ks DZ61.........5 000 Kč
DZ68.........2 000 Kč
MTZ10/1...4 000 Kč
Zisk za 1 ks DZ61.........25 000 Kč
DZ68.........10 000(1 - cos t)Kč, pro t I <-p ,2p >
MTZ10/1...18 000 Kč
Stanovte plán montáže tak, aby celkový zisk byl maximální při omezení celkových nákladů 640 000 Kč.
Pro úspěšné sestavení a vyřešení lineárního modelu je nutné ze zadání úlohy určit cíl. Cíl úlohy je určit, za jakých podmínek závod dosáhne maximálního zisku při daných omezujících podmínkách. Tento cíl a podmínky vyjádříme v účelové funkci a v podmínkách. Nejprve si však musíme nadefinovat proměnné.
Definování
proměnných
Pro sestavení účelové funkce a podmínek si musíme nejprve nadefinovat proměnné. Celkem máme tři druhy zapojovačů, pro které známe náklady a zisk. Pro každý typ zapojovače tedy definujeme jednu proměnnou x1 až x3. Každá proměnná bude vyjadřovat optimální počet namontovaných zapojovačů.
Obecně tedy: xi : počet namontovaných telefonních zapojovačů, kde x1=DZ61, x2=DZ68 a x3=MTZ10/1.
Účelová funkce (kritérium)
Úč. Funkce vyjadřuje cíl úlohy. V našem případě je to maximalizace zisku. Účelová funkce musí tedy vyjadřovat součet zisků za jednotlivé typy zapojovačů.
Zisk = součet zisků za jednotlivé typy zapojovačů
Zisk vypočítáme vynásobením daného zisku počtem zapojovačů. Problém je ale u zapojovače typu DZ68, kde není dán fixní zisk, ale je dán funkcí 10000(1-cos t). V zápise účelové funkce tuto funkce nahradíme indexem c2. Indexem ji nahradíme proto, protože jak t, tak celá funkce může nabývat různých hodnot.
Výsledná účelová funkce tedy zní:
z = 25 000x1 + c2 x2+18 000x3
Funkční hodnotu této funkce budeme při řešení modelu maximalizovat.
Omezující podmínky
Ze zadání úlohy vyplývá několik podmínek.
Máme omezené maximální náklady na 640 000 Kč. Přitom náklady na montáž 1 kusu zapojovače DZ61 jsou 5 000 Kč, zapojovače DZ68 jsou 2 000 Kč a zapojovače MTZ10/1 jsou 4 000 Kč. Tyto náklady vynásobíme počtem jednotlivých typů zapojovačů (x1...x3) a sečteme. Znaménko v podmínce může být £ (menší nebo rovno), protože celkové náklady jsou maximální. První podmínka bude ve tvaru:
5 000x1+2 000x2+4 000x3£ 640 000
x1+x2+x3=150
Víme, že zapojovačů typu DZ máme namontovat maximálně 100 kusů. Zapojovačů DZ máme dva druhy 61 a 68. Sečteme teda oba dva druhy zapojovačů a jejich součet musí být menší nebo rovno 100. Třetí podmínka bude tedy ve tvaru:
x1+x2 £ 100
Stejně tak je známo, že zapojovačů typu MTZ můžeme namontovat nejvíce 80 kusů. Podmínka tedy bude podobná té předchozí. Její tvar:
x3 £ 80
Dále si musíme vymezit tzv. podmínky nezápornosti. Je totiž zřejmé, že není možné montovat záporné množství zapojovačů. Namontovat 0 kusů zapojovačů už můžeme. Při nějakém typu zapojovače totiž nemusíme vykazovat zisk, můžeme u něho vykazovat i ztrátu, a proto je v tomto případě pro nás výhodnější ho nemontovat. Tyto tři podmínky budou ve tvaru: x1³0, x2³0, x3³0
Výsledný lineární matematický model
bude
v tomto tvaru
max
z = 25 000x1 + c2x2 + 18 000x3
c2 = 10 000(1-cost)
za
podm. 5 000x1 + 2 000x2 + 4 000x3 £
640 000
x1 + x2 £
100
x3 £
80
x1 + x2 + x3 = 150
x1 ³
0
x2 ³
0
x3 ³
0
Pokud by byly všechny zisky za 1 kus zadány fixně, mohli bychom už výsledný lineární matematický model přepsat do programu MOR a zjistili bychom výsledek. Ovšem zisk za zapojovače DZ68 je dán funkcí 10000(1-cost), kde tI <-p, 2p >. Pro snazší orientaci zobrazím průběh funkce cos t .
Vidíme, že tato funkce nabývá hodnot od -1 do 1, přičemž je periodická s periodou 2 . Nyní můžeme určit cos t pro každou hodnotu t a tím pádem vypočíst c2. Některé vypočtené hodnoty jsou uvedené níže:
hodnota zisk
- p , p : cos t = -1 20 000
0,2 : cos t = 1 0
-0,5 ,0,5 :cos t = 0 10 000
Není v lidských silách vypočíst z každého t hodnotu c2. Překážkou je nám uzavřený interval a tím pádem nekonečno hodnot t. Tuto překážku odstraníme použitím speciálního algoritmu, který je v programu Mor definován pod názvem Revised simplex.
Vybereme jednu libovolnou hodnotu c2, z intervalu <0, 20 000>, kterou zadáme do účelové funkce. Nás bude zajímat nejenom výsledek, ale i interval, ve kterém platí. V intervalu, který je dán hodnotami cos t ranging - lowest, highest, platí stejný výsledek. Poté zadáme novou hodnotu c2, která neleží v intervalu, který nám vyšel v minulých výpočtech. Takto postupujeme do té doby, než těmito dílčími intervaly „zaplníme“ náš interval <- p, 2p >.
Nyní už můžeme zadávat hodnoty do programu Mor. Za hodnotu c2 si můžeme zvolit třeba 10 000. Přepis této úlohy vidíme na následující stránce. V řešení vidíme, že při dosažení zisku c2 = 10 000 nám stejné výsledky vycházejí v intervalu <4 000,25 000>. Tento interval zjistíme u proměnné x2, protože právě tato proměnná není fixní. Pokud dosadíme hodnotu v tomto intervalu (např. 5 000), zjistíme, že nám vyšlo stejné řešení. Nyní můžeme dosadit třeba c2 = 0. Ze stejného postupu zjistíme, že pro tento případ je interval <0,4 000>. Tímto jsme zaplnili celý náš interval <0,20 000>.
Příloha 1
MOR/LP
Date: 3/23/99 Time: 12:47:46 15785ugk79nhg2n
C:\mor\operprb.out
MODEL DESCRIPTION
****************************************************
max zisk = 25000x1+10000x2+18000x3 gh785u5179nhhg
subject to x1+x2<=100
x3<=80
x1+x2+x3=150
5000x1+2000x2+4000x3<=640000
****************************************************
Revised Simplex Linear Programming Method
=====================================
Optimal PHASE I Solution
Basic Variables
ZISK = 150.000
X1 = 80.000
Slack2 = 30.000
X2 = 20.000
X3 = 50.000
---------------------PHASE II
=====================================
Optimal Solution
REDUCED +------- COST RANGING ---------
VARIABLE VALUE COSTS | LOWEST INITIAL HIGHEST
-----------------------------------------------------------------
ZISK 3100000.000
X1 80.000 0.000 22000.000 25000.000 INF
X2 20.000 0.000 4000.000 10000.000 25000.000
X3 50.000 0.000 -INF 18000.000 20000.000
Slack1 0.000 2000.000 -INF 0.000 2000.000
Slack2 30.000 0.000 -2000.000 0.000 INF
Slack4 0.000 5.000 -INF 0.000 5.000
UNIT +-------- RHS RANGING ---------
CONSTRAINT UNUSED WORTH | LOWEST INITIAL HIGHEST
-----------------------------------------------------------------
1 <= 0.000 2000.000 70.000 100.000 150.000
2 <= 30.000 0.000 50.000 80.000 INF
3 = 0.000 -2000.000 135.000 150.000 180.000
4 <= 0.000 5.000 INF 640000.000 INF
Compile time: 0.00 (Secs.)
Run time : 0.00 (Secs.)
Závěr
Cílem naší úlohy bylo zjistit maximální zisk při daných omezujících podmínkách. Naše výsledné řešení se bude lišit podle velikosti zisku za zapojovač DZ68 . Pokud zisk za tento zapojovač bude v intervalu
<4 000,20 000>, tak bude nejvýhodnější vyrábět 80 ks zapojovačů DZ61, 20 kusů zapojovačů DZ68 a 50 kusů zapojovačů MTZ10/1, přičemž zisk bude kolísat kolem hodnoty 31 000 000, v závislosti na velikosti zisku zapojovače DZ68. Pokud tento zisk bude v intervalu <0,4 000>, tak bude pro firmu nejvýhodnější vyrábět 60 ks zapojovačů DZ61, 10 ks zapojovačů DZ68 a 80 ks zapojovačů MTZ10/1, přičemž zisk bude kolísat kolem hodnoty 29 600 000, v závislosti na velikosti zisku DZ68.