<< Nazaj | Natisni

Označi: vse | nobeno Samo označene Velikost pisave: 12px Izbira označenih: Opozorilo! Za pravilno tiskanje dokumenta je potrebno uporabiti spletni brskalnik Mozilla Firefox in v njem nastaviti sledečo nastavitev: 1. Odpri meni "Datoteka(File)" in klikni "Priprava strani(Page Setup)" 2. Obkljukaj "Natisni ozadje(Print Background)" in klikni "V_redu(OK)" 3. Sedaj je vaš Firefox brskalnik pripravljen na tiskanje dokumentov

Optimizacijske metode v logistiki 2011
Tomaž Kramberger
Univerza v Mariboru Fakulteta za logistiko: Celje-Krško

Kazalo
1. UVOD 2. OSNOVNA ALGEBRA 2.1. Matrike 2.2. Enakost matrik 2.3. Posebni primeri matrik 2.4. Računanje z matrikami 2.5. Sistem linearnih enačb 2.6. Inverzna matrika 2.7. Sistemi linearnih neenačb 3. LINEARNO PROGRAMIRANJE 3.1. Proizvodni problem

3.2. Primeri in naloge za proizvodni problem 3.3. Prehrambeni problem ali problem mešanja 3.4. Transportni problem

1. UVOD
BETA VERZIJA :: ŠE V IZDELAVI 1.1 Zgodovina OR
Operacijske raziskave ali krajše OR so razmeroma mlada znanstvena disciplina. 70 let nazaj je bilo mogoče za študirati matematiko, fiziko in tehniko skoraj na vsaki univerzi, študija OR pa ni bilo mogoče najti. Še več izraz OR sploh še ni obstajal. Pojavljati se je začel v poznih tridesetih letih prejšnejga stoletja v Veliki Britaniji, kot posledica priprav na takrat še morebitno 2. svetovno vojno. Ob študiju različne OR literatrure sem odkril, da je zgodovina OR nejasna, vendar kljub temu zanimiva. Zaradi tega si jo bomo na kratko ogledali.

1936
V začetku leta 1936 je Britansko ministrstvo za letalstvo ustanovilo Bawdsey Research Station, na vzhodni obali Britanije blizu mesta Felixstowe v pokrajini Suffolk. Bawdsey Research Station sta vojska in letalstvo uporabljal za raziskovanja in eksperimentiranja na področju Radarjev. Zgradili so eksperimentalni Radar z dosegom 100 milj (okoli 150 km), kar je bil za tiste čase velik dosežek. Vendar pa v tem času podatkov pridobljenih z Radarjem niso bili sposobni vključiti v zračno obrambo Britanije, ki je bila sama po sebi šele v povojih. Šele v začetku istega leta je bila ustanovljena Air Force (RAF) Fighter Command, ki je kasneje skrbela za zračno obrambo Britanije. Kmalu po ustanovitvi je postalo jasno, da bo vpeljava lovskih prestreznikov Hurricane in Spitfire v redno službo in uporaba Radarjev povzročila popolnoma nove probleme, ki jih do tedaj še niso poznali. Reševanje problema, kako kombinirati Radarska opazovanja s klašičnim zemeljskim opazovanjem in oboje integrirati v taktiko boja lovcev prestreznikov, je bilo začetek razvoja dispicline, ki jo danes poznamo pod imenom Operacijske raziskave.

1937
Tega leta je bil že zgrajen Radar na Bawdsey Research Station predan v službo. Prva izmed treh velikih predvojnih vaj zračne obrambe Britanije je bila izvedena poleti 1937. Iz stališča zgodnjega odkrivanja sovražnih letal je bila vaja uspešna, vendar je pokazala velike pomanjkljivosti v obdelavi in posredovanju Radarskih podatkov do prestreznikov.

1938
Julija tega leta je bila izvedena druga velika vaja zračne obrambe. Med tem časom so bile zgrajene štiri nove radarske postaje in nekaj novih letališč, za katere so upali, da bodo povečale pokritost področja in učinkovitost zračne obrambe. Vendar je vaja pokazala ravno nasprotno. Nove radarske postaje so generirale celo vrsto novih problemov v komunikaciji in v primerjanju dodatnih podatkov, ki so bili med seboj pogosto v nasprotju. Problemi, ki so se pojavili tik pred vojno, ki je bila v tistem času že očitna, so zahtevali povsem nov pristop in drastične ukrepe. Glede na rezultate vaje je poveljnik Bawdsey Research Station, A.P. Rowe sporočil, da je vaja pokazala izjemne tehnične zmogljivosti radarja, vendar je razkrila ogromno operativnih pomankljivosti tako, da celotni sistem ne zadovolji zahtev zračne obrambe. Zato je predlagal ustanovitev posebnega programa, enote, ki se bo ukvarjala s sistemom izključno iz operativnega vidika. Ime za novo vejo uporabne znanosti, ki so jo s tem začeli, so izbrali znanstveniki Radar research Group izbrali še isti dan: RESEARCH into (military) OPERATIONS.

1939
Poleti 1939 je bila izvedena zadnja predvojan vaja zračne obrambe v Britaniji. Vključeval 33000 vojakov, 1300 letal, 110 protiletalskih topov, 700 iskalnih žarometov in 100 balonov. vaja je pokazal velik napredek pri reševnju problemov s kominikacijo in usmerjanjem letal k odkrtim tarčam. Glede na velik doprinos OR ekipe k izboljšanju stanja, je poveljnik RAF Fighter Command Air Chief Marshal Sir Hugh Dowding predlagal, da se OR ekipa pridruži glavnemu štabu letalstva v Stanmoru pri Londonu in da se ustanovi t.i. Stanmore Research Section.

1940
Maja 1941, ko so Nemške enote hitro napredovale v bitki za Francijo je bila Stanmore Research Section zadolžena, da analizira Francosko zahtevo po desetih dodatnih lovskih eskadronih (1 eskadron=12 lovcev prestreznikov) glede na dejstvo, da je predvidena izguba 3 eskadronov na dvadni boja. Stanmore Research Section je pripravil poročilo in ga predstavil Winstonu Churchillu. Glede na poročilo, se je Churchill odločil, da ne pošljejo v Francijo nobenega letala več, saj bo sodelovanje v bojih za Francijo, zaradi izgub preveč oslabilo Brintansko zračno obrambo. To je bil eden prvih velikih prispevkov OR pri strateških odločitvah.

1941 in naprej

Leta 1941 je bila zaradi uspehov Stanmore Research Section in njihove OR ekipe na t.i. Coastal Command usatanovljena Operational Research Section (ORS), katere izračuni in napovedi so pomembno vplivali na izzid druge svetovne vojne. Glavna naloge Coastal Command je bila z letali odkrivati in uničevati Nemške podmornice, ki so se pojavljale na površju blizu Britanske obale. Naloge ORS:

Ena glavnih nalog ORS je bila Organizacija vzdrževanja letal. Vsako letalo v eskadronu je bilo potrebno v vsakem ciklu 350 ur letenja, 7 krat na kratko (kratek pregled je trajal 2-5 dni) in enkrat na dolgo pregledati (dolg pregled je trajal 14 dni). Glavni cilj je bil kako organizirati letenje tako, da so vsi resursi eskadrona (letala, piloti in mehaniki) izkoriščeni najbolje kar se da. ORS je ugotovil, da je dotedanja praksa, ko je bila ekipa mehanikov dodeljena k točno določenemu letalu in je bila neeaktivna v času, ko je bilo letalo v službi, neučinkovita. Predlagali so centralni sistem servisiranja, kjer je bilo letalo poslano na servis, ko je bilo to potrebno in je bila ekipa mehanikov izbrana glede na razpoložljivost. Prednost tega sistema je bilo občutno povečanje ur letenja v nekem časovnem obdobju, vendar so se pojavile tudi slabosti, ki so se kazale predvsem v padcu morale posadk, ker je bilo izgubljeno zaupanje med mehaniki in piloti. Po obsežnem testiranju, ki je trajalo 5 mesecev so sistem sprejeli in implementirali. Z implementacijo novega načina servisiranja so povečali število ur letenja, ob istem številu letal, za 61%. ORS je izdelala merila in metodo za merjenej učinkovitosti različnih tipov letal v različnih tipih vojaških akcij.

2. OSNOVNA ALGEBRA
V naslednjih poglavjih bomo potrebovali tudi nekaj matematičnega znanja. Zato bomo v tem poglavju ponovili nekaj osnovnih pojmov o matrikah in se naučili, kako računamo z njimi ter grafično in računsko reševali sisteme linearnih enačb in neenačb.

2.1. Matrike
Preden bomo zapisali, kaj je matrika, poglejmo naslednji primer. Ladja je iz Afrike pripeljala velike zabojnike banan, srednje zabojnike limon in male zabojnike ananasa. Tovor je iztovorila v štirih evropskih pristaniščih. V Barceloni je iztovorila 15 velikih, 3 srednje in 8 malih zabojnikov, v Genovi 20 velikih, 7 srednjih in 3 male zabojnike, v Bariju 5 velikih, 12 srednjih in 16 malih zabojnikov ter v Trstu 33 velikih, 10 srednjih in 7 malih zabojnikov. Dane podatke uredimo v spodnjo preglednico. Pristanišče Zabojniki veliki srednji mali Barcelona 15 3 8 Genova 20 7 3 Bari 5 12 16 Trst 33 10 7

Naše podatke pa lahko zapišemo v drugačni obliki, bolj primerni za računanje. Vse numerične podatke uredimo v tabelo, omejeno z oglatimi oklepaji.

Takšno tabelo v matematiki imenujemo matrika. Matrika je pravokotna tabela števil. Sestavljena je iz vrstic in stolpcev. Števili vrstic in stolpcev matrike določata njeno dimenzijo oz. razsežnost: če ima matrika m vrstic in n stolpcev, je njena razsežnost enaka m×n. Matrike označujemo z velikim tiskanimi črkami. Števila, ki nastopajo v matriki, imenujemo elementi matrike. Lego vsakega elementa matrike določimo tako, da povemo, v kateri vrstici in v katerem stolpcu leži. Splošni zapis matrike razsežnosti m × n je takšen:

ali krajše

pri čemer smo označili z aij tisti element, ki leži v i-ti vrstici in v j-tem stolpcu matrike. Prvi indeks nam torej pove, v kateri vrstici je izbran element, drugi indeks pa pove, v katerem stolpcu se nahaja. Element aij imenujemo tudi (i,j)-ti element matrike A. Indeks i lahko zavzame vrednosti od 1 do m, indeks j pa vrednosti od 1 do n, kar označimo tako: i = 1,2…m in j = 1,2…n. Matrika iz zgornjega primera je razsežnosti4 × 3: ima 4 vrstice in 3 stolpce. Element a42 poiščemo v četrti vrstici in drugem stolpcu: a42 = 10. V prvi vrstici so elementi a11 = 15, a12 = 3, a13 = 8, v drugi vrstici so elementi a21 = 20, a22 = 7, a23 = 3 v tretji vrstici so elementi a31 = 5, a32 = 12, a33 = 16, v četrti vrstici pa so elementi a41 = 33, a42 = 10, a43 = 7.

2.2. Enakost matrik
Matriki A = m×n in B = p×s sta enaki, če imata enaki dimenziji (m = p in n = s) in če so istoležni elementi v obeh matrikah enaki: aij = bij za vsak i = 1,2…m in j = 1,2…n.

Zgled:

Matriki A =

in B =

sta enaki, če je: a = -1, b = 2 in c = -3.

2.3. Posebni primeri matrik
Matrika razsežnosti 1 × 1 je skalar

Matriko z enim samim stolpcem imenujemo stolpčni vektor ali stolpec.

Matriko z eno samo vrstico imenujemo vrstični vektor.

Ničelna matrika je matrika, v kateri so vsi elementi enaki 0. Običajno označimo ničelno matriko reda m×n s simbolom m × n = 0.

Kvadratna matrika je matrika, ki ima enako število vrstic in stolpcev (n = m). Za kvadratno matriko razsežnosti n×n rečemo, da je reda n. Vse elemente kvadratne matrike z enakima indeksoma (aii,i = 1,2…n) imenujemo diagonalni elementi. Ti elementi tvorijo glavno diagonalo matrike.

Simetrična matrika je kvadratna matrika A, za katero velja: AT = A. To pomeni, da je aij = aji za vsak i,j = 1,2…n. Zgornje trikotna matrika je matrika, ki ima vse elemente pod glavno diagonalo enake 0.

Diagonalna matrika je kvadratna matrika, v kateri so vsi elementi izven glavne diagonale enaki0.

Skalarna matrika je diagonalna matrika, ki ima vse elemente na glavni diagonali med seboj enake.

Enotska ali identična matrika je skalarna matrika, ki ima vse elemente na glavni diagonali enake1.

2.4. Računanje z matrikami

1.4.1 Množenje matrik s skalarjem
Produkt matrike A =
m×n

z realnim številom α je matrika

Množenje s skalarjem:

Izračunajmo produkt matrike A =

s številom α = -3.

Lastnosti množenja matrik s skalarjem:
• • •

α(βA) = (αβ)A 1⋅A=A 0⋅A=0

1.4.2 Seštevanje matrik
Vsota matrik A =
m×n

in B =

m×n

je enaka matriki

Vsoto matrik A in B lahko izračunamo le, če sta obe matriki enakih dimenzij. Vsota:

Izračunajmo vsoto matrik in A = Rešitev:

in B =

Lastnosti seštevanja matrik:
• • • • •

A+B=B+A A + (B + C) = (A + B) + C A+0=A α(A + B) = αA + αB (α + β)A = αA + βA

1.4.3 Odštevanje matrik
Razlika matrik A =
m×n

in B =

m×n

je enaka matriki

Razliko matrik A in B lahko izračunamo le, če sta obe matriki enakih dimenzij.

Razlika:

Izračunajmo razliko matrik in A =

in B =

Lastnosti odštevanja matrik:
• •

A-0=A A-A=0

1.4.4 Množenje matrik
Produkt matrik A = m×n in B = m×n, za kateri velja, da je število stolpcev v prvi matriki enako številu vrstic v drugi matriki, je matrika

Element cij produkta matrik A in B dobimo tako, da i-to vrstico matrike A skalarno pomnožimo z j-tim stolpcem matrike B:

Produkt matrik:

Izračunajmo produkt matrik A = Rešitev:

in B =

Lastnosti množenja matrik:
• • • • • • •

(AB)C = A(BC) (A + B)C = AC + BC A(B + C) = AB + AC α(AB) = (αA)B = A(αB) AI = IA = A A0 = 0A = 0 Komutativnost množenja matrik (AB = BA) v splošnem ne velja.

Inverzna ali obratna matrika matrike A je matrika A-1, za katero velja A ⋅ A-1 = A-1 ⋅ A = I Inverz lahko določamo le za kvadratno matriko, pa tudi za vsako kvadratno matriko ne obstaja. Matriko, za katero obstaja inverz, imenujemo obrnljiva matrika. Za obrnljivi matriki A, B ustreznih dimenzij in za poljubno realno število α veljajo naslednje lastnosti:
• • •

(A-1)-1 = A (αA)-1 = α-1A-1,α≠0 (AB)-1 = B-1A-1

Inverzna matrika:

Ugotovimo, ali je matrika B =

inverzna matrika matrike A =

Rešitev: Izračunajmo AB in BA.

Ker je AB = BA = I, je matrika B res inverzna matrika matrike A : B = A-1.

1.4.5 Transponiranje matrik
Transponirano matriko matrike A dobimo tako, da zamenjamo istoležne vrstice in stolpce, torej matriko prezrcalimo čez glavno diagonalo. Označimo jo z AT. Če je matrika

potem je njena transponirana matrika

Torej: za simetrično matriko A velja: AT = A. Lastnosti transponiranja matrik:
• • • •

(AT)T = A (A + B)T = AT + BT (αA)T = αAT (AB)T = BTAT

Transponiranje matrik:

Določimo transponirano matriko matrike A = Rešitev:

2.5. Sistem linearnih enačb
Zapišimo sistem m linearnih enačb z n neznankami:

ij(i = 1,2…m,j = 1,2…n)so koeficienti sistema, bi (i = 1,2…m) so prosti členi, xj (i = 1,2…n) pa so neznanke(m in n sta poljubni naravni števili) Števili m in n sta lahko med seboj enaki (število enačb je enako številu neznank) ali različni (število enačb je manjše ali večje od števila neznank). Če sta enaki, sistem imenujemo kvadratni sistem. Če so vsi prosti členi enaki 0, sistem imenujemo homogeni sistem. Če niso vsi prosti členi enaki 0, pa sistem imenujemo nehomogeni sistem. Rešitev sistema so števila x1,x2,….,xn, ki ustrezajo vsem enačbam v sistemu. Rešiti sistem pomeni poiskati vse rešitve sistema ali dokazati, da sistem nima rešitev. Glede števila rešitev imamo natanko tri možnosti
• • •

sistem nima nobene rešitve, sistem ima eno rešitev, sistem ima neskončno rešitev.

Vsak homogeni sistem ima vsaj eno rešitev, in sicer xi = 0;(i = 1,2…n). To rešitev imenujemo trivialna rešitev. Sistem, ki ima vsaj eno rešitev, imenujemo rešljiv sistem. Sistem, ki nima nobene rešitve pa imenujemo nerešljiv sistem. Sistema, ki imata iste rešitve, imenujemo ekvivalentna sistema. Vsak sistem linearnih enačb lahko zapišemo kot eno enačbo, in sicer kot matrično enačbo. Za to pa potrebujemo osnovno matriko sistema. To je matrika, v katero zapišemo koeficiente sistema.

Neznanke in proste člene zapišemo kot stolpčna vektorja.

Zgornji sistem linearnih enačb lahko zapišemo v obliki matrične enačbe:

Popolno informacijo o sistemu pa vsebuje tudi razširjena matrika sistema. To je matrika, ki jo dobimo tako,da osnovni matriki sistema dodamo stolpec prostih členov.

Sistem lin. enačb:

Dan je sistem dveh linearnih enačb s tremi neznankami.

Sistem je nehomogen, ker prosta člena nista enaka 0. Osnovna matrika sistema je

Stolpčna vektorja neznank in prostih členov sta X= x y z in B =

Dan sistem je ekvivalenten matrični enačbi:

Razširjena matrika sistema je

Izberimo stolpce S1 = rešitev danega sistema.

, S2 =

in S3 =

in preverimo, ali je kateri izmed njih

Stolpec S1 = 2) = 3.

je rešitev danega sistema, ker je 2⋅0+3⋅1+1⋅(-2) = 1 in 1⋅0+(-1)⋅1+(-2)⋅(-

Stolpec S2 = 2)⋅0 = 3.

je rešitev danega sistema, ker je 2⋅2+3⋅(-1)+1⋅0 = 1 in 1⋅2+(-1)⋅(-1)+(-

Torej je sistem rešljiv in ima več kot eno rešitev. Iz česar sledi, da ima dani sistem neskončno rešitev.

Preverimo, ali je tudi npr. stolpec S3 = rešitev danega sistema: 2 ⋅ (-2) + 3 ⋅ 1 + 1 ⋅ 2 = 1, toda 1 ⋅ (-2) + (-1) ⋅ 1 + (-2) ⋅ 2 = -7≠3, zato stolpec S3 ni rešitev danega sistema.

1.5.1 Reševanje sistemov linearnih enačb
Sistem linearnih enačb lahko rešimo na več različnih načinov. Eden izmed njih je GaussJordanova eliminacijska metoda. To pomeni, da bomo sistem linearnih enačb pretvorili v razširjeno matriko, topa bomo pretvorili na zgornje trikotno obliko, iz katere bomo na preprost način določili rešitve sistema. Z razširjeno matriko smemo izvajati naslednje operacije, ki jih imenujemo tudi elementarne transformacije: 1. menjamo lahko vrstni red vrstic (ker vrstni red vrstic razširjene matrike sistema predstavlja vrstni red enačb sistema; vrstni red enačb v sistemu pa ni pomemben), 2. menjamo lahko vrstni red stolpcev, a le v osnovni matriki sistema (ker vrstni red stolpcev osnovne matrike predstavlja vrstni red neznank sistema; vrstni red neznank v sistemu pa ni pomemben, zapomniti si moramo le kako se je vrstni red spremenil, da vemo, katera neznanka pripada kateremu stolpcu), 3. vsako vrstico lahko pomnožimo oz. delimo s poljubnim številom, različnim od 0 (ker množenje vrstice pomeni množenje enačbe na obeh straneh z istim številom, kar pa ne vpliva na rešitve enačbe), 4. k poljubni vrstici lahko prištejemo mnogokratnik kake druge vrstice, le-ta pa mora ostati nespremenjena, 5. vrstico samih ničel lahko izbrišemo (ker vrstica samih ničel pomeni identično enačbo 0 = 0).

Rešitve sistema se s tem ne spremenijo.

S pomočjo zgoraj opisanih operacij razširjeno matriko sistema spremenimo v zgornje trikotno matriko. Le-tapa ima eno od spodnjih treh oblik, kjer * predstavljajo poljubno realno število. (Zaradi enostavnosti matrike niso zapisane kot splošne matrike poljubne velikosti, ampak so podane kar kot matrike konkretno določenih velikosti.) Prva možna oblika je takšna:

V tem primeru sistem ni rešljiv (saj bi v primeru zapisa zadnje vrstice v obliki enačbe dobili 0 = 1),

Reševanje sistema lin. enačb, ki nima rešitve: Rešimo sistem treh enačb s tremi neznankami.

Rešitev: Osnovna matrika sistema je

stolpčni vektor prostih členov pa je

Torej je razširjena matrika sistema takšna:

Razširjeno matriko sistema bomo s pomočjo elementarnih transformacij postopoma preoblikovali v zgornje trikotno matriko, ki ima na glavni diagonali same enke. Najprej moramo na prvem mestu prve vrstice ustvariti enko. Torej bomo prvo vrstico delili z dve.

Prvo vrstico bomo prepisali, v ostalih vrsticah pa bomo na prvih mestih ustvarili ničle. Da bomo na (2,1)-em mestu (v drugi vrstici v prvem stolpcu) naredili ničlo, moramo prvo vrstico pomnožiti z -1 in jo prišteti k drugi vrstici.

Da bomo na (3,1)-em mestu (v tretji vrstici v prvem stolpcu) naredili ničlo, pa moramo prvo vrstico pomnožiti z -4 in jo prišteti k tretji vrstici. Tako dobimo naslednjo matriko:

Element na (2,2)-tem mestu (v drugi vrstici v drugem stolpcu) je že enak ena, zato druge vrstice ni potrebno spreminjati. Pod elementom na (2,2)-tem mestu moramo ustvariti ničle. To bomo naredili tako, da bomo prvo in drugo vrstico prepisali, tretjo pa bomo dobili tako, da bomo drugo vrstico pomnožili z -1 in jo prišteli k tretji.

Dobili smo zgornje trikotno matriko, saj so pod diagonalo le še ničelni elementi. Če zadnjo vrstico preoblikujemo nazaj v enačbo, dobimo

torej 0 = 2.

To pa je protislovje, torej sistem nima rešitev. ***

Druga možna oblika je takšna:

V tem primeru je sistem rešljiv in ima natanko eno rešitev.

Reševanje sistema lin. enačb z eno rešitvijo: Rešimo sistem treh enačb s tremi neznankami.

Rešitev: Osnovna matrika sistema je

stolpčni vektor prostih členov pa je

Torej je razširjena matrika sistema takšna:

Razširjeno matriko sistema bomo s pomočjo elementarnih transformacij postopoma preoblikovali v zgornje trikotno matriko, ki ima na glavni diagonali same enke. Na prvem mestu prve vrstice je enka, zato je ni potrebno ustvariti. Ta korak izpustimo. Prvo vrstico bomo prepisali, v ostalih vrsticah pa bomo na prvih mestih ustvarili ničle. Da bomo na (2,1)-em mestu naredili ničlo, moramo prvo vrstico pomnožiti z -2 in jo prišteti k drugi vrstici.

Da bomo na (3,1)-em mestu naredili ničlo, pa moramo prvo vrstico pomnožiti s 3 in jo prišteti k tretjivrstici. Tako dobimo naslednjo matriko:

Na (2,2)-tem mestu moramo ustvariti enko. Torej moramo drugo vrstico deliti z -1.

Pod elementom na glavni diagonali v drugi vrstici moramo ustvariti ničlo. To bomo naredili tako, da bomo prvo in drugo vrstico prepisali, tretjo pa bomo dobili tako, da bomo drugo vrstico pomnožili z -4 in jo prišteli k tretji.

V zadnji vrstici moramo diagonalni element pretvoriti v enko. Torej moramo celotno vrstico deliti z -11.

Dobili smo zgornje trikotno matriko, saj so pod diagonalo le še ničelni elementi. Rešitev sistema dobimo tako,da najprej zadnjo vrstico preoblikujemo nazaj v enačbo: 1z = -3, torej z = -3 Nato preoblikujemo v enačbo predzadnjo vrstico in vstavimo dobljeni z: 1y + 4z = -10 torej y = -4z - 10 = -4(-3) - 10 = 2 Nato pa preoblikujemo v enačbo še prvo vrstico in vstavimo dobljena y in z: 1x + 1y + 1z = 0 torej x = -y - z = -2 - (-3) = 1 Sistem ima torej natanko eno rešitev: x = 1, y = 2, z = -3. ***

Tretja možna oblika je takšna:

V tem primeru je sistem rešljiv in ima neskončno rešitev.

Reševanje sistema lin. enačb z neskončno rešitvami Rešimo sistem treh enačb s tremi neznankami.

Rešitev: Osnovna matrika sistema je

stolpčni vektor prostih členov pa je

Torej je razširjena matrika sistema takšna:

Razširjeno matriko sistema bomo s pomočjo elementarnih transformacij postopoma preoblikovali v zgornje trikotno matriko, ki ima na glavni diagonali same enke. Na prvem mestu prve vrstice je enka, zato je ni potrebno ustvariti. Ta korak izpustimo. Prvo vrstico bomo prepisali, v ostalih vrsticah pa bomo na prvih mestih ustvarili ničle. Da bomo na (2,1)-em mestu naredili ničlo, moramo prvo vrstico pomnožiti s 3 in jo prišteti k drugi vrstici.

Da bomo na (3,1)-em mestu naredili ničlo, pa moramo prvo vrstico pomnožiti s 3 in jo prišteti k tretji vrstici. Tako dobimo naslednjo matriko:

Na (2,2)-tem mestu moramo ustvariti enko. Torej moramo drugo vrstico deliti z 2.

Pod elementom na glavni diagonali v drugi vrstici moramo ustvariti ničlo. To bomo naredili tako, da bomo prvo in drugo vrstico prepisali, tretjo pa bomo dobili tako, da bomo drugo vrstico pomnožili z -1 in jo prišteli k tretji.

V zadnji vrstici so same ničle, zato jo lahko izbrišemo.

Dobili smo zgornje trikotno matriko, saj so pod glavno diagonalo le še ničelni elementi. Rešitev sistema dobimo tako, da najprej zadnjo vrstico preoblikujemo nazaj v enačbo: 1y - 1z = -4 torej y = z - 4 Nato preoblikujemo v enačbo prvo vrstico in vstavimo dobljeni y: 1x + 3y - z = 0 torej x = -3y + z = (z - 4) + z = 2z - 4 Sistem ima torej neskončno rešitev: x = 2z-4, y = z–4, kjer je z poljubno realno število. (Npr. če je z = 0, jex = -4 in y = -4; če jez = 2, je x = 0 in y = -2 …)

Reševanje sistema lin. enačb, ki ni kvadraten: Zdaj pa rešimo še en malo večji sistem, ki ni kvadraten.

Rešitev: Osnovna matrika sistema je

stolpčni vektor prostih členov pa je

Torej je razširjena matrika sistema takšna:

Razširjeno matriko sistema bomo s pomočjo elementarnih transformacij postopoma preoblikovali v zgornje trikotno matriko, ki ima na glavni diagonali same enke. Na prvem mestu prve vrstice moramo ustvariti enko. Torej bomo prvo vrstico delili z (-2), ostale vrstice pa bomo prepisali.

Prvo vrstico bomo prepisali, v ostalih vrsticah pa bomo na prvih mestih ustvarili ničle. Da bomo na (2,1)-em mestu naredili ničlo, moramo prvo vrstico pomnožiti z 2 in jo prišteti k drugi vrstici. Da bomo na(3,1)-em mestu naredili ničlo, moramo prvo vrstico prišteti k tretji vrstici. Da bomo na (4,1)-em mestu naredili ničlo,moramo prvo vrstico pomnožiti s (-4) in jo prišteti k četrti vrstici. Da bomo na (5,1)-em mestu naredili ničlo, pa moramo prvo vrstico pomnožiti z (-3) in jo prišteti k peti vrstici. Tako dobimo naslednjo matriko:

Na (2,2)-tem mestu moramo ustvariti enko. V našem primeru je na tem mestu že enka, torej ta korak izpustimo. Pod elementom na glavni diagonali v drugi vrstici moramo ustvariti ničle. Prvo in drugo vrstico bomo prepisali. Da bomo na (3,2)-em mestu ustvarili ničlo, moramo drugo vrstico pomnožiti z (-6) in jo prišteti k tretji vrstici. Da bomo na (4,2)-em mestu naredili ničlo, moramo drugo vrstico prišteti k četrti vrstici. Da bomo na (5,2)-em mestu naredili ničlo, moramo drugo vrstico prišteti k peti vrstici.

Na (3,3)-jem mestu moramo ustvariti enko. V našem primeru je na tem mestu že enka, torej ta korak izpustimo. Pod elementom na glavni diagonali v tretji vrstici moramo ustvariti ničle. Prvo, drugo in tretjo vrstico bomo prepisali. Da bomo na (4,3)-jem mestu ustvarili ničlo, moramo tretjo vrstico pomnožiti z (-1) in jo prišteti k četrti vrstici. Na (5,3)-jem mestu je že ničla, zato je tam ne rabimo ustvariti. Torej peto vrstico kar prepišemo.

Na (4,4)-em mestu moramo ustvariti enko. V našem primeru je na tem mestu že enka, torej ta korak izpustimo. Pod elementom na glavni diagonali v četrti vrstici moramo ustvariti ničlo. Prvo, drugo, tretjo in četrto vrstico bomo prepisali. Da bomo na (5,4)-em mestu ustvarili ničlo, moramo četrto vrstico pomnožiti z (-1) in jo prišteti k peti vrstici.

Dobili smo zgornje trikotno matriko, saj so pod glavno diagonalo le še ničelni elementi. Rešitev sistema dobimo tako, da najprej zadnjo vrstico preoblikujemo nazaj v enačbo: 1x5 + 8x6 = 15, torej x5 = -8x6 + 15. Nato preoblikujemo v enačbo predzadnjo vrstico in vstavimo dobljeni x5: 1x4–2x5 + 3x6 = 5, torejx4 = 2x5 - 3x6 + 5 = 2(-8x6 + 15) - 3x6 + 5 = -19x6 + 35. Tretjo vrstico preoblikujmo v enačbo in iz nje izrazimo x3: 1x3 - 1x4 + 1x5 - 1x6 = -22, torej x3 = x4 - x5 + x6–22 = (-19x6 + 35)–(-8x6 + 15) + x6–22 = -10x6–2. Drugo vrstico preoblikujmo v enačbo in iz nje izrazimo x2: x2 - 2x3 + 3x4 - 4x5 + 5x6 = -9, torej x2 = 2x3 - 3x4 + 4x5 - 5x6–9 = 2(-10x6–2) - 3(-19x6 + 35) + 4(-8x6 + 15) - 5x6–9 = -58. Prvo vrstico preoblikujmo v enačbo in iz nje izrazimo x1: x1 - 2x2 + 3x3 - 4x4 + 5x5 - 6x6 = -11, torej x1 = 2x2 - 3x3 + 4x4 - 5x5 + 6x6–11 = 2(-58)– 3(-10x6–2) + 4(-19x6 + 35)–5(-8x6 + 15) + 6x6–11 = -56. Sistem ima torej neskončno rešitev: x1 = -56, x2 = -58, x3 = -10x6–2, x4 = -19x6 + 35, x5 = -8x6 + 15,kjer je x6 poljubno realno število. (Npr. če je x6 = 0, je x1 = -56, x2 = -58, x3 = –2, x4 = 35 in x5 = 15.)

S pomočjo pravkar opisanega postopka lahko izračunamo inverzno matriko poljubne obrnljive matrike.

2.6. Inverzna matrika
Pojem inverzne matrike smo spoznali že v poglavju o množenju matrik, kjer smo zapisali, da je inverzna ali obratna matrika matrike A matrika A-1, za katero velja

Povedali smo tudi, da lahko inverz določamo le za kvadratno matriko. Poglejmo, kako si z Gauss-Jordanovo eliminacijsko metodo pomagamo pri določanju inverzne matrike. Naj bo A poljubna obrnljiva matrika. Najprej zapišemo razširjeno matriko [A|I], kjer je I enotska matrika enake dimenzije kot matrika A. S pomočjo elementarnih transformacij matriko A pretvorimo v enotsko matriko. S tem na desni strani razširjene matrike dobimo inverzno matriko matrike A: [I|A - 1].

Zgled: Določimo inverzno matriko naslednje matrike:

Rešitev: Zapišimo razširjeno matriko [A|I]:

S pomočjo elementarnih transformacij moramo matriko A pretvoriti v enotsko matriko. Najprej moramo ustvariti na prvem mestu prve vrstice enko. V našem primeru je na tem mestu že enka, torej ta korak izpustimo. Prvo vrstico bomo prepisali, v ostalih vrsticah pa bomo na prvih mestih ustvarili ničle. Da bomo na (2,1)-em mestu naredili ničlo, moramo prvo vrstico pomnožiti z -2 in jo prišteti k drugi vrstici. Da bomo na (3,1)-em mestu naredili ničlo, pa moramo prvo vrstico pomnožiti z 2 in jo prišteti k tretji vrstici. Tako dobimo naslednjo matriko:

Na (2,2)-tem mestu je enka, zato je ni potrebno ustvariti. Ta korak izpustimo. Pod elementom na glavni diagonali v drugi vrstici moramo ustvariti ničlo. To bomo naredili tako, da bomo prvo in drugo vrstico prepisali, tretjo pa bomo dobili tako, da bomo drugo vrstico pomnožili z 2 in jo prišteli k tretji.

Na (3,3)-tem mestu moramo ustvariti enko. To bomo naredili tako, da bomo prvo in drugo vrstico prepisali,zadnjo pa bomo delili z (-1).

Tako smo dobili zgornje trikotno matriko. Da bomo na levi strani razširjene matrike dobili enotsko matriko,moramo ustvariti ničle še na levi strani razširjene matrike nad glavno diagonalo. Zadnjo vrstico bomo prepisali, v ostalih vrsticah pa bomo v tretjem stolpcu ustvarili ničle. Da bomo na (1,3)-em mestu ustvarili ničlo, moramo zadnjo vrstico pomnožiti z -1 in jo prišteti k

prvi vrstici. Da bomo na (2,3)-em mestu ustvarili ničlo, pa moramo zadnjo vrstico pomnožiti z 2 in jo prišteti k drugi vrstici.

Nad elementom na glavni diagonali v drugi vrstici moramo ustvariti ničlo. To bomo naredili tako, da bomo drugo in tretjo vrstico prepisali, prvo pa bomo dobili tako, da bomo drugo vrstico prišteli k prvi.

Na levi strani razširjene matrike smo ustvarili enotsko matriko, torej je desna stran razširjene matrike enaka inverzni matriki začetne matrike.

Izpišimo inverz matrike A:

***

Zgled: Določimo inverzno matriko naslednje matrike:

Rešitev: Zapišimo razširjeno matriko [A|I]:

S pomočjo elementarnih transformacij moramo matriko A pretvoriti v enotsko matriko. Najprej moramo ustvariti na prvem mestu prve vrstice enko. V našem primeru je na tem mestu že enka, torej ta korak izpustimo. Prvo vrstico bomo prepisali, v ostalih vrsticah pa bomo na prvih mestih ustvarili ničle. Da bomo na (2,1)-em mestu naredili ničlo, moramo prvo vrstico pomnožiti z -2 in jo prišteti k drugi vrstici. Da bomo na (3,1)-em mestu naredili ničlo, pa moramo prvo vrstico pomnožiti z 2 in jo prišteti k tretji vrstici. Tako dobimo naslednjo matriko:

Na (2,2)-tem mestu moramo ustvariti enko, torej bomo drugo vrstico delili z dva, prvo in tretjo pa bomo prepisali.

Pod elementom na glavni diagonali v drugi vrstici moramo ustvariti ničlo. To bomo naredili tako, da bomo prvo in drugo vrstico prepisali, tretjo pa bomo dobili tako, da bomo drugo vrstico prišteli k tretji.

V zadnji vrstici smo na levi strani razširjene matrike dobili same ničle. Z elementarnimi transformacije na levi strani razširjene matrike ni možno dobiti enotske matrike. Torej za matriko A ne obstaja inverzna matrika. Vtem primeru rečemo, da matrika A ni obrnljiva. ***

Kot smo že omenili, nima vsaka kvadratna matrika inverzne matrike. Poglejmo si naslednji primer.

Primer:

Dana je matrika A =

.

Izračunajmo njej inverzno matriko A-1.

Rešitev: Inverzno matriko računamo po Gauss-Jordanovi metodi. Elementarne operacije izvajamo na razširjeni matriki

Delimo najprej prvo vrstico s 4 in dobimo:

Drugi vrstici prištejmo z (-2) pomnoženo prvo vrstico:

V drugi vrstici smo na levi strani dobili na obeh mestih nič, zato z uporabo elementarnih operacij (samo na vrsticah!) na nikakršen način ne uspemo dobiti matrične enote in s tem tudi ne inverzne matrike.

Matrika A = ***

torej nima inverzne matrike.

Računanje inverznih matrik je dolgotrajno, še zlasti, kadar imamo opraviti z matrikami večjih dimenzij.Inverzne matrike večjih dimenzij bomo računali z uporabo računalnika. programov, ki to omogočajo, je veliko. Inverzno matriko lahko izračunamo že z uporabo EXCELA. Primer:

A-1 =?

Rešitev: Računalniški program EXCEL da rezultat: -0,7 -1,3 0,8 Velja torej: 0,2 -0,2 0,2 0,3 0,7 -0,2

***

2.7. Sistemi linearnih neenačb
Linearna neenačba z dvema neznankama je neenačba oblike:

kjer so a, b in c so koeficienti neenačbe, x je neodvisna, y pa odvisna spremenljivka. Množica rešitev linearne neenačbe je ena od obeh polravnin, na kateri premica ax + by + c = 0 razdeli ravnino. Če je c > 0, je to polravnina, ki vsebuje izhodišče; če pa je c < 0, pa polravnina, ki ne vsebuje izhodišča.

Zgled: Določimo množico rešitev neenačbe 2x + 3y - 6 > 0.

Rešitev: Najprej narišimo premico z enačbo 2x + 3y - 6 = 0. Določimo presečišče z osjo x (v enačbo premice vstavimo, y = 0):

Torej premica seka os x v točki A(3,0). Določimo še presečišče z osjo y (v enačbo premice vstavimo, x = 0). Torej premica seka os y v točki B(0,2). Skozi dobljeni točki narišimo premico. Narišimo jo s črtkano črto, ker le-ta ni vključena v množico rešitev (to nam pove znak >). Določiti moramo še, katera polravnina je rešitev naše neenačbe. Le-to pa določimo na osnovi naslednje ugotovitve: ker je koeficient c manjši od 0 (c = -6 < 0), iskana polravnina ne vsebuje izhodišča. Torej rešitev dane neenačbe predstavljajo vse točke polravnine nad premico 2x + 3y - 6 = 0.

*** Določimo množico rešitev neenačbe 3x - y - 3 ≤ 0. Rešitev:

Najprej narišimo premico z enačbo 3x-y - 3 = 0. Določimo presečišče z osjo x (v enačbo premice vstavimo, y = 0):

Torej premica seka os x v točki A(1,0). Določimo še presečišče z osjo y (v enačbo premice vstavimo, x = 0):

Torej premica seka os y v točki B(0,-3). Skozi dobljeni točki narišimo premico. Narišimo jo s polno črto, ker je tudi ta vključena v množico rešitev (to nam pove znak ≤). Določiti moramo še, katera polravnina je rešitev naše neenačbe. Da bomo lahko iz neenačbe prebrali koeficient c, jo moramo zapisati v takšni obliki -3x + y + 3 ≥ 0. Ker je koeficient c večji od 0 (c = 3 > 0),iskana polravnina vsebuje izhodišče. Torej rešitev dane neenačbe predstavljajo vse točke polravnine nad premico 3x - y - 3 = 0 in na njej.

Zapišimo sistem m linearnih neenačb z n neznankami:

Če označimo z A osnovno matriko sistema, z B vektor prostih členov in z X vektor neznank, lahko zgornji sistem zapišemo v obliki matrične neenačbe:

Množica rešitev sistema linearnih neenačb je presek množic rešitev posameznih neenačb. Kadar ima sistem neenačb le dve neznanki, se reševanja najpogosteje lotimo grafično.

Zgled: Rešimo sistem neenačb:

Rešitev: KORAK 1: Da bomo lahko določili, kateri polravnini moramo pobarvati, neenačbi zapišimo tako, da bosta neenačaja obrnjena v ustrezno smer:

KORAK 2: Narišemo 1. premico in pobarvamo pripadajočo polravnino.

KORAK 3: Narišemo še drugo premico in pobarvamo pripadajočo polravnino.

Torej za obe neenačbi velja: iskana polravnina vsebuje izhodišče. KORAK 4: Upoštevati moramo še zadnji dve neenačbi , ki nam povesta, da se množica rešitev našega sistema nahaja v prvem kvadrantu. Množica rešitev danega sistema neenačb je presek vseh polravnin, ki jih določajo vse 4 neenačbe.

Naš sistem ima neskončno rešitev. Predstavili smo jih s šrafirano množico na zgornji sliki. ***

Rešimo sistem neenačb:

Rešitev:

KORAK 1: Narišimo premice:

KORAK 2: Da bomo lahko določili, katere polravnine moramo pobarvati, neenačbe zapišimo tako, da bodo neenačaji obrnjeni v ustrezno smer:

Torej za prvo neenačbo velja: iskana polravnina ne vsebuje izhodišča. Za drugo in tretjo neenačbo pa velja: iskani polravnini vsebujeta izhodišče. Narišimo vse tri polravnine v isti koordinatni sistem.

KORAK 3: Upoštevati moramo še zadnji dve neenačbi: , ki nam povesta, da se množica rešitev našega sistema nahaja v prvem kvadrantu. Množica rešitev danega sistema neenačb je presek vseh polravnin, ki jih določa vseh 5 neenačb.

Naš sistem ima natanko eno rešitev: x = 2, y = 1. ***

Rešimo sistem neenačb:

Rešitev: Narišimo premico: x + y - 2 = 0 in pobarvajmo ustrezno polravnino (tisto, ki ne vsebuje izhodišča).

Upoštevati moramo še neenačbi x ≥ 0 in y ≥ 0, ki nam povesta, da iščemo rešitve v prvem kvadrantu. Ker dobljena polravnina nima nobene skupne točke s prvim kvadrantom (presek je prazna množica), naš sistem nima nobene rešitve. ***

3. LINEARNO PROGRAMIRANJE
BETA VERZIJA
Linearno programiranje je matematična metoda, ki jo uporabljamo za reševanje problemov iz področja operacijskih raziskav. Uporabljamo jo za tako imenovano optimizacijo z omejitvami (angl. constrained optimization). Gre za iskanje najboljše rešitve (optimiranje) danega problema pri danih pogojih, npr. maksimiranje dobička pri danih produkcijskih in tržnih omejitvah. V praksi se linearno programiranje uporablja v številnih aplikacijah na

raznovrstnih področjih: ekonomiji, financah, bančništvu, logistiki, statistiki, uporabni matematiki, in še bi lahko naštevali. Linearno programiranje je torej metoda, ki nam omogoča poiskati optimalno (maksimalno ali minimalno) vrednost izbranih odvisnih spremenljivk, ki zadoščajo danim omejitvam. Linearni program v matematični obliki zapišemo na naslednji način:

namenska funkcija

omejitve

pogoji nenegativnosti

Opomba: v omejitvah smo povsod zapisali znak ≥. Če je v omejitvi znak ≤, dobimo znak ≥ tako, da obe strani neenačbe pomnožimo z (-1).

Linearni program lahko zapišemo tudi v matrični obliki:

kjer je:

vrstični vektor koeficientov namenske funkcije,

stolpčni vektor spremenljivk,

osnovna matrika sistema neenačb, ki predstavljajo koeficiente omejitev linearnega programa in

stolpčni vektor prostih členov neenačb, ki predstavljajo vrednosti omejitev linearnega programa. Osnovna značilnost linearnega programirama je, da je namenska funkcija linearna in da so tudi vse omejitvene neenačbe oz. enačbe linearne. ***

3.1. Proizvodni problem BETA VERZIJA :: ŠE V IZDELAVI
Problem v katerih bo naša naloga ugotoviti na primer, koliko kosov posameznega izdelka iz našega prodajnega program naj naredimo, da bo ob danih omejitvah naš dobiček največji, bomo imenovali proizvodni problem.Seveda s nazivom proizvodni problem ne bomo imenovali samo problemov iz proizvodnje, ampak tudi ostale problem sorodne narave, kjer

iščemo maksimum namenske funkcije. Za začetek za naslednji problem formulirajmo linearni program.

Podjetje Tartuf d.o.o. pakira bele in črne tartufe. Oboje poteka v dveh fazah: polnjenje kozarcev in opremljanje kozarcev. Za kozarec belih tartufov potrebujejo 1 minuto za polnjenje, 2 minuti za opremljanje.Za kozarec črnih tartufov pa potrebujejo 2 minuti za polnjenje, 1 minuto za opremljanje. Stroj, ki polni kozarce, je na razpolago 35 minut v vsaki uri; stroj, ki zapira kozarce je tudi na razpolago 40 minut v vsaki uri. Podjetje ima pri prodaji kozarca belih tartufov dobiček 30€ in pri prodaji kozarca črnih tartufov 20€.Koliko kozarcev belih in koliko kozarcev črnih tartufov naj podjetje proizvaja v eni seriji, če želi doseči čimvečji dobiček. Rešitev: Najprej uredimo dane podatke v preglednico: beli tartufi črni tartufi omejitve Polnjenje kozarcev 1 2 35 Opremljanje kozarcev 2 1 40 Dobiček 30 20 Količina izdelkov x y Reševanja problema se lotimo po naslednjem postopku:

1 Formuliramo linearni program 2 Določimo namensko funkcijo 3 Določimo omejitve 4 Rešimo linearni program

a) Določimo namensko funkcijo. Namenska funkcija predstavlja skupni dobiček pri prodaji belih in črnih tartufov.
• •

Dobiček z enim kozarcem belih tartufov je 30, torej je dobiček z x kozarci belih tartufov 30x. Dobiček z enim kozarcem črnih tartufov je 20, torej je dobiček z y kozarci črnih tartufov 20y.

Zato je dobiček z x kozarci belih in y kozarci črnih tartufov enak 30x + 20y. Ker iščemo maksimalen dobiček,moramo poiskati maksimum namenske funkcije. Torej je namenska funkcija sledeča:

b) Določimo omejitve:

Stroj za polnjenje kozarcev: o Za polnjenje enega kozarca belih tartufov potrebujemo 1 minuto, torej za polnjenje x kozarcev potrebujemo x minut. o Za polnjenje enega kozarca črnih tartufov potrebujemo 2 minuti, torej za polnjenje y kozarcev potrebujemo 2y minut. o Zato potrebujemo za polnjenje x kozarcev belih in y kozarcev črnih tartufov skupno x + 2y minut. Ta stroj lahko uporabljamo kvečjemu 35 minut, zato je

Stroj za opremljanje kozarcev: o Za zapiranje enega kozarca belih tartufov potrebujemo 2 minuti, torej za zapiranje x kozarcev potrebujemo 2x minut. o Za zapiranje enega kozarca črnih tartufov potrebujemo 1 minuto, torej za zapiranje y kozarcev potrebujemo y minut. o Zato potrebujemo za zapiranje x kozarcev belih in y kozarcev črnih tartufov skupno 2x + y minut. Ta stroj lahko uporabljamo kvečjemu 40 minut, zato je

Pogoj nenegativnosti:

V našem primeru imamo le dve spremenljivki, torej:

Linearni program danega problema je torej takšen:

3.1.1 Grafično reševanje proizvodnega problema
Probleme linearnega programiranja, v katerih nastopata le dve spremenljivki, lahko rešimo z grafično metodo.Za primer vzemimo kar linearni program TARTUFI I. in sicer:

Rešimo ta linearni program z grafično metodo po naslednjem postopku:

1 V koordinatni sistem narišemo množico vseh rešitev sistema linearnih neenačb sestavljenega iz omejitev in pogojev nenegativnosti. 2 Določimo koordinate ekstremnih točk. 3 Ugotovimo točko (grafično ali računsko) v kateri se pojavi maksimum (minimum)namenske funkcije. 4 Izračunamo maksimum ( minimum) namenske funkcije.

Rešitev: V koordinatni sistem narišimo množico vseh rešitev sistema linearnih neenačb, ki ga sestavljajo omejitve in pogoj nenegativnosti v linearnem programu:

Slika 18: Množica rešitev sistema linearnih neenačb sestavljenega iz omejitev in pogojev nenegativnosti. Množica vseh rešitev danega sistema je konveksen lik ABCD. Namenska funkcija f(x,y) = 30x + 20y doseže maksimum v eni od ekstremnih točk (oglišč) konveksnega lika (glej poglavje 2). V kateri točki pase pojavi maksimum namenske funkcije, pa lahko določimo na računski (a) ali grafični način(b).

a) Računski način

Določimo koordinate vseh oglišč konveksnega lika:

C je presečišče premic x + 2y = 35 in 2x + y = 40. Iz prve linearne enačbe izrazimo y = ga vstavimo vdrugo enačbo:

in

Dobljeno vrednost pa vstavimo v y = 40 - 2x = 40 - 2 ⋅ 15 = 10. Torej: C(15,10).

To ponovimo za vse ekstremne točke konveksnega lika.

Izračunajmo vrednost namenske funkcije f(x,y) = 30x+20y v vsakem oglišču konveksnega lika:

Določimo maksimum namenske funkcije:

Namenska funkcija doseže maksimalno vrednost 650 v točki C(15,10). To pomeni, da bo imelo podjetje Tartuf d.o.o. največji dobiček v primeru, ko bo v eni uri zapakiralo 15 kozarcev belih in 10 kozarcev črnih tartufov.Dobiček bo v tem primeru znašal 650 €.

b) Grafični način
• •

V koordinatni sistem s konveksnim likom ABCD narišimo še (rdečo) premico z enačbo f(x,y) = 0, torej 30x + 20y = 0. Ker iščemo maksimum namenske funkcije, moramo to premico vzporedno premakniti čim višje, vendar tako, da bo imela z likom ABCD vsaj eno skupno točko.

Slika 19: Z vzporednim premikanjem premice z enačbo f(x,y) = 0 poiščemo točko v kateri se pojavi maksimum namenske funkcije. Vzporednica premice f(x,y) = 0 (obarvane rdeče), se lika ABCD dotika v točki C. To pomeni, da namenska funkcija doseže maksimum v točki C. Izračunajmo koordinate točke C. C je presečišče premic x + 2y = 35 in 2x + y = 40. Iz prve enačbe izrazimo y = in ga vstavimo v drugo enačbo. Spet dobimo enako kot prej:

Dobljeno vrednost vstavimo v y = 40 - 2x = 40 - 2 ⋅ 15 = 10 in dobimo C(15,10). Torej je maksimum namenske funkcije enak f(C) = 30 ⋅ 15 + 20 ⋅ 10 = 650. To pomeni, da bo imelo podjetje Tartuf d.o.o. največji dobiček v primeru, ko bo v eni uri zapakiralo 15 kozarcev belih in 10 kozarcev črnih tartufov. Dobiček bo vtem primeru znašal 650 €.

3.1.2 Analiza optimalne rešitve proizvodnega problema
Že ko smo zapisali omejitve linearnega programa za dan problem (uporabili smo neenakost) smo dopustili možnost, da se nekateri viri ne porabijo do konca. V našem primeru smo čas za opremljanje kozarcev omejili na 40 minut, čas za polnjenje pa na 35 minut, sedaj nas pa zanima ali smo celotni čas, ki ga imamo na razpolago za posamezne dejavnosti v celoti porabili. Odgovor dobimo tako, da izračunamo dejanki čas ki ga porabimo za izdelavo tistega števila izdelkov, ki je podano v optimalni rešitvi. Torej izdelali smo 15 kozarcev belih in 10 kozarcev črnih tartufov, to pa pomeni, da skupno za polnjenje porabimo $ $15cdot1+10cdot2=35$$ minut, kar je točno toliko kot imamo na razpolago. Pravimo, da je ostanek časa za polnjenje kozarcev enak 0. Analogno ugotovimo, da je tudi ostanek časa za opremljanje kozarcev enak 0, saj je skupni čas za opremljanje enak $$2cdot15+1cdot10=40$$ , kar je enako času, ki je na razpolago. Pravimo, da sta obe omejitvi aktivni, saj so viri, ki jih omejujeta porabljeni do konca in je potrebno za spremembo vrednosti nameenske funkcije spremeniti vrednost omejitve. Ali povedano drugače, spremeniti je potrebno desne strani neenakosti pri omejitvah. V nasprotnem primeru pa so omejitve neaktivne.

3.1.3 Analiza občutljivosti optimalne rešitve
Ko linearni program uspešno rešimo in dobimo optimalno rešitev problema, se pojavi vprašanje ali je ta optimalna rešitev občutljiva na spremembe vhodnih parametrov in kako? Vzroki za pojav tega vprašanja so lahko različni. Vhodni parametri kot so omejitve časa, surovin ali števila delavcev so ponavadi samo ocene, ki so lahko bolj ali manj natančne. Zato je med tekom proizvodnje pričakovati njihove spremembe. Tudi zaslužek ali stroški pri proizvodnji se lahko spreminjajo in to je dobro pri planiranju proizvodnje predvideti. Ogledali si bomo dve vrsti analize občutljivosti in sicer: analizo koeficientov namenske funkcije in analizo desnih strani neenakosti pri omejitvah.

(a) Analiza koeficientov namenske funkcije Optimalna rešitev linearnega programa bo navkljub spremembam koeficientov namenske funkcije ostala nespremenjena tako dolgo, dokler se bo posamezen koeficient nahajal v t.i. območju optimalnosti, drugi parametri programa pa se ne bodo spreminjali. Seveda pa se bo s spreminjanjem koeficientov, spreminjala tudi vrednost namenske funkcije. Oglejmo si sliko z rešitvijo v prejšnjem razdelku obravnavanega problema. Na njej vidimo, da namenska funkcija, ob postavljenih omejitvam doseže maksimum 650 € v točki C . Kaj se zgodi, če koeficiente namenske funkcije spreminjamo? Spomnimo se, da koeficienti v enačbi premice določajo njeno strmino. Torej s spremembo koeficientov namenske funkcije, spreminjamo njen naklon.

Slika 19: Spreminjanje naklona (bolj položna) namenske funkcije. Do katerih vrednosti lahko spreminjamo okeficiente namenske funkcije, točka C pa bo še vedno ostal optimalna rešitev? Obrnimo sedaj premico naše namenske funkcije v točki C, tako da postaja vedno bolj položna. Kmalu ugotovimo, da se premica dotakne tudi točkeB , če jo le dovolj zasučemo. V tem trenutku, točka C ni več edina optimalna rešitev problema. Rešitev je postala tudi točka B in vse točke med B in C. Če hočemo narediti premico še bolj

položno, se le ta ne obrača več v točki C ampak v točki B. S tem pa točka B postane edina rešitev problema in s tem se spremeni tudi optimalna rešitev linearnega programa. Isto lahko sedaj naredimo še v drugo smer. Premico namenske funkcije obračajmo okoli C tako, da bo vedno bolj strma. To lahko delamo tako dolgo dokler se ne premica ne dotakne točke D .

Slika 20: Spreminjanje naklona (bolj strma) namenske funkcije. Iz zgornjih dveh slik ugotovimo, da smo koeficiente premice v obeh primerih spremenili tako, da so zavzeli vrednost izven območja optimalnosti. Toda kakšne so njihove vrednosti? Posvetimo se najprej koeficientu pri spremenljivki x. Izračunajmo najprej kakšna je vrednost tega koeficienta v primeru, ko se premica dotika točke B. Pri tem upoštevajmo, da mora koeficient pri y ostati nespremenjen, torej želimo poiskati enačbo oblike $$Kx+20y$$, kjer bo K nov spremenjen koeficient. Stvari se lotimo tako: Najprej moramo ugotoviti skozi kateri točki bomo izračunali novo enačbo premice. Na sliki 19 vidimo, da premica poteka skozi točki B in C. Da bi skozi njih napeljali premico najprej izračunajmo njen smerni koeficient. Računamo po enačbi:

$$k=

rac{left(y_{2}-y_{1} ight)}{left(x_{2}-x_{1} ight)}$$ V našem primeru, ko sta $$Bleft(0,17.5 ight)$$ in $$Cleft(15,10 ight)$$ velja $$k=

rac{left(10-17.5 ight)}{15-0}=-

rac{7.5}{15}=-0.5$$ Sedaj lahko zapišemo enačbo nove premice: $$y=-0.5x+n$$ Ker vidimo, da premica y os seka v 17.5 , kar pomeni, da je $$n=17.5$$, lahko zapišemo: $ $y=-0.5x+17.5$$ Enačbo sedaj preoblikujmo v implicitno obliko: $$0.5x+y=17.5$$ Ker želimo dobiti enačbo oblike $$Kx+20y$$, celotno enačbo pomnnožimo z 20 in dobimo: $ $0.5x+y=17.5/cdot20$$ $$10x+20y=350$$ Naredimo sedaj isto še za primer na sliki 20, ko se premica namenske funkcije dotakne točke D: $$Cleft(15,10 ight),Dleft(20,0 ight)$$ $$k=

rac{left(0-10 ight)}{20-10}=-

rac{10}{5}=-2$$ $$y=-2x+40$$ $$2x+y=40$$ $$40x+20y=800$$ Ko si sedaj natančno pogledamo raezultate izračunov ugotovimo, da se koeficient pri x, torej dobiček pri proizvodnji belih tartufov lahko spreminja med 10 € in 40 €. Če bi padel pod 10 ali zrasel nad 40, bi se rešitev spremenila. V našem primeru ne bi več izdelovali obeh vrst tartufov. Če bi dobiček belih tartufov padel pod 10, bi izdelovali samo črne, če pa bi zrasel na 40 pa samo bele. Enako sedaj naredimo še za koeficiente pri y. Torej obe enačbi, za primer, ko se premica dotika točke B in za primer, ko se dotika D, moramo preoblikovati tako, da dobimo enačbo oblike $$30x+Ky$$, kjer bo K spremenjen koeficient pri y. Naredimo kot sledi: $$0.5x+y=17.5/cdot60$$ $$30x+60y=1050$$ in $$2x+y=40/cdot15$$ $$30x+15y=600$$ Tako ugotovimo, da se lahko dobiček pri izdelavi črnih tartufov giblje med 15 € in 60 €, optimalna rešitev pa še vedno ostane ista.

(b) Analizo desnih strani neenakosti pri omejitvah Pri analizi občutljivosti desnih strani neenakosti pri omejitvah nas zanimata naslednja vprašanja:

Za koliko se spremeni vrednost namenske funkcije, če se desna stran neenakosti pri eni izmed aktivnih omejitev spremeni za eno enoto, vsi ostali parametri pa ostanejo enaki? Za koliko dodanih ali odvzetih enot na desni strani neenačaja bo izračunana sprememba na enoto ostala veljavna?

Pri analizi desnih strani neenakosti pri omejitvah moramo upoštevati dejstvo, da vsaka sprememba desne strani aktivne omejitve povzroči spremembo vrednosti namenske funkcije, medtem pa sprememba neaktivne omejitve, ki je manjša od ostanka ne povzroči nobene spremembe.

Slika 21: senčna cena1. Izračunajmo najprej za koliko se spremeni vrednost namenske funkcije, če se desna stran neenakosti pri enem izmed pogojev spremeni za eno enoto. Omejitev izraženo s premico $ $2x+y=40$$ spremnimo tako, da desno stran enačbe povečamo za 1. Tako dobimo novo rešitev (glej sliko zgoraj) za kateri izračunamo vrednost namenske funkcije. To naredimo tako, da najprej izračunamo novo rešitev, ki jo nato vstavimo v namensko funkcijo $ $30x+20y$$. Novo rešitev nam predstavlja presečišče premic $$2x+y=41$$ in $$x+2y=35$ $, ki ga izračunamo: $$2x+y=41$$ $$x+2y=35$$ $$2x+y=41$$ $$x+2y=35/cdot(-2)$$ $$2x+y=41$$ $$-2x-4y=-70$$ $$-3y=-29$$ Iz tega pa sledi, da je $$y=9.overline{66}$$

Ko y vstavimo v $$x+2y=35$$ dobimo, da je $$x=15.overline{66}$$ Iz tega vidimo, da je nova rešitev $$C^{*}=15.overline{66},9.overline{66})$$. Koto vstavimo v namensko funkcijo dobimo vrednost $$30cdot15.overline{66}+20cdot9.overline{66}=663.33$$. Ko vrednost 663.33 priemerjamo z vrednostjo namenske finkcije pri prvotni rešitevi vidimo, da je nova rešitev boljša točno za 13.33. Vrednosti 13.33 pravimo senčna cena, kar z drugimi besedami pomeni, da se vrednost namenske funkcije poveča 13.33, če vrednost na desni strani enačaja pri danem pogoju zvečamo za eno enoto. Sedaj pa se znajdemo pred vprašanjem do katere vrednosti lahko povečujemo čas za opremljanje kozarcev, da ostane izračunana senčna cena veljavna. Z drugimi besedami, do katere vrednosti se nam čas za opremljanje kozarcev izplača večati. Če pogledamo na sliko zgoraj vidimo, da se nam to splača do takrat, ko omejitev za čas opremljanja kozarcev premaknemo tako daleč, se le ta dotika točke E. V tem trenutku omejitev, ki smo jo sedaj spreminjali ne bo več aktivna, saj je prešla preko presečišča omejitev $$y=0$$ in $ $x+2y=35$$ (zapustila je konveksen lik, ki ga tvorijo omejitve). Če sedaj izračunamo enačbo premice naše omejitve ugotovimo, da se je koeficient na desni strani neenačbe povečal na 70 ($$2x+y=70$$, glej sliko zgoraj), dodatno večanje koeficienta pa se ne odraža na vrednosti namenske funkcije, saj rešitev ostaja točka E.

Slika 22: senčna cena2.

3.1.4 DUAL primarnega proizvodnega problema
K vsakemu linearnemu programu lahko priredimo dualni linearni program. Pojem dualnega linearnega programa bomo razložili na naslednjem primeru. Proizvodni problem TARTUFI I., ki smo ga pravkar rešili glede na maksimalni čisti dohodek od proizvedenih x kozarcev črnih in y kozarcev belih tartufov, v eni seriji,obravnavajmo še z drugega zornega kota. Proizvodnja želi tak proizvodni načrt, pri katerem bo vrednost porabljenih resursov najmanjša. Naj bo u vrednost (v denarnih enotah DE) ene ure uporabe stroja za polnjenje in v vrednost (v DE) ene ure uporabe stroja za opremljanje kozarcev, v proizvodnem procesu v katerem izdelajo 15 kozarcev belih tartufov in 10 kozarcev črnih tartufov in s tem dosežejo maksimalni čisti dohodek (650 DE). Pri izdelavi enega kozarca belih tartufov imajo porabljeni resursi vrednost u + 2v. Ker pa podjetje naj ne bi delalo z izgubo, ta vrednost ne more biti manjša od čistega dohodka enega kozarce belih tartufov, ki znaša30€. Podobno razmišljamo pri izdelavi črnih tartufov. Skupni izdatek za resursov, ki jih podjetje potrebuje znaša 35u + 40v, pa naj bo čim manjši. Formalno pa velja, da iz primarnega dobimo dualnega tako, da matriko koeficientov v neenačbah transponiramo, neenačaje obrnemo, maximum zamenjamo z minimumom, koeficienti ciljne funkcije postanejo omejitve v neenačbah, omejitve pa koeficienti ciljne funkcije dualnega programa. V dualnem linearnem programu imamo toliko spremenljivk, kot imamo v primarnem omejitev, saj vsaki omejitvi primarnega linearnega programa pripada ena dualna spremenljivka. Vrednosti namenske funkcije primarnega in dualnega linearnega programa sta pri optimalni rešitvi vedno isti. Torej tabelo problema, ki smo jo zapisali v 3.1transponiramo in dobimo: Polnjenje kozarcevOpremljanje kozarcevDobiček Beli tartufi 1 2 30 Črni tartufi 2 1 20 Omejitve 35 40 stroški resursov u v Pri takem načinu načrtovanja proizvodnje dobimo naslednji linearni program:

3.1.5 Grafično reševanje dualnega problema
Dualni linearni program lahko rešimo grafično, ker imamo spet samo 2 neznanki, u in v.

Najprej v koordinatni sistem narišemo premice u + 2v ≥ 30, 2v + u ≥ 20, u ≥ 0 in v ≥ 0.

Slika 20: Grafična rešitev dualnega problema.

Nato določimo ekstremne točke in določimo njihove koordinate. Iz slike je razvidno da velja: A(0,15) in C(10,0). Izračunati pa je potrebno še točko B. To naredi kot prej in sicer:

Tako dobimo še točko B( , ). Sedaj potrebno izračunati še vrednosti namenske funkcije v tem točkah.

Poglejmo si točko B pobližje. Ker je u≠0, to pomeni, da so resursi za polnjenje kozarcev 100 izkoriščeni. Povečanje resursa za 1 enoto, nam bi povečalo dobiček za uDE. Če pa bi bil u v optimalni rešitvi dualnega linearnega programa enak nič, pa resursi za polnjenje kozarcev ne bi bili izkoriščeni in povečanje kapacitet ne bi povečalo dobička. Analogno velja za dualno spremenljivko v.

3.1.6 Reševanje proizvodnega problema z metodo simpleksov
V primeru, ko imamo v linearnem programu več kot dve spremenljivki, pa grafična metoda odpove. Ena izmed metod, ki jo lahko uporabimo v tem primeru, je metoda simpleksov. Simpleksna metoda, katere začetnik je bil Dantzig (Dantzig, 1963) pred dobrimi petdesetimi leti, je osredotočena na iskanje t.i. dopustnih rešitev, ki jim ustreza enolično določena ekstremna točka konveksnega lika možnih rešitev in še določena baza vektorskega prostora, ki sestoji iz m linearno neodvisnih vektorjev. V bazi nato zamenjamo kak njen vektor s takšnim, ki ga v bazi še ni, dobimo novo bazo in njej ustrezno ekstremno točko, ki ji ustreza nova vrednost namenske funkcije (Vadnal, 1977). Poiskati moramo seveda takšno točko, kjer bo vrednost namenske funkcije optimalna (največja oz. najmanjša v maksimizacijskih oz. v minimizacijskih linearnih programih),premikamo pa se po mejah področja dopustnih rešitev. Metodo bomo predstavili na naslednjem zgledu:

Podjetje Tartuf d.o.o. pakira bele in črne tartufe namenjene zahtevnejšim kupcem. Proizvodnja obeh vrst poteka v treh fazah: polnjenje kozarcev, zapiranje kozarcev in lepljenje nalepk na kozarce. Za kozarec belih tartufov potrebujejo 1 minuto za polnjenje, 2 minuti za zapiranje in 1 minuto za nalepko. Za kozarec črnih-tartufov pa potrebujejo 2 minuti za polnjenje, 1 minuto za zapiranje in 1 minuto za nalepko. Stroj, ki polni kozarce, je na razpolago 40 minut v vsaki uri; stroj, ki zapira kozarce je tudi na razpolago 40 minut v vsaki uri; stroj, ki lepi nalepke, pa je na razpolago le 25 minut v vsaki uri. Podjetje ima pri prodaji kozarca belih tartufov dobiček 30 € in pri prodaji kozarca črnih tartufov 20 €. Podjetje želi doseči čim večji dobiček. Zdaj dobimo takšen linearni program:

Rešimo ta linearni program z metodo simpleksov. Rešitev: V tem primeru določamo maksimum namenske funkcije, neenačbe v omejitvah so oblike ≤.Zato postopamo tako: a) Neenačbe s pomočjo dopolnilnih spremenljivk pretvorimo v enačbe:

b) Koeficiente sistema uredimo v začetno simpleksno tabelo:

c) Poiščemo pivotni element

izberemo stolpec, ki ima v prvi vrstici najmanjšo vrednost (v našem primeru je to drugi stolpec);

izberemo vrstico: v vsaki (razen v prvi) vrstici izračunamo količnik med vrednostjo v stolpcu b-jev in vrednostjo v izbranem stolpcu; izberemo tisto vrstico, v kateri je ta količnik najmanjši ( našem primeru je to tretja vrstica);

križišče izbrane vrstice in izbranega stolpca imenujemo pivot;

na mestu pivota ustvarimo enko tako, da celotno vrstico pomnožimo z primeru je to );

(v našem

na vseh ostalih mestih v izbranem stolpcu s pomočjo linearnih transformacij ustvarimo ničle (v našem primeru tretjo vrstico pomnožimo s 30 in jo prištejemo k prvi vrstici, tretjo vrstico pomnožimo z (-1) in jo prištejemo k drugi vrstici, tretjo vrstico pomnožimo z (-1) in jo prištejemo k zadnji vrstici).

d) Spet poiščemo pivotni element:

izberemo stolpec, ki ima v prvi vrstici najmanjšo vrednost (v našem primeru je to tretji stolpec);

izberemo vrstico: v vsaki (razen v prvi) vrstici izračunamo ustrezen količnik in izberemo tisto vrstico, v kateri je ta količnik najmanjši (v našem primeru je to četrta vrstica);

križišče izbrane vrstice in izbranega stolpca imenujemo pivot;

na mestu pivota ustvarimo enko tako, da celotno vrstico pomnožimo z primeru četrto vrstico pomnožimo z 2);

(v našem

na vseh ostalih mestih v izbranem stolpcu s pomočjo linearnih transformacij ustvarimo ničle (v našem primeru četrto vrstico pomnožimo s 5 in jo prištejemo k prvi vrstici, četrto vrstico pomnožimo z (-3∕2) in jo prištejemo k drugi vrstici, četrto vrstico pomnožimo z (-1∕2) in jo prištejemo k tretji vrstici).

Opisan postopek ponavljamo, dokler so prvi vrstici negativne vrednosti. V našem primeru v prvi vrstici niveč negativnih vrednosti, torej je postopek končan. Iz razširjene matrike preberemo rešitev:
• •

V zadnjem stolpcu prve vrstice preberemo maksimalno vrednost namenske funkcije: 650. V stolpcu, ki predstavlja spremenljivko x (drugi stolpec), poiščemo enko. V našem primeru je enka v tretji vrstici. Zato vrednost spremenljivke x preberemo v zadnjem stolpcu tretje vrstice: x = 30.

V stolpcu, ki predstavlja spremenljivko y (tretji stolpec), poiščemo enko. V našem primeru je enka v četrti vrstici. Zato vrednost spremenljivke y preberemo v zadnjem stolpcu četrte vrstice: y = 10.

To pomeni, da bo imelo podjetje Tartuf d.o.o. maksimalni dobiček v primeru, če bo zapakiralo x = 30 kozarcev belih in y = 10 kozarcev črnih tartufov na uro. Dobiček bo v tem primeru znašal f = 650€.

Postopek reševanja linearnega programa lahko v nekaj vrsticah zapišemo tako: 1 Neenačbe s pomočjo dopolnilnih spremenljivk pretvorimo v enačbe. 2 Koeficiente sistema uredimo v začetno simpleksno tabelo. 3 Poiščemo pivotni element. 4 Izberemo stolpec, ki ima v prvi vrstici najmanjšo vrednost. 5 Izberemo vrstico pri kateri je količnik med vrednostjo v stolpcu b in vrednostjo v prejšnji vrstici izbranem stolpcu najmanjši. 6 Križišče izbrane vrstice in izbranega stolpca imenujemo pivot. 7 Na mestu pivota s pomočjo linearnih transformacij ustvarimo enko. 8 Na vseh ostalih mestih v izbranem stolpcu s pomočjo linearnih transformacij ustvarimo ničle. 9 Poiščemo naslednji pivotni element in postopek ponavljamo, dokler so prvi vrstici negativne vrednosti.

3.1.7 Reševanje proizvodnega problema s pomočjo računalniškega programa LINGO
Linearne programe, v katerih nastopata le dve spremenljivki, najpogosteje rešujemo grafično. Če je v linearnem programu več spremenljivk, se lahko reševanja lotimo z metodo simpleksov. Precej časa pa prihranimo, če se lotimo reševanja s pomočjo kakšnega računalniškega programa. V tem poglavju se bomo naučili, kako rešimo linearni program s pomočjo programa LINGO. LINGO je celovito orodje za izgradnjo in reševanje različnih optimizacijskih modelov. Več o Tem kar LINGO zna in zmore bomo govorili v enem izmed naslednjih poglavij, za zdaj pa naj bo dovolj to, kar bomo spoznali sproti.

Zgled: Vzemimo za zgled problem TARTUFI II., za katerega smo formulirali naslednji linearni program:

Rešimo ta linearni program s pomočjo programa LINGO. Rešitev: Podatke zapišimo v ustrezni obliki za program LINGO. Najprej namensko funkcijo, nato pa še pogoje.

Slika 21: 35 Program LINGO nam izpiše rešitev linearnega programa v takšni obliki:

Slika 22: 36

V vrstici Objective value preberemo optimalno vrednost namenske funkcije. V našem primeru je to 650. To pomeni, da maksimalni dobiček podjetja Tartuf d.o.o. pri pakiranju belih in črnih tartufov v eni uri znaša 650 €. V stolpcu Value (vrednost) preberemo vrednosti spremenljivk x = 15 in y = 10. To pomeni, da mora podjetje v eni uri zapakirati 15 kozarcev belih in 10 kozarcev črnih tartufov. V stolpcu Reduced Cost (reducirani strošek) preberemo, za koliko bi bilo potrebno spremeniti vrednost koeficienta ustrezne spremenljivke v namenski funkciji (v našem primeru to pomeni, za koliko bi se moral povečati dobiček pri pakiranju posameznega izdelka: belih ali črnih tartufov), da bi se tudi ta pojavila v optimalni rešitvi. V našem primeru se obe spremenljivki pojavita v optimalni rešitvi, zato je reducirani strošek pri obeh spremenljivkah enak 0. V stolpcu Slack or Surplus (pomanjkanje ali presežek) preberemo, za koliko bi bilo potrebno levo stran v omejitvenih neenačbah povečati ali zmanjšati, da bi namesto neenačb dobili enačbe. Ko imamo neenačbe oblike ≥ je to Surplus (presežek). V prvi vrstici se še enkrat pojavi optimalna vrednost namenske funkcije. V našem primeru imamo v drugi vrstici vrednost 5, torej je presežek pri polnjenju kozarcev enak 5. To pomeni, da stroj za polnjenje kozarcev ni 100 izkoriščen, ampak v vsaki uri 5 minut ne obratuje. V tretji in četrti vrstici pa sta vrednosti pri Surplus enaki 0. To pomeni, da sta stroja za zapiranje kozarcev in lepljenje nalepk 100 % izkoriščena. V stolpcu Dual price (dualna cena) preberemo, za koliko bi se spremenila optimalna vrednost namenske funkcije, če bi se omejitev v ustrezni neenačbi povečala za eno enoto. Pri neenačbah oblike ≥ je dualna cena vedno nenegativna. V prvi vrstici dualne cene ni smiselno brati, saj je vedno 1 (to pove: če bi vrednost namenske funkcije povečali za 1, bi se optimalna vrednost namenske funkcije povečala za 1). V drugi vrstici je dualna cena enaka 0. To pomeni, da se v primeru, če bi bil stroj za polnjenje kozarcev na razpolago 1 minuto več (torej 41 minut v vsaki uri), optimalna vrednost namenske funkcije ne bi spremenila.

Preverimo, ali je to res. V program LINGO vstavimo naslednje podatke:

Slika 23: 37 Dobimo takšno rešitev:

Slika 24: 38 Optimalna vrednost namenske funkcije je res ostala enaka. V tretji vrstici je dualna cena enaka 10. To pomeni, da bi se v primeru, če bi bil stroj za zapiranje kozarcev na razpolago 1 minuto več (torej 41 minut v vsaki uri), optimalna vrednost namenske funkcije povečala za 10 €. Nova optimalna vrednost namenske funkcije bi v tem primeru bila enaka 660 €. Preverimo, ali je to res. V program LINGO vstavimo naslednje podatke:

Slika 25: 39 Dobimo takšno rešitev:

Slika 26: 40

Optimalna vrednost namenske funkcije se je res povečala za 10 (iz 650 € na 660 €). V četrti vrstici je dualna cena tudi enaka 10 €. To pomeni, da bi se v primeru, če bi bil stroj za lepljenje nalepk na razpolago 1 minuto več (torej 26 minut v vsaki uri), optimalna vrednost namenske funkcije povečala za 10 €. Nova optimalna vrednost namenske funkcije bi v tem primeru bila enaka 660 €. Preverimo, ali je to res. V program LINGO vstavimo naslednje podatke:

Slika 27: 41 Dobimo takšno rešitev:

Slika 28: 42 Optimalna vrednost namenske funkcije se je res povečala za 10 (iz 650 € na 660 €).

3.1.8 Analiza občutljivosti opravljena s pomočjo računalniškega programa LINGO

Oglejmi si poročilo, ki ga izdela LINGO, ko zahtevamo, da nam naredi analizo občutljivosti. Poglejmo si spremenljivko $X1$, ekvivalentno spremnljivki $y$ v poglavju o grafičnem reševanju. Vidimo, da je njen koeficient v namenski funkciji enak 30, povečamo ga lahko za 10 in zmanjšamo za 20. Kar pa je popolnoma enako, kot smo že izračunali (poišči rešitev v prejšnjih poglavjih). Enako ugotovimo za koeficient pri spremnljivki $X2$ (prej $y$).

Tudi pri analizi desnih strani neenakosti ugotovimo isto. Ko smo večali vrednost časa za opremljanje kozarcev iz 40 smo ugotovili, da se nam to vrednost izplač povečevati do 70. V LINGO poročilu je to prikazano kot dovoljeno povečanje za 30. Tudi dovoljeno zmanjšanje za 22, 5 je prikazano v poročilu (tega prej nismo izračunali). Isto analizo lahko iz poročila preberemo tudi za drugo omejitev.

Ranges in which the basis is unchanged: Objective Coefficient Ranges: Current Allowable Allowable Variable Coefficient Increase Decrease X1 30.00000 10.00000 20.00000 X2 20.00000 40.00000 5.000000 Righthand Side Ranges: Current Allowable Allowable Row RHS Increase Decrease MES 35.00000 45.00000 15.00000 DEST 40.00000 30.00000 22.50000 Slika 32: Analiza občutljivosti z LINGO-m.

3.2. Primeri in naloge za proizvodni problem
Odgovore na vsa vprašanja smo zgoraj poiskali s pomočjo grafične metode. V nadaljevanju bomo pokazali, kako poiščemo rešitev danega linearnega problema s programom LINGO. Da si osvežimo spomin, si še enkrat oglejmo kako izgleda linearni program, ki ga obravnavamo: [ maxf(x,y)=130x+90y ] [ 100x+80yleq 10.000 ] [ 5x+3yleq 420 ] [ xgeq 0,yleq 0. ] S spodnje slike je razvidna sintaksa, ki jo je potrebno vpisati v program LINGO, da nam bo le-ta podal rešitev.

Slika 33: S spodnje slike, ki jo program LINGO poda kot rešitev danega linearnega programa, lahko odgovorimo na večino vprašanj, na katera smo zgoraj že odgovorili.

Slika 34: Iz vrstice Objective value lahko preberemo optimalno vrednost namenske funkcije, ki znaša 11.880, ki jo dosežemo pri 36 izdelkih 1. kvalitete (vrstica x) in 80 izdelkih 2. kvalitete (vrstica y). Ker sta vrednosti v stolpcu Slack or Surplus v vrsticah omejitev surovin in omejitev časa enaki 0, lahko sklepamo, da so vse surovine in ves čas 100 % izkoriščeni. Vrednosti v stolpcu Dual price nam povesta, da se vrednost namenske funkcije spremeni za 0,6 (€), če se omejitev surovin spremeni za 1 (kg) oz. za 14 (€), če se omejitev časa spremeni za 1 (uro).

Slika 35: Na zgornji sliki pa se skrivajo odgovori še na vprašanja, ki se tičejo koeficientov namenske funkcije in koeficientov desnih strani neenačb omejitev. V vrstici Objective Coefficient Ranges lahko preberemo, da se koeficient spremenljivke x v namenski funkciji, ki znaša trenutno 130, lahko poveča za 20 (Allowable Increase) ali zmanjša za 17,5 (Allowable d Decrease), da se rešitev linearnega programa ne spremeni. ZPri spremenljivki y lahko koeficient povečamo največ za 14 in pomanjšamo za 12. Iz spodnje tabele na zgornji sliki (Righthand Side Ranges ) lahko preberemo za koliko se lahko spremenijo desne strani neenačb, da bodo veljale spremembe namenske funkcije, kot smo zapisali zgoraj. Desna stran pri neenačbi za omejitve surovin znaša trenutno 10000 (Current RHS) in se lahko največ poveča za 1200 (Allowable Increase) ali pomanjša za 1600 (Allowable Decrease). Podobno lahko preberemo, da se v neenačbi za omejitev časa desna stran poveča največ za 80 in pomanjša za 45.

3.3. Prehrambeni problem ali problem mešanja
Prehrambeni problem ali problem mešanja, bomo imenovali tiste vrste problemov kjer iskali zmes, za izdelavo katere bodo stroški najmanjši. Torej islai bomo minimum namenske funkcije. Oglejmo si naslednji primer: Problem 21.DVD-ji in ROMANI Na novoletni razprodaji so ponujali pakete knjig in DVD-jev. Leposlovni paket vsebuje 6 romanov in 3 DVD-je in stane 60 €. Romantični paket pa vsebuje 2 romana in 6 DVD-jev in stane 100 €. Andrej želi kupiti vsaj 28 romanov in 24 DVD-jev. Pri nakupu pa želi imeti čim manjše stroške. Rešitev:

Najprej uredimo dane podatke v preglednico: leposlovni romantični omejitve romani 6 2 28 DVD-ji 3 6 24 strošek 60 100 količina paketov x y Postopek je enak kot v primeru TARTUFI I. in II. 1 Formuliramo linearni program 2 Določimo namensko funkcijo 3 Določimo omejitve 4 Rešimo linearni program

a) Določimo namensko funkcijo. Namenska funkcija predstavlja skupni strošek pri nakupu leposlovnih in romantičnih paketov.
• •

Strošek z nakupom enega leposlovnega paketa je 60, torej je strošek z nakupom x leposlovnih paketov 60x. Strošek z nakupom enega romantičnega paketa je 100, torej je strošek z nakupom y romantičnih paketov 100y.

Zato je strošek z nakupom x leposlovnih paketov in y romantičnih paketov enak 60x + 100y. Ker iščemo najnižje stroške nakupa, moramo poiskati minimum namenske funkcije. Tako dobimo namensko funkcijo

b) Določimo omejitve:

Romani: o V enem leposlovnem paketu je 6 romanov, torej je v x leposlovnih paketih 6x romanov. o V enem romantičnem paketu sta 2 romana, torej je v y romantičnih paketih 2y romanov. o Zato je v x leposlovnih in v y romantičnih paketih skupaj 6x + 2y romanov. Ker želimo kupiti vsaj 28 romanov, je

DVD-ji: o V enem leposlovnem paketu so 3 DVD-ji, torej je v x leposlovnih paketih 3x DVD-jev. o V enem romantičnem paketu je 6 DVD-jev, torej je v y romantičnih paketih 6y DVD-jev. o Zato je v x leposlovnih in v y romantičnih paketih skupaj 3x + 6y DVD-jev. Ker želimo kupiti vsaj 24 DVD-jev, velja

Pogoj nenegativnosti

V našem primeru imamo le dve spremenljivki, torej:

Linearni program danega problema je torej naslednji:

3.3.1 Grafično reševanje prehrambenega problema
Kot smo spoznali v prejšnjih poglavjih lahko probleme linearnega programiranja, v katerih nastopata le dve spremenljivki, rešimo z grafično metodo. Za zgled vzemimo problem DVD-ji in ROMANI. Tam smo formulirali naslednji linearni program:

Rešimo ta linearni program z grafično metodo po naslednjem postopku: 1 V koordinatni sistem narišemo množico vseh rešitev sistema linearnih neenačb sestavljenega iz omejitev in pogojev nenegativnosti.

2 Določimo koordinate ekstremnih točk. 3 Ugotovimo točko (grafično ali računsko) v kateri se pojavi maksimum (minimum) namenske funkcije. 4 Izračunamo maksimum ( minimum) namenske funkcije.

Rešitev: V koordinatni sistem narišimo množico vseh rešitev sistema linearnih neenačb, ki ga sestavljajo omejitve in pogoj nenegativnosti v linearnem programu:

Slika 29: slika31 Množica vseh rešitev danega sistema je pobarvana konveksna množica. Namenska funkcija f(x,y) = 60x + 100y doseže minimum v eni od ekstremnih točk (oglišč) konveksnega lika. V kateri, pa lahko spet ugotovimo določimo na računski ali grafični način.

a) Računski način

Določimo koordinate vseh oglišč konveksne množice točk:

Točko B pa moramo izračunati. B je presečišče premic 6x + 2y = 28 in 3x + 6y = 24. Iz prve enačbe izrazimo y = 14 - 3x in ga vstavimo v drugo enačbo:

Dobljeno vrednost pa vstavimo v y = 14 - 3x = 14 - 3 ⋅ 4 = 2. Torej:

Izračunajmo vrednost namenske funkcije f(x,y) = 60x + 100y v vsakem oglišču konveksnega lika:

Določimo minimum namenske funkcije:

Namenska funkcija doseže minimalno vrednost 440 v točki B(4,2). To pomeni, da bo imel Andrej najmanjše stroške, če bo kupil 4 leposlovne in 2 romantična paketa. Stroški bodo v tem primeru znašali 440 €.

b) Grafični način
• •

V koordinatni sistem s konveksno množico narišimo še (rdečo) premico z enačbo f(x,y) = 0, torej 60x + 100y = 0. Ker iščemo minimum namenske funkcije, moramo to premico vzporedno premakniti čim nižje, vendar tako, da bo imela s konveksno množico vsaj eno skupno točko.

Slika 30: Množica rešitev sistema linearnih neenačb. Minimum se pojavi v točki B. Vzporednica rdeče premice z zgoraj opisanimi lastnostmi se konveksne množice dotika v točki B. To pomeni, da namenska funkcija doseže minimum v točki B. Izračunajmo koordinate točke B. Točka B je presečišče premic 6x + 2y = 28 in 3x + 6y = 24. Iz prve enačbe izrazimo y = 14 - 3x in ga vstavimo v drugo enačbo:

Dobljeno vrednost pa vstavimo v y = 14 - 3x = 14 - 3 ⋅ 4 = 2. Torej je točka B(4,2). Torej je minimum namenske funkcije enak f(B) = 60 ⋅ 14 + 100 ⋅ 2 = 440. To pomeni, da bo imel Andrej najmanjše stroške, če bo kupil 4 leposlovne in 2 romantična paketa. Stroški bodo v tem primeru znašali 440 €.

3.3.2 Analiza občutljivosti optimalne rešitve prehrambenega problema

(a) Analiza koeficientov namenske funkcije Podobno kot smo analizirali občutljivost optimalne rešitve proizvodnega problema, bomo sedaj analizirali rešitev prehrambenega modela. Najprej bomo naredili analizi koeficientov namenske funkcije, nato pa še analizo desnih strani neenakosti v omejitvah. Povedali smo že, da ostaja optimalna rešitev linearnega programa optimalna navkljub spremembi koeficientov tako dolgo, dokler se posamezni koeficient nahaja v t.i. območju optimalnosti. Na spodnji sliki je predstavljena grafična rešitev danega prehrambenega problema. Iz slike je razvidno, da doseže namenska funkcija minimum (440€) v točki B.

Slika 38: če spreminjamo koeficiente v enačbi namenske funkcije, se bo spreminjal naklon premice. če je premica $y=-0,6x+4,4$,(ali v implicitni obliki $60x+100y-440=0$), ki poteka skozi točko B in predstavlja prestavljeni graf namenske funkcije, vedno bolj strma, se v določenem trenutku dotakne točke A (slika 2). Sedaj točka B ni več edina optimalna rešitev problema. V optimalno rešitev vstopa tudi točka A in vse točke med njima. Z vsakim nadaljnim zasukom postane točka A edina optimalna rešitev danega linearnega programa.

Slika 39: Podobno se zgodi, če pa je premica vedno bolj položna. V določenem trenutku se dotakne točke C. Sedaj predstavljajo optimalne rešitve vse točke, ki ležijo na premici med B in C (slika 3). Z vsakim nadaljnim zasukom postane točka C edina optimalna rešitev danega linearnega programa.

Slika 40: S spreminjanjem naklona premice, ki predstavlja graf namenske funkcije, smo dosegli to, da smo spremenili optimalno rešitev danega linearnega programa. Sprememba naklona premice pa pomeni spremembo koeficientov enačbe namenske funkcije. V nadaljevanju bomo razmišljali ravno v nasprotni smeri. Iskali bomo takšne nove vrednosti koeficientov namenske funkcije, da se optimalna rešitev ne bo spremenila. Tako bomo ugotovili, za koliko se lahko spremeni določeni koeficient v namenski funkciji, da bo le-ta še vedno ostal v območju optimalnost in da bo optimalna rešitev navkljub tej spremembi ostala enaka. Posvetimo se najprej koeficientu spremenljivke $x$, ko premica postaja vedno bolj strma. Izračunajmo vrednost tega koeficienta za primer, ko premica poteka skozi točko A (in seveda B). Želimo poiskati novo vrednost koeficienta $K$ in prostega člena $n$ v enačbi $y=Kx+n$. Uporabimo enačbo za izračun koeficienta premice, ki poteka skozi dve točki: [ K=

rac{y_{2}-y_{1}}{x_{2}-x_{1}}, ] kjer so $x_{1}$, $y_{1}$, $x_{2}$ in $y_{2}$ koordinate točk A in B. K je torej [ K=

rac{2-14}{4-0}=-

rac{12}{4}=-3. ] S slike 2 je razvidno, da premica iskane namenske funkcije seka $y$ os v 14, zato je prosti člen $n=14$. Sedaj lahko zapišemo enačbi iskane premice skizi točki A in B: [ y=-3x+14, ] ki jo preoblikujemo v implicitno obliko [ 3x+y-14=0 ] in pomnožimo s 100, da ostane koeficient spremenljivke $y$ nespremenjen. Dobimo enačbo [ 300x+100y-1400=0, ] iz katere lahko razberemo novi (največji) koeficient spremenljivke $x$ v namenski funkciji. če bo $Kleq 300$, bo točka B še vedno ostala ena izmed optimalnih rešitev linearnega programa. če bo $K < 300$, bo B edina optimalna rešitev. Naredimo zelo podoben izračun še enkrat, da dobimo minimalno vrednost koeficienta $K$, pri katerem bo B ostala optimalna rešitev. Sedaj iščemo enačbo premice, ki poteka skozi točki B in C. Najprej izračunajmo njen smerni koeficient [ K=

rac{y_{2}-y_{1}}{x_{2}-x_{1}}, ] le da so tokrat $x_{1}$, $y_{1}$, $x_{2}$ in $y_{2}$ koordinate točk C in B. K je torej [ K=

rac{0-2}{8-4}=-

rac{2}{4}=-

rac{1}{2}. ] Ker seka iskana premica $y$ v 4 (slika 3), znaša tokrat prosti člen $n=4$. Zapišemo premico [ y=-

rac{1}{2}x+4, ] ki jo preoblikujemo v implicitno obliko in pomnožimo s 100: [

rac{1}{2}x+y-4=0 ] [ 50x+100y-400=0. ] Razberemo lahko najmanjši koeficient spremenljivke $x$ v namenski funkciji. če bo $Kgeq 50$, bo točka B še vedno ostala ena izmed optimalnih rešitev linearnega programa. če bo $K > 50$, bo B edina optimalna rešitev. Dobljeni rezultati nam povedo, da se koeficient pri $x$, torej strošek leposlovnega paketa, lahko spreminja med 50€ in 175€. če bi padel pod 50€ ali narasel nad 175€, bi se rešitev linearnega programa spremenila. če bi $x$ narasel nad 175, točka B ne bi bila več optimalna rešitev, ampak bi to postala točka A. Ker je v tem primeru leposlovnemu paketu cena narasla preveč, kupimo le romantične pakete, da ob danih omejitvah dosežemo minimalne stroške. Po drugi strani nam dobljena rešitev pove, da če pade $x$ pod 50, se optimalna rešitev prestavi v točko C, torej imamo minimalne stroške, če kupimo le leposlovne pakete. Enak postopek bomo uporabili še enkrat, da bomo ugotovili, kako sprememba koeficienta pred spremenljivko $y$ v namenski funkciji (ob stalnem koeficientu pred $x$, to je 60), vpliva na optimalno rešitev. Najprej preoblikujmo enačbo $3x+y-14=0$, katere graf poteka skozi točki A in B. Pomnožiti jo je potrebno z 20, da pred $x$-om dobimo koeficient 60: [ 60x+20y-280=0. ] Dobili smo minimalno vrednost koeficienta pred $y$ in sicer 20. Preoblikujmo še enačbo $

rac{1}{2}x+y-4=0$ , ki poteka skozi točki B in C. Ker želimo, da ima $x$ koeficient 60, je potrebno enačbo pomnožiti s 120. Dobimo [ 60x+120y-480=0. ] Dobili smo maksimalno vrednost koeficienta pred $y$ in sicer 120. Ugotovili smo, da se mora strošek za romantični komplet gibati med 20€ in 120€, če želimo, da se rešitev (točka B) ne bo spremenila. če koeficient pred $y$ pade pod 20, postane optimalna rešitev točka A; za minimalne stroške kupimo izključno romantične komplete. če koeficient pred $y$ naraste nad 120, postane optimalna rešitev točka C; za minimalne stroške kupimo izključno leposlovne komplete. (b) Analiza desnih strani neenakosti pri omejitvah Že v poglavju o proizvodnih problemih smo zapisali, da to analizo delamo na dveh nivojih. Tako bomo tudi tukaj najprej izračunali, za koliko se spremeni vrednost namenske funkcije, če se desna stran neenakosti pri eni izmed omejitev spremeni za eno enoto (ostali parametri pa ostanejo enaki). Najprej poglejmo omejitev $6x+2ygeq 28$ (omejitev števila romanov). Povečajmo desno stran neenačbe za 1, da dobimo $6x+2ygeq 29$ in izračunajmo novo vrednost namenske funkcije v novi rešitvi, ki jo predstavlja točka B’ (slika 4).

Slika 41:

Koordinate točke B’ dobimo tako, da izračunamo presečišče premic $6x+2y=29$ in $3x+6y=24$. [ 6x+2y=29 ] [ 3x+6y=24setminus cdot (-2) ] [ 6x+2y=29 ] [ underline{-6x-12y=-48} ] [ -10y=-19 ] [ y=1,9 ] Dobljeno vrednost vstavimo v eno izmed enačb, npr $6x+2y=29$, da dobimo $6x+2cdot 1,9=29$ oz. $x=4,2$. Izračunali smo koordinate točke $B(4,2,1,9)$, ki jo bomo vstavili v namensko funkcijo. [ f=60x+100y ] [ f(B’)=60cdot 4,2+100cdot 1,9=442 ] če vemo, da je bila prvotna optimalna vrednost namenske funkcije (v točki B) enaka 440, lahko enostavno izračunamo, da se pri spremembi desne strani omejitve $6x+2y=28$ za eno enoto, vrednost namenske funkcije spremeni za 2 enoti (iz 440 na 442). če se omejitev poveča, se tudi vrednost namenske funkcije poveča. To je seveda logično, saj pri povečanju števila romanov, pričakujemo višje stroške. Sedaj se postavlja še drugo vprašanje, namreč za koliko dodanih ali odvzetih enot na desni strani neenačaja, bo izračunana sprememba ostala veljavna. Iz slike 5 je razvidno, da lahko prestavljamo premico, ki predstavlja omejitev $6x+2y=28$ proti desni le tako daleč, da poteka skozi točko C, proti levi pa tako daleč, da poteka skozi točko D.

Slika 42: Enačbo prestavljene premice, ki poteka skozi točko D dobimo tako, da najprej prvotno enačbo $6x+2y=28$ preoblikujemo v eksplicitno obliko in dobimo $y=-3x+14$, da lahko preberemo smerni koeficient. Ker sta premici vzporedni imata enak smerni koeficient (to je -3), začetno vrednost $n$ pa dobimo tako, da upoštevamo, da poteka premaknjena premica skozi točko D(0, 4). Velja [ y=-3x+n ] [ 4=-3cdot 0+n ] [ n=4 ] Enačba prestavljene premice, ki poteka skozi točko D, se v eksplicitni obliki glasi $y=-3x+4$, v implicitni pa $3x+y-4=0$. Enačbo bomo preuredili, tako da bo zapis podoben začetnemu ($6x+2y=28$ ). Torej jo bomo pomnožili z 2 in preuredili člene, da dobimo $6x+2y=8$. če primerjamo desne strani enačbe začetne omejitve in prestavljene premice, vidimo, da se je ta desna stran iz 28 zmanjšala na 8. To je tudi minimalna vrednost na katero lahko zmanjšamo desno stran te neenačbe $6x+2y=28$, ki predstavlja omejitev romanov, da bo v prejšnjem poglavju izračunanja sprememba vrednosti namenske funkcije pri spremembi desne strani neenačbe, še veljavna. Tudi premica ki poteka skozi točko C ima smerni koeficient -3, potrebujemo le še njeno začetno vrednost $n$. Slednjo dobimo tako, da upoštevamo, da poteka premaknjena premica skozi točko C(8, 0). Velja

[ y=-3x+n ] [ 0=-3cdot 8+n ] [ n=24 ] Enačba prestavljene premice, ki poteka skozi točko C, se v eksplicitni obliki glasi $y=3x+24$, v implicitni pa $3x+y-24=0$. Enačbo bomo preuredili tako, da bo zapis podoben začetnemu ($6x+2y=28$ ). Torej jo bomo pomnožili z 2 in preuredili člene, da dobimo $6x+2y=48$. če primerjamo desne strani enačbe začetne omejitve in prestavljene premice, vidimo, da se je ta desna stran iz 28 povečala na 48. To je tudi minimalna vrednost na katero lahko povečamo desno stran te neenačbe $6x+2y=28$, ki predstavlja omejitev romanov, da bo v prejšnjem poglavju izračunanja sprememba vrednosti namenske funkcije pri spremembi desne strani neenačbe, še veljavna.

3.3.3 DUAL prehrambenega problema
Tudi tukaj nas zanima ali smo izkoristili vse razpoložljive vire zato torej razmislimo še o dualnem programu. V primarnem programu smo se vprašali po takem izboru leposlovnih in romantičnih kompletov, da je skupna nabavna cena najmanjša. leposlovni romantični omejitve romani 6 3 60 DVD-ji 2 6 100 strošek 28 24 u v Lahko pa želimo, da bo število nabavljenih knjig in DVD-jev največje, kar je zahteva v dualnem linearnem programu. Vrednost dualne spremenljivke predstavlja torej število nabavljenih knjig in DVD-jev. Ker imamo v primarnem linearnem programu dve omejitvi (zahtevi), imamo v dualnem torej dve spremenljivki u in v. u je torej število knjig in v je število nabavljenih DVD-jev. Število kupljenih knjig, naj ne bo večja od omejitve 28, torej 6u + 2v ≤ 28. Analogno sklepamo še za DVD-je in dobimo naslednji dualni program:

3.3.4 Reševanje prehrambenega problema z metodo simpleksov
Poglejmo si še enkrat Andrejevo kupovanje leposlovnih in romantičnih paketov (problem DVD-ji in ROMANI). Za linearni program:

iščemo minimum namenske funkcije. Ta linearni program rešimo z metodo simpleksov.

Rešitev: V tem primeru določamo minimum namenske funkcije, neenačbe v omejitvah pa so oblike ≥. Zato se postopek v nekaterih korakih razlikuje od postopka v prejšnjem zgledu. a) Neenačbi s pomočjo dopolnilnih spremenljivk pretvorimo v enačbi:

b) Uvedemo umetne spremenljivke, ki jim določimo neko zelo veliko vrednost M. (Tej metodi rečemo ťmetoda velikega M-jaŤ.)

Za M vzemimo npr. dvakratnik največjega koeficienta v namenski funkciji: M = 2 ⋅ 100 = 200.

c) S pomočjo linearnih transformacij preoblikujemo prvo vrstico tako, da bosta koeficienta pred umetnima spremenljivkama enaka 0. Drugo vrstico, pomnoženo z M (v našem primeru je to 200), prištejemo k prvi vrstici, ostale vrstice pa prepišemo.

Tretjo vrstico, pomnožimo z M (v našem primeru je to 200), prištejemo k prvi vrstici, ostale vrstice pa prepišemo.

d) Koeficiente sistema uredimo v začetno simpleksno tabelo

e) Poiščemo pivotni element:

izberemo stolpec, ki ima v prvi vrstici največjo vrednost (v našem primeru je to drugi stolpec);

izberemo vrstico: v vsaki (razen v prvi) vrstici izračunamo količnik med vrednostjo v stolpcu b-jev in vrednostjo v izbranem stolpcu; izberemo tisto vrstico, v kateri je ta količnik najmanjši (v našem primeru je to druga vrstica);

križišče izbrane vrstice in izbranega stolpca imenujemo pivot;

na mestu pivota ustvarimo enko tako, da celotno vrstico pomnožimo z primeru je to );

(v našem

na vseh ostalih mestih v izbranem stolpcu s pomočjo linearnih transformacij ustvarimo ničle (v našem primeru drugo vrstico pomnožimo z (-1740) in jo prištejemo k prvi vrstici, drugo vrstico pomnožimo z (-3) in jo prištejemo k tretji vrstici.

f) Spet poiščemo pivotni element:

izberemo stolpec, ki ima v prvi vrstici največjo vrednost (v našem primeru je to tretji stolpec);

izberemo vrstico: v vsaki (razen v prvi) vrstici izračunamo ustrezen količnik in izberemo tisto vrstico, v kateri je ta količnik najmanjši (v našem primeru je to tretja vrstica);

križišče izbrane vrstice in izbranega stolpca imenujemo pivot;

na mestu pivota ustvarimo enko tako, da celotno vrstico pomnožimo z primeru tretjo vrstico pomnožimo z );

(v našem

na vseh ostalih mestih v izbranem stolpcu s pomočjo linearnih transformacij ustvarimo ničle (v našem primeru tretjo vrstico pomnožimo z (-920) in jo prištejemo k prvi vrstici, tretjo vrstico pomnožimo z (-1∕15) in jo prištejemo k drugi vrstici.

Opisan postopek ponavljamo, dokler so prvi vrstici (razen na prvem in zadnjem mestu) pozitivne vrednosti. V našem primeru v prvi vrstici (razen na prvem in zadnjem mestu) ni več pozitivnih vrednosti, torej je postopek končan. Iz razširjene matrike preberemo rešitev:
• •

V zadnjem stolpcu prve vrstice preberemo minimalno vrednost namenske funkcije: 440. V stolpcu, ki predstavlja spremenljivko x (drugi stolpec), poiščemo enko. V našem primeru je enka v drugi vrstici. Zato vrednost spremenljivke x preberemo v zadnjem stolpcu druge vrstice: x = 4.

V stolpcu, ki predstavlja spremenljivko y (tretji stolpec), poiščemo enko. V našem primeru je enka v tretji vrstici. Zato vrednost spremenljivke y preberemo v zadnjem stolpcu tretje vrstice: y = 2.

To pomeni, da bo imel Andrej minimalne stroške v primeru, če bo kupil x = 4 leposlovne pakete in y = 2 romantična paketa. Stroški bodo v tem primeru znašali 440 €.

Primer: Izvedimo simpleksno metodo na primeru podjetja Tartuf d.o.o. še enkrat.Ta primer smo zgoraj že rešili, tukaj pa ga rešimo na malo drugačen način.

3.3.5 Reševanje prehrambenega problema s pomočjo računalniškega programa LINGO
Spet za zgled vzemimo problem DVD-ji in ROMANI. Zanj smo formulirali naslednji linearni program:

Rešimo ta linearni program s pomočjo programa LINGO.

Rešitev: Podatke zapišimo v ustrezni obliki za program LINGO.

Slika 32: 43 Program LINGO nam izpiše rešitev linearnega programa v takšni obliki:

Slika 33: 44

• •

V vrstici Objective value preberemo optimalno vrednost namenske funkcije. V našem primeru je to 440. To pomeni, da minimalni Andrejevi stroški pri nakupu znašajo 440 €. V stolpcu Value (vrednost) preberemo vrednosti spremenljivk x = 4 in y = 2. To pomeni, da mora Andrej kupiti 4 leposlovne pakete in 2 romantična paketa. V stolpcu Reduced Cost (reducirani strošek) preberemo, za koliko bi bilo potrebno spremeniti vrednost koeficienta ustrezne spremenljivke v namenski funkciji (v našem primeru to pomeni, za koliko bi se morala zmanjšati cena posameznega izdelka: leposlovnega ali romantičnega paketa), da bi se tudi ta pojavila v optimalni rešitvi. V našem primeru se obe spremenljivki pojavita v optimalni rešitvi, zato je reducirani strošek pri obeh spremenljivkah enak 0. V stolpcu Slack or Surplus (pomanjkanje ali presežek) preberemo, za koliko bi bilo potrebno levo stran v omejitvenih neenačbah povečati ali zmanjšati, da bi namesto neenačb dobili enačbe. Ko imamo neenačbe oblike ≤ je to Slack (pomanjkanje). V prvi vrstici se še enkrat pojavi optimalna vrednost namenske funkcije. V drugi in tretji vrstici sta v našem primeru vrednosti pri Slack enaki 0. To pomeni, da bomo kupili ravno toliko knjig in DVD-jev, kot jih potrebujemo.

V stolpcu Dual price (dualna cena) preberemo, za koliko bi se spremenila optimalna vrednost namenske funkcije, če bi se omejitev v ustrezni neenačbi povečala za eno enoto. Pri neenačbah oblike ≤ je dualna cena vedno negativna ali 0. V prvi vrstici dualne cene ni smiselno brati, saj je vedno -1 (to pove: če bi vrednost namenske funkcije zmanjšali za 1, bi se optimalna vrednost namenske funkcije zmanjšala za 1). V drugi vrstici je dualna cena enaka -2. To pomeni, da bi se v primeru, če bi želeli kupiti eno knjigo manj (torej 27 namesto 28), optimalna vrednost namenske funkcije zmanjšala za 2. Plačali bi torej 438 € (namesto 440 €). Preverimo, ali je to res.

V program LINGO vstavimo naslednje podatke:

Slika 34: 45 Dobimo takšno rešitev:

Slika 35: 46 Optimalna vrednost namenske funkcije se je res zmanjšala za 2 (iz 440 € na 438 €). V tretji vrstici je dualna cena enaka (-16). To pomeni, da bi se v primeru, če bi želeli kupiti en DVD manj (torej 23 namesto 24), optimalna vrednost namenske funkcije zmanjšala za 16. Plačali bi torej 424 € (namesto 440 €). Tudi to preverimo, ali je res. V program LINGO vstavimo naslednje podatke:

Slika 36: 47 Dobimo takšno rešitev:

Slika 37: 48 Optimalna vrednost namenske funkcije se je res zmanjšala za 16 (iz 440 € na 424 €).

3.4. Transportni problem
Eden izmed problemov linearnega programiranja je transportni problem. To je problem, v katerem določamo, kako moramo usmeriti transport od izvorov do ponorov, da bodo transportni stroški najmanjši. Vzemimo na primer, da imamo n izvorov, ki jih označimo z I in n ponorov, ki jih označimo s P. Izvori so na primer skladišča ali dobavitelji, ponori pa so porabniki, ki jim moramo dostaviti zahtevano blago. Podatke naloge vstavimo v spodnjo tabelo:

Slika 38: tabela1 Podatki so: ai- kapaciteta izvorov (i = 1,2…m), bj- kapaciteta ponorov (j = 1,2…n) in cij– cena enote transporta med izvorom Ii in ponorom Pj (i = 1,2…m;j = 1,2…n). Simboli xij pa so spremenljivke, ki nam povedo količino prevoženega izdelka iz izvora Ii v ponor Pj(i = 1,2…m;j = 1,2…n). Ker želimo, da so transportni stroški minimalni, iščemo minimum namenske funkcije. S pomočjo zgornje tabele transportnega problema zapišemo naslednji linearni program:

namenska funkcija

omejitve,

vsota spremenljivk po vrsticah tabele

vsota spremenljivk po stolpcih tabele

pogoj nenegativnosti

za vse i = 1,2…m in j = 1,2…n.

3.4.1 Osnovni problem razvoza
DVA DOBAVITELJA Naslednji problem zapiši v obliki linearnega programa. Dva dobavitelja (D1, D2) oskrbujeta tri trgovine (T1, T2, T3). Dobavitelj D1 mora za te tri trgovine dnevno zagotoviti 50 ton, dobavitelj D2 pa 40 ton sadja. Trgovina T1 naroči dnevno 30 ton, trgovina T2 40 ton, trgovina T3 pa 20 ton sadja. Transportni stroški za tono sadja od posameznega dobavitelja do posamezne trgovine so razvidni iz spodnje tabele.
DOBAVITELJ

∕TRGOVINA

T1

D1 150

D2 220

T2 T3

160 200

200 230

S transportom želimo imeti čim manjše stroške.

Ta problem bomo rešili po naslednjem postopku: 1 Določimo namensko funkcijo, ki predstavlja skupne stroške prevoza. 2 Določimo omejitve (za vsak izvor in vsak ponor posebej). 3 Rešimo transportni problem (grafično, s simpleksno metodo ali s pomočjo LINGA).

Rešitev: Najprej narišimo tabelo transportnega problema. Ponori / izvori T1 T2 T3 D1 150 x11 160 x12 200 x13 D2 220 x21 200 x22 230 x23 Kapaciteta ponorov 30 40 20

kapaciteta izvorov 50 40 90

1. Določimo namensko funkcijo. Namenska funkcija predstavlja skupne stroške prevoza.
• • • • • • •

Cena prevoza ene tone sadja od D1 do T1 znaša 150 €, torej cena prevoza x11 ton sadja od D1 do T1 znaša 150 x11 €. Cena prevoza ene tone sadja od D1 do T2 znaša 160 €, torej cena prevoza x12 ton sadja od D1 do T2 znaša 160 x12 €. Cena prevoza ene tone sadja od D1 do T3 znaša 200 €, torej cena prevoza x13 ton sadja od D1 do T3 znaša 200 x13 €. Cena prevoza ene tone sadja od D2 do T1 znaša 220 €, torej cena prevoza x21 ton sadja od D2 do T1 znaša 220 x21 €. Cena prevoza ene tone sadja od D2 do T2 znaša 200 €, torej cena prevoza x22 ton sadja od D2 do T2 znaša 200 x22 €. Cena prevoza ene tone sadja od D2 do T3 znaša 230 €, torej cena prevoza x23 ton sadja od D2 do T3 znaša 230 x23 €. Skupni stroški prevoza so 150x11+160x12+200x13+220x21+200x22+230x23, zato je namenska funkcija naslednja:

Skupni stroški morajo biti minimalni, torej iščemo minimum namenske funkcije:

2. Določimo omejitve.

Dobavitelj D1:

Dobavitelj D1 pripelje trgovini T1 x11 ton sadja, trgovini T2 x12 ton sadja in trgovini T3 x13 ton sadja. Skupno pripelje 50 ton sadja, zato je

Dobavitelj D2:

Dobavitelj D2 pripelje trgovini T1 x21 ton sadja, trgovini T2 x22 ton sadja in trgovini T3 x23 ton sadja. Skupno pripelje 40 ton sadja, zato je

Trgovina T1:

V trgovino T1 pripelje dobavitelj D1 x11 ton sadja, dobavitelj D2 pa x21 ton sadja. Skupno pripeljeta v trgovino T1 30 ton sadja, zato je

Trgovina T2:

V trgovino T2 pripelje dobavitelj D1 x12 ton sadja, dobavitelj D2 pa x22 ton sadja. Skupno pripeljeta v trgovino T2 40 ton sadja, zato je

Trgovina T3:

V trgovino T3 pripelje dobavitelj D1 x13 ton sadja, dobavitelj D2 pa x23 ton sadja. Skupno pripeljeta v trgovino T3 20 ton sadja, zato je

Vse spremenljivke so nenegativne:

Linearni program danega problema je torej takšen:

Ker je zadnja enačba v omejitvah linearno odvisna od ostalih enačb, jo lahko izpustimo (Če v omejitvah od vsote prve in druge enačbe, odštejemo tretjo in četrto enačbo, dobimo peto enačbo.). Linearni program torej lahko zapišemo v takšni obliki:

3.4.2 Grafično reševanje transportnega problema
Grafično lahko rešujemo transportne probleme razsežnosti do 2 × 3 oz. 3 × 2. Za zgled vzemimo problem DVA DOBAVITELJA. v njem nastopata dobavitelja D1 in D2 in trgovine T1, T2 in T3. Ta zgled je razsežnosti 2 × 3 zato ga lahko rešimo grafično. Spremenljivko x11 označimo kar z x. Spremenljivkox12 pa označimo z y. Ker so kapacitete izvorov in ponorov v nalogi podane, lahko vse ostale spremenljivke izrazimo kar z x in y. PONORI IZVORI D1 D2 kapaciteta ponorov T1 150 x 220 30-x 30 T2 160 y 200 40-y 40 T3 kapaciteta izvorov 200 50-x-y 50 230 20-(50-x40 y) 20 90

Poglejmo kako smo dobili vrednosti spremenljivke v zgornji tabeli. Določili smo: x11 = x in x12 = y. Vsota spremenljivk za D1 je:

Vsota spremenljivk za T1 je:

Vsota spremenljivk za T2 je:

Vsota spremenljivk za T3 je:

S pomočjo na novo dobljenih spremenljivk zapišimo linearni program. Najprej preoblikujmo namensko funkcijo:

Iščemo torej:

Vse na novo dobljene spremenljivke morajo biti nenegativne:

V koordinatni sistem narišimo množico vseh rešitev dobljenega sistema linearnih neenačb.

Slika 39: 50 Namenska funkcija f(x,y) = 17700 - 40x - 10y doseže maksimum v eni od ekstremnih točk (oglišč) konveksnega lika.

Določimo koordinate vseh oglišč konveksnega lika:

C je presečišče premic -x + 30 = 0 in -x - y + 50 = 0. x = 30 vstavimo v drugo enačbo: -x - y + 50 = 0 ⇒-30 - y + 50 = 0 ⇒ 20 - y = 0 ⇒ y = 20. Torej: C(30,20).

D je presečišče premic -y + 40 = 0 in -x - y + 50 = 0. y = 40 vstavimo v drugo enačbo: -x - y + 50 = 0 ⇒-x - 40 + 50 = 0 ⇒ 10 - x = 0 ⇒ x = 10. Torej: D(10,40).

Izračunajmo vrednost namenske funkcije v vsakem oglišču konveksnega lika:

Določimo minimum namenske funkcije:

Namenska funkcija doseže minimalno vrednost 16300 v točki D(30,20). To pomeni, da moramo usmeriti transport sadja na naslednji način: TRGOVINA DOBAVITELJ D1 D2 T1 30 30 - 30 T2 20 40 - 20 T3 50 - 30 - 20 20 - (50 - 30 20)

Izračunajmo vrednosti v tabeli: T1 30 0 T2 20 20 T3 0 20

TRGOVINA DOBAVITELJ D1 D2

Stroški transporta bodo v tem primeru znašali 16300 €.

3.4.3 Reševanje transportnega problema z metodo simpleksov
V primeru, ko je velikost transportnega problema večja od 2 × 3 ali 3 × 2, grafična metoda odpove. Ena izmed metod, ki jo lahko uporabimo v tem primeru, je metoda simpleksov. Tudi probleme, ki imajo dimenzije 2 × 3 ali 3 × 2 je mogoče rešiti z njo. Predstavili jo bomo na že znanem problemu DVA DOBAVITELJA. Zanj smo formulirali naslednji linearni program:

Rešimo ta linearni program z metodo simpleksov. Rešitev: Določamo minimum namenske funkcije, v omejitvah pa imamo enačbe. Zato se postopek v nekaterih korakih razlikuje od postopka v zgledih reševanja z metodo simpleksov v prejšnjem poglavju. a) Uvedemo umetni spremenljivki, ki jima določimo neko zelo veliko vrednost M. (Spet bomo uporabili metodo velikega M-ja.)

Za M vzemimo npr. dvakratnik največjega koeficienta v namenski funkciji: M = 2 ⋅ 230 = 460.

b) S pomočjo linearnih transformacij preoblikujemo prvo vrstico tako, da bosta koeficienta pred umetnima spremenljivkama enaka 0. Četrto vrstico, pomnoženo z M (v našem primeru je to 460), prištejemo k prvi vrstici, ostale vrstice pa prepišemo.

Peto vrstico, pomnoženo z M (v našem primeru je to 460), prištejemo k prvi vrstici, ostale vrstice pa prepišemo.

c) Prvo vrstico preuredimo tako, da bo vsebovala same pozitivne koeficiente. Drugo vrstico pomnožimo npr. z 210 in jo prištejemo k prvi vrstici.

Tretjo vrstico pomnožimo npr. z 240 in jo prištejemo k prvi vrstici.

Tako smo v prvi vrstici res dobili same pozitivne koeficiente.

d) Izvedemo simpleksno metodo

Koeficiente sistema uredimo v začetno simpleksno tabelo.

Poiščemo pivotni element: o izberemo stolpec, ki ima v prvi vrstici največjo vrednost (v našem primeru je to drugi stolpec);

izberemo vrstico: v vsaki (razen v prvi) vrstici izračunamo ustrezen količnik in izberemo tisto vrstico, v kateri je ta količnik najmanjši (v našem primeru je to četrta vrstica);

križišče izbrane vrstice in izbranega stolpca imenujemo pivot;

v našem primeru je pivot enak 1, zato enke ni potrebno ustvariti – ta korak izpustimo; o na vseh ostalih mestih v izbranem stolpcu s pomočjo linearnih transformacij ustvarimo ničle (v našem primeru četrto vrstico pomnožimo z (-520) in jo prištejemo k prvi vrstici, četrto vrstico pomnožimo z (-1) in jo prištejemo k drugi vrstici; v tretji in peti vrstici pa sta v izbranem stolpcu že ničli, zato ju ni potrebno ustvariti)

f) Spet poiščemo pivotni element:

izberemo stolpec, ki ima v prvi vrstici največjo vrednost (v našem primeru je to tretji stolpec);

izberemo vrstico: v vsaki (razen v prvi) vrstici izračunamo ustrezen količnik in izberemo tisto vrstico, v kateri je ta količnik najmanjši (v našem primeru je to druga vrstica):

križišče izbrane vrstice in izbranega stolpca imenujemo pivot;

• •

v našem primeru je pivot enak 1, zato enke ni potrebno ustvariti – ta korak izpustimo; na vseh ostalih mestih v izbranem stolpcu s pomočjo linearnih transformacij ustvarimo ničle (v našem primeru drugo vrstico pomnožimo s (-510) in jo prištejemo k prvi vrstici, drugo vrstico pomnožimo z (-1) in jo prištejemo k zadnji vrstici; v tretji in četrti vrstici pa sta v izbranem stolpcu že ničli, zato ju ni potrebno ustvariti);

g) Spet poiščemo pivotni element:

izberemo stolpec, ki ima v prvi vrstici največjo vrednost (v našem primeru je to šesti stolpec);

izberemo vrstico: v vsaki (razen v prvi) vrstici izračunamo ustrezen količnik in izberemo tisto vrstico, v kateri je ta količnik najmanjši (v našem primeru je to zadnja vrstica);

križišče izbrane vrstice in izbranega stolpca imenujemo pivot;

• •

v našem primeru je pivot enak 1, zato enke ni potrebno ustvariti – ta korak izpustimo; na vseh ostalih mestih v izbranem stolpcu s pomočjo linearnih transformacij ustvarimo ničle (v našem primeru zadnjo vrstico pomnožimo z (-500) in jo prištejemo k prvi vrstici, zadnjo vrstico pomnožimo z (-1) in jo prištejemo k tretji vrstici; v drugi in četrti vrstici pa sta v izbranem stolpcu že ničli, zato ju ni potrebno ustvariti).

h) Spet poiščemo pivotni element:

izberemo stolpec, ki ima v prvi vrstici največjo vrednost (v našem primeru je to sedmi stolpec).

izberemo vrstico: v vsaki (razen v prvi) vrstici izračunamo ustrezen količnik in izberemo tisto vrstico, v kateri je ta količnik najmanjši (v našem primeru je to tretja vrstica);

križišče izbrane vrstice in izbranega stolpca imenujemo pivot;

• •

v našem primeru je pivot enak 1, zato enke ni potrebno ustvariti – ta korak izpustimo; na vseh ostalih mestih v izbranem stolpcu s pomočjo linearnih transformacij ustvarimo ničle (v našem primeru tretjo vrstico pomnožimo z (-10) in jo prištejemo k prvi vrstici; v drugi, četrti in peti vrstici pa so v izbranem stolpcu že ničle, zato jih ni potrebno ustvariti).

Opisan postopek ponavljamo, dokler so prvi vrstici (razen na prvem in zadnjem mestu) pozitivne vrednosti. V našem primeru v prvi vrstici (razen na prvem in zadnjem mestu) ni več pozitivnih vrednosti, torej je postopek končan. Iz razširjene matrike preberemo rešitev: a) V zadnjem stolpcu prve vrstice preberemo minimalno vrednost namenske funkcije: 16300. b) V stolpcu, ki predstavlja spremenljivko x11 (drugi stolpec), poiščemo enko. V našem primeru je enka v četrti vrstici. Zato vrednost spremenljivke x11 preberemo v zadnjem stolpcu četrte vrstice: x11=30.

c) V stolpcu, ki predstavlja spremenljivko x12 (tretji stolpec), poiščemo enko. V našem primeru je enka v drugi vrstici. Zato vrednost spremenljivke x12 preberemo v zadnjem stolpcu druge vrstice: x12=20.

d) V stolpcu, ki predstavlja spremenljivko x22 (šesti stolpec), poiščemo enko. V našem primeru je enka v zadnji vrstici. Zato vrednost spremenljivke x22 preberemo v zadnjem stolpcu zadnje vrstice: x22=20

e) V stolpcu, ki predstavlja spremenljivko x23 (sedmi stolpec), poiščemo enko. V našem primeru je enka v tretji vrstici. Zato vrednost spremenljivke x23 preberemo v zadnjem stolpcu tretje vrstice: x23=20.

Dobljene podatke vstavimo v tabelo transportnega problema. Ponori Izvori D1 D2 kapaciteta ponorov T1 150 30 220 x21 30 T2 160 20 200 20 40 T3 200 x13 230 20 20 kapaciteta izvorov 50 40 90

Vrednosti spremenljivk x13 in x21 pa lahko dobimo s pomočjo enačb linearnega programa:

To pomeni, da bodo stroški minimalni, če bomo transport sadja usmerili na naslednji način: Trgovina Dobavitelj D1 D2 T1 30 0 T2 20 20 T3 0 20

Stroški transporta bodo v tem primeru znašali f=16300 €.

3.4.4 Reševanje transportnega problema s pomočjo računalniškega programa LINGO
Transportne probleme, v katerih nastopata le dve spremenljivki, najpogosteje rešujemo grafično. Če je v transportnem problemu več spremenljivk, se lahko reševanja lotimo z metodo simpleksov. V tem poglavju pa se bomo naučili, kako rešimo transportni problem s pomočjo programa LINGO. Za zgled vzemimo nam že dobro znani problem DVA DOBAVITELJA. Rešiti moramo naslednji linearni program:

Rešitev: Rešimo ta linearni program s pomočjo programa LINGO. Podatke zapišimo v ustrezni obliki za program LINGO.

Slika 40: 51 Program LINGO nam izpiše rešitev linearnega programa v takšni obliki:

Slika 41: 52 V vrstici Objective value preberemo optimalno vrednost namenske funkcije. V našem primeru je to 16300. To pomeni, da minimalni transportni stroški sadja znašajo 16300 €. V stolpcu Value (vrednost) preberemo vrednosti spremenljivk:x11 = 30, x12 = 20, x13 = 0, x21 = 0, x22 = 20 in x23 = 0. To pomeni, da moramo transport sadja usmeriti na naslednji način: Trgovina Dobavitelj D1 D2 T1 30 0 T2 20 20 T3 0 20

3.4.5 Posebni primeri transportnega problema
Degeneracija transportnega problema linearnega programiranja Proizvajalca A in B, ki proizvedeta 6 ton oziroma 8 enot istega blaga, oskrbujeta s tem blagom potrošnika P in Q, ki sta pri A oziroma B naročila 8 in 6 enot. Kako naj usmerimo transport od proizvajalcev A in B do potrošnikov P in Q, da bosta ta dva dobila naročeno blago in da bodo transportni stroški stroški najmanjši, če poznamo transportne stroške za prevoz ene enote blaga na posameznih relacijah in so podani v preglednici: Potrošnika P Proizvajalec A Proizvajalec B Naročila Reševanje problema V tem primeru je dovolj, da vpeljemo le eno neznanko x. Iskane količine vpišemo na v prejšnjem primeru predloženi način: P 6 2 8 Q 3 5 6 Proizvodnja 6 8 14

P Proizvajalec A x Proizvajalec B 8-x Naročila Omejitve so: 8 2 x 6 6-x

Q 3 5 6

Proizvodnja 6 8 14

Namenska funkcija, ki jo želimo minimirati je torej:

Vse omejitve se dajo zreducirati na eno samo: 0 ≤ x ≤ 6, ki predstavlja konveksno množico ( v tem primeru daljico s krajiščema x = 0 in x = 6 z ekstremnima točkama 0 in 6. Pri teoriji linearnega programiranja ima ciljna funkcija 34 + 6x minimum v eni ekstremni točki; v našem primeru torej v ekstremni točki x = 0. Optimalna rešitev je torej x = 0, stroški pri tej rešitvi pa znašajo 34DE. Glede na to rešitev dosežemo najnižje transportne stroške, kadar proizvajalec A sam oskrbuje potrošnika Q, proizvajalec B pa potrošnika P.

Slika 42: Rešitev degeneriranega transportnega problema. Proizvajalec A se je povezal s potrošnikom Q, B pa s P. Takšnemu razpadu sistema rečemo tudi degeneracija transportnega problema

Neskončno rešitev transportnega problema

Obravnavajmo transportni problem: Potrošnika Proizvajalec A Proizvajalec B Naročila P 1 3 6 Q 3 4 19 Proizvodnja 9 16 25

Reševanje problema: Vpeljemo neznanko x in iskane transportne količine zapišemo v preglednici: P Proizvajalec A x Proizvajalec B 6-x Naročila 5 3 10+x 19 25 1 9-x 4 16 Q 2 Proizvodnja 9

Omejitve x ≥ 0, 9 - x ≥ 0, 6 - x ≥ 0 in 10 + x ≥ 0 združimo v eno samo: 0 ≤ x ≤ 6. Ciljna funkcija pa je: x + 2(9 -x) + 3(6 -x) + 4(10 + x) = 76. Le ta je neodvisna od x in ima vrednost 76 pri vsakem x ∈ , kar pomeni, da ima problem neskončno optimalnih rešitev (celotna spojnica ekstremnih točk 0 in 6).

Transportni problem s ponudbo, večjo od povpraševanja Vsi transportni problemi, ki smo jih do sedaj rešili, so imeli lastnost, da je bila ponudba enaka povpraševanju ali proizvodnja enaka potrošnji (naročilom). Z uporabo metode linearnega programiranja lahko rešimo tudi transportni problem, če je ponudba večja od povpraševanja. Vzemimo primer, ki imamo proizvajalca A in B in potrošnika P in Q. Ponudba, naročila in transportni stroški so na posameznih relacijah podani v preglednici: Potrošnika Proizvajalec A Proizvajalec B Naročila P 4 3 5 Q 5 6 7 Proizvodnja 8 10 12 8

Reševanje problema: Problem preoblikujemo najprej v transportni problem, pri katerem je ponudba enaka povpraševanju. To naredimo tako, da uvedemo fiktivnega potrošnika S, ki naroči preostanek blaga oziroma odvečno količino proizvedenega blaga uskladiščimo. Transportni stroški od proizvajalcev A in B do potrošnika (skladišča) S pa morajo biti manjši od stroškov na relacijah A do P in Q ter B do P in Q, ker je naš cilj, da imamo v optimalni rešitvi (to je pri najmanjših transportnih stroških) na relacija A oziroma B do S odvečno količino proizvedenega blaga (neničelna rešitev). Zaradi poenostavitve računanja

privzamemo, da so transportni stroški od A in B do S kar 0. Problem, predstavljen v razširjeni obliki, je zapisan v preglednici: Potrošniki Proizvajalec A Proizvajalec B Naročila P 4 3 5 Q 5 6 7 S 0 0 6 Proizvodnja 8 10 18

Reševanje problema: Vpeljemo neznanki x in y P Proizvajale cA x Proizvajale cB 5-x Naročila 5 3 7-x 7 Q S Proizvodnj a

4 y

5 8-x-y 6 x+y-2 6

0

8

0

10 18

Problemu prirejen linearni program pa je:

Zapišimo sedaj namensko funkcijo, ki jo želimo minimirati:

Problem je grafično rešen na sledeči .sliki

Slika 43: Množica dopustnih rešitev transportnega problema.

Namenska funkcija, ki jo želimo minimirati je obliko f(x,y) = x - y + 57 dobila zaradi tega ker smo v problem dodali fiktivnega potrošnika. Zato enačbo f(x,y) = x - y + 57 preoblikujmo v f(x,y) = 57 - (y - x) in pri izračuni upoštevajmo samo f(x,y) = y - x), vendar moramo sedaj poiskati maksimum te funkcije. V koordinatni sistem vrišimo na primer premico y - x = 3 (črtkano). To premico potem vzporedno premikamo navzgor tako dolgo, da se le ta še dotika pobarvanega polja dopustnih rešitev. Optimalna rešitev se torej pojavi v točki A(0,7), torej velja x = 0, y = 7, stroški pa so 50DE. Optimalna rešitev je predstavljena v preglednici, iz katere je razvidno, da mora pri najcenejšem transportu A uskladiščiti 1 enoto, B pa 5 enot proizvedenega blaga. Potrošniki Proizvajalec A Proizvajalec B Naročila P 0 5 5 Q 7 0 7 S 1 5 6 Proizvodnja 8 10 18

Transportni problem s ponudbo, manjšo od povpraševanja

V preglednici je prikazan transportni problem proizvajalcev A in B ter potrošnikov P in Q. Ker je ponudba manjša od povpraševanja, moramo v problem vpeljati fiktivnega proizvajalca, recimo proizvajalca C, ki proizvede manjkajočo količino materiala. Potrošnika Proizvajalec A Proizvajalec B Naročila P 2 4 15 Q 4 5 20 Proizvodnja 8 18 35

Transportni stroški od proizvajalca C do potrošnikov P in Q morajo biti veliki v primerjavi s transportnimi stroški na drugih reklacijah. S tem zagotovimo, da bo fiktivni proizvajalec C prišel v optimalno rešitev le z minimalno potrebno količino. V našem primeru vzemimo, da so ti stroški npr. 50DE. Potrošnika Proizvajalec A Proizvajalec B Proizvajalec C Naročila P 2 4 50 15 Q 4 5 50 20 Proizvodnja 8 18 9 55

Reševanje problema: Neznanki x in y uvedemo v preglednico. P Proizvajalec A x Proizvajalec B y Proizvajalec C 15-x-y Naročila 15 50 x+y-6 20 55 4 18-y 50 9 2 18-x 5 18 Q 4 Proizvodnja 8

Temu prirejeni linearni program pa je:

max

Rešitev poiščemo grafično in je zapisana v preglednici, iz katere je razvidno, da bo potrošnik P prejel vseh 15 naročenih enot blaga, potrošnik Q pa od naročenih 20 enot le 11 enot, ker so transportni stroški od A oziroma B do njega večji kot do potrošnika P. Pri tej optimalni rešitvi so transportni stroški 99DE (8 ⋅ 2 + 7 ⋅ 4 + 11 ⋅ 5) Potrošnika Proizvajalec A Proizvajalec B Proizvajalec C Naročila P 8 7 0 15 Q 0 11 9 20 Proizvodnja 8 18 9 55

Sign up to vote on this title
UsefulNot useful