111
UNIVERZA V LJUBLJANI EKONOMSKA FAKULTETA MAGISTRSKO DELO IZBOLJŠANJE STANDARDNE SIMPLEKS METODE Z ALGORITMOM ZA ZOŽENJE TABELE SIMPLEKSOV IN METODO POTISNI IN POVLECI LJUBLJANA, FEBRUAR 2003 PETER BALOH

Izboljšanje standardne simpleks metode z algoritmom za ... metoda namreč uvaja umetne in dopolnilne spremenljivke, da začetni linearni program prevede v standardno obliko, primerno

Embed Size (px)

Citation preview

Page 1: Izboljšanje standardne simpleks metode z algoritmom za ... metoda namreč uvaja umetne in dopolnilne spremenljivke, da začetni linearni program prevede v standardno obliko, primerno

UNIVERZA V LJUBLJANI EKONOMSKA FAKULTETA

MAGISTRSKO DELO

IZBOLJŠANJE STANDARDNE SIMPLEKS METODE Z ALGORITMOM ZA ZOŽENJE TABELE SIMPLEKSOV

IN METODO POTISNI IN POVLECI

LJUBLJANA, FEBRUAR 2003 PETER BALOH

Page 2: Izboljšanje standardne simpleks metode z algoritmom za ... metoda namreč uvaja umetne in dopolnilne spremenljivke, da začetni linearni program prevede v standardno obliko, primerno

IZJAVA

Študent Peter Baloh izjavljam, da sem avtor tega magistrskega dela, ki sem ga napisal pod mentorstvom doc. dr. Liljane Ferbar in skladno s 1. odstavkom 21. člena Zakona o avtorskih in sorodnih pravicah dovolim objavo magistrskega dela na fakultetnih spletnih straneh.

V Ljubljani, dne 26.1.2003

Podpis:

Page 3: Izboljšanje standardne simpleks metode z algoritmom za ... metoda namreč uvaja umetne in dopolnilne spremenljivke, da začetni linearni program prevede v standardno obliko, primerno

i

KAZALO

1. UVOD 1

2. LINEARNO PROGRAMIRANJE 4

2.1 ZGODOVINA OPERACIJSKIH RAZISKAV IN LINEARNEGA PROGRAMIRANJA 4 2.2 METODOLOGIJA OPERACIJSKIH RAZISKAV 5

2.2.1 DEFINIRANJE PROBLEMA 6 2.2.2 IZGRADNJA MODELA 7 2.2.3 ZAGOTOVITEV VHODNIH PODATKOV 7 2.2.4 REŠEVANJE MODELA 8 2.2.5 ANALIZA REŠITEV 9 2.2.6 APLIKACIJA MODELA IN NADZIRANJE IMPLEMENTACIJE 9

2.3 FORMULACIJA LINEARNEGA PROGRAMA 9 2.3.1 KOMPONENTE LP 10 2.3.2 PREDPOSTAVKE LP 12

2.4 REŠEVANJE LP 13 2.4.1 TEORETIČNA IZHODIŠČA ZA REŠEVANJE LP 13 2.4.2 GRAFIČNO REŠEVANJE LP 13 2.4.3 LASTNOSTI REŠITEV 15

2.5 UPORABA LP IN OSTALIH METOD OR V PRAKSI 15

3. STANDARDNA SIMPLEKS METODA 19

3.1 OPIS STANDARDNE SIMPLEKS METODE 19 3.2 REŠEVANJE LP S STANDARDNO SIMPLEKS METODO 22

3.2.1 STANDARDNA OBLIKA 23 3.2.2 DOLOČITEV ZAČETNEGA OGLIŠČA 27 3.2.3 ZAMENJAVA BAZE 29 3.2.4 TEST OPTIMALNOSTI 33

3.3 IZBOLJŠAVE IN IZPELJANKE STANDARDNE SIMPLEKS METODE 34

4. ALGORITEM ZA ZOŽENJE TABELE SIMPLEKSOV 37

4.1 OPIS ALGORITMA 37 4.2 ALGORITEM 39

4.2.1 INICIALIZACIJA 39 4.2.2 ITERACIJE – IZBOLJŠEVANJE MOŽNIH REŠITEV DO OPTIMALNE 41

4.3 REŠEVANJE LP Z ALGORITMOM ZA ZOŽENJE TABELE SIMPLEKSOV 47 4.3.1 INICIALIZACIJA 47 4.3.2 IZBOLJŠEVANJE MOŽNIH REŠITEV - ITERACIJA 1 48 4.3.3 ITERACIJA 2 50 4.3.4 ITERACIJA 3 51

Page 4: Izboljšanje standardne simpleks metode z algoritmom za ... metoda namreč uvaja umetne in dopolnilne spremenljivke, da začetni linearni program prevede v standardno obliko, primerno

ii

4.3.5 ITERACIJA 4 53

5. METODA POTISNI IN POVLECI 54

5.1 OPIS METODE 54 5.2 ALGORITEM METODE 56

5.2.1 INICIALIZACIJA 56 5.2.2 IZGRADNJA MNOŽICE BAZNIH SPREMENLJIVK (BVS) 58 5.2.3 IZBOLJŠEVANJE BAZNE REŠITVE DO OPTIMALNE 64 5.2.4 TEST OPTIMALNOSTI IN DOPUSTNOSTI 65 5.2.5 FAZA POVLECI 66

5.3 REŠEVANJE LP Z METODO POTISNI IN POVLECI 68 5.3.1 INICIALIZACIJA 68 5.3.2 IZGRADNJA MNOŽICE BAZNIH SPREMENLJIVK (BVS) – ITERACIJA 1 69 5.3.3 IZGRADNJA MNOŽICE BAZNIH SPREMENLJIVK (BVS) – ITERACIJA 2 71 5.3.4 IZGRADNJA MNOŽICE BAZNIH SPREMENLJIVK (BVS) – ITERACIJA 3 73 5.3.5 IZBOLJŠEVANJE BAZNE REŠITVE – ITERACIJA 4 75 5.3.6 TEST OPTIMALNOSTI IN DOPUSTNOSTI 77

6. PRIMERJAVA OBRAVNAVANIH ALGORITMOV 78

6.1 ANALIZA REŠEVANJA NUMERIČNIH PRIMEROV 78

7. SKLEP 81

LITERATURA 83

VIRI 86

PRILOGA

Page 5: Izboljšanje standardne simpleks metode z algoritmom za ... metoda namreč uvaja umetne in dopolnilne spremenljivke, da začetni linearni program prevede v standardno obliko, primerno

iii

KAZALO TABEL, SLIK IN PRIMEROV

TABELE

Tabela 1: Uporaba dopolnilnih in umetnih spremenljivk pri pretvarjanju neenačb v enačbe LP .......... 25

Tabela 2: Tabela simpleksov................................................................................................................. 29

Tabela 3: Začetna tabela simpleksov za obravnavani LP..................................................................... 30

Tabela 4: Iteracija pri metodi simpleksov .............................................................................................. 31

Tabela 5: Tabela simpleksov po prvi iteraciji ........................................................................................ 32

Tabela 6: Preostanek postopka reševanja obravnavanega LP ............................................................ 34

Tabela 7: Število operacij pri reševanju numeričnih primerov z obravnavanimi strategijami................ 79

Tabela 8: Izboljšava obravnavanih strategij glede na število operacij .................................................. 80

SLIKE

Slika 1: Faze kvantitativnega modeliranja............................................................................................... 6

Slika 2: Grafično reševanje LP.............................................................................................................. 14

Slika 3: Reševanje LP s standardno simpleks metodo ......................................................................... 21

Slika 4: Potek standardne simpleks metode ......................................................................................... 22

Slika 5: Število operacij pri reševanju numeričnih primerov z obravnavanimi strategijami................... 80

Page 6: Izboljšanje standardne simpleks metode z algoritmom za ... metoda namreč uvaja umetne in dopolnilne spremenljivke, da začetni linearni program prevede v standardno obliko, primerno
Page 7: Izboljšanje standardne simpleks metode z algoritmom za ... metoda namreč uvaja umetne in dopolnilne spremenljivke, da začetni linearni program prevede v standardno obliko, primerno

1

1. UVOD

Linearno programiranje je del operacijskih raziskav, ki se ukvarja s 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. Da je stvar uporabna, priča tudi podatek, da je v raziskavi podjetij »Fortune 500« kar 85% vprašanih odgovorilo, da uporabljajo linearno programiranje (Winston, 1994, str. 49).

Danes obstajata dve družini tehnik reševanja linearnih programov. Obema je skupno to, da iterativno iščeta postopno izboljšane rešitve, dokler ne najdeta optimalne. Simpleksne metode, katerih začetnik je bil Dantzig (Dantzig, 1963) pred dobrimi petdesetimi leti, so osredotočene na iskanje t.i. dopustnih rešitev, ki jim ustreza enolično določena ekstremna točka konveksnega poliedra 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. Metode notranjih točk, kot npr. Karmarkarjeva (Karmarkar, 1984; Marsten, 1990), pa ne obiskujejo točk na mejah področja dopustnih rešitev ampak točke znotraj področja dopustnih rešitev in so, glede na nekatere raziskave, pri reševanju določenih linearnih programov dosti hitrejše kot simpleksne.

Standardna simpleks metoda se sicer odlikuje po enostavnosti in hitrosti in je kot taka primerna za računalniško implementacijo, a je pri problemih večjih dimenzij velik porabnik pomnilnika in časa ter računsko kompleksna (Damij in Grad, 1985, 1994-95, 2002). Simpleks metoda namreč uvaja umetne in dopolnilne spremenljivke, da začetni linearni program prevede v standardno obliko, primerno za reševanje s to metodo. V tabeli simpleksov so shranjene vhodne, umetne in dopolnilne spremenljivke linearnega modela, ki so pri vsaki iteraciji reševanja transformirane v nove vrednosti.

Ker gre za kompleksne operacije, ki zahtevajo veliko pomnilniškega prostora in so časovno potratne, v praksi oz. za programske rešitve razvijajo nove tehnike in strategije metode, ki – vsaka zase in na svoj način, običajno v povezavi z določenim tipom linearnih programov – poskušajo reševati omenjeni problem. Npr. Revidirana metoda simpleksov, metoda Velikega M, metoda Generiranja stolpcev za velike LP, Dantzig-Wolfe algoritem dekompozicije,… (Chvatal, 1983; Damij in Grad, 2002, 1994-95, 1985; Gilmore in Gomory, 1961, 1963; Winston, 1994).

V magistrskem delu bom prikazal dve novi strategiji oz. modifikaciji standardne simpleks metode, ki poskušata zmanjšati kompleksnost problema. Razviti sta bili v raziskavah, pri katerih sem sodeloval kot pripravljalec računalniške implementacije. Prvi algoritem (Damij in Grad, 2002, 1994-95, 1985) zoži tabelo simpleksov na obseg vhodne matrike neenačb

Page 8: Izboljšanje standardne simpleks metode z algoritmom za ... metoda namreč uvaja umetne in dopolnilne spremenljivke, da začetni linearni program prevede v standardno obliko, primerno

2

linearnega programa in torej zmanjša kompleksnost problema za dopolnilne in umetne spremenljivke. Druga strategija je metoda Potisni in povleci (angl.: Push-and-Pull) (Arsham, Damij, Grad, 2002), pri kateri reševanje linearnega programa poteka brez vpeljave umetnih spremenljivk pri (=) in (≥) omejitvah, in sicer v dveh fazah. Prva (»Push«) faza razvije bazo, ki je lahko dopustna ali nedopustna. Če baza ni optimalna, pomeni, da smo »potiskali« predaleč, in da moramo z drugo (»Pull«) fazo rešitev »povleči« nazaj proti optimalni. Razlika med standardno simpleks metodo in metodo Potisni in povleci je v tem, da je pri slednji začetna baza (ki je lahko dopustna ali nedopustna) že blizu optimalne rešitve, medtem ko pri prvi začenjamo reševanje linearnih problemov daleč od optimalne rešitve in se preko ekstremnih točk na mejah območja dopustnih rešitev postopoma premikamo do nje.

Temeljna hipoteza obeh novih tehnik je, da zmanjšujeta kompleksnost reševanja linearnih programov, torej, da je možno do optimalne rešitve priti z manj računskimi operacijami, hitreje in z manjšo zasedbo pomnilnika.

Na podlagi reševanja konkretnih linearnih programov s pomočjo za to izdelane računalniške aplikacije bom potrdil, da teoretični izboljšavi standardne metode simpleksov, algoritem za zoženje tabele simpleksov in metoda Potisni in povleci, vplivata na računsko kompleksnost v smislu zmanjšanja števila aritmetičnih operacij.

Cilji magistrskega dela so predvsem naslednji:

- prikazati standardno simpleks metodo linearnega programiranja in njeno uporabo ter ugotoviti in predstaviti možnosti izboljšav v smeri zmanjšanja računske kompleksnosti (število aritmetičnih operacij);

- implementirati standardno simpleks metodo, algoritem za zoženje tabele simpleksov in metodo Potisni in povleci na računalniku v obliki aplikacije, ki rešuje dane linearne probleme na vse tri načine;

- s primerjavo rezultatov reševanja numeričnih primerov linearnih problemov ugotoviti izboljšavo standardne simpleks metode z algoritmom za zoženje tabele simpleksov in z metodo Potisni in povleci.

Magistrsko delo je, da bi doseglo cilje, zastavljeno v naslednjem vsebinskem zaporedju: kot osnovo najprej (drugo poglavje) v širšem okviru kvantitativnega modeliranja in operacijskih raziskav predstavim linearno programiranje, ki se ukvarja z optimizacijo z omejitvami. Prikažem zgodovinski razvoj in, s pomočjo konkretnih primerov, uporabnost linearnega programiranja na raznovrstnih področjih.

Sledi tretje poglavje, v katerem se osredotočim na standardno simpleks metodo. Teoretični vidik metode kombiniram s prikazom poteka reševanja linearnih programov s to metodo, in sicer sprva na grafičen način, nato še s pomočjo tabele simpleksov. Hkrati nakažem možnosti in potrebe po izboljšavi standardne simpleks metode v smislu zmanjšanja računske kompleksnosti in hitrejšega reševanja linearnih programov.

Page 9: Izboljšanje standardne simpleks metode z algoritmom za ... metoda namreč uvaja umetne in dopolnilne spremenljivke, da začetni linearni program prevede v standardno obliko, primerno

3

V četrtem in petem poglavju nadaljujem s predstavitvijo dveh novih in možnih strategij za izboljšanje standardne simpleks metode: algoritma za zoženje tabele simpleksov in metode Potisni in povleci. Vsako predstavim iz vidika sprememb glede na standardno simpleks metodo, obravnavam njen algoritem in na konkretnem numeričnem primeru prikažem reševanje linearnega programa.

Na osnovi numeričnih rezultatov reševanja konkretnih primerov linearnega programiranja (od katerih jih je nekaj zbranih, predstavljenih in rešenih v prilogi) v šestem poglavju analiziram prednosti novih metod glede na standardno simpleks metodo, ki rezultirajo v zmanjšani računski kompleksnosti, t.j. v zmanjšanju števila aritmetičnih operacij, potrebnih za rešitev določenega linearnega programa.

Page 10: Izboljšanje standardne simpleks metode z algoritmom za ... metoda namreč uvaja umetne in dopolnilne spremenljivke, da začetni linearni program prevede v standardno obliko, primerno

4

2. LINEARNO PROGRAMIRANJE

2.1 ZGODOVINA OPERACIJSKIH RAZISKAV IN LINEARNEGA

PROGRAMIRANJA

Z industrijsko revolucijo se je začela drastična rast v velikosti in kompleksnosti organizacij. Obrtniki so zrasli v multinacionalna podjetja, prišlo je do delitve dela, do specializacije, hkrati pa tudi do večje potrebe po usklajevanju razdrobljene celote. Deli organizacij so postajali vedno bolj samostojni, z lastnimi cilji in vrednotami. V takih razmerah se je pogled na »celotno sliko« zameglil in posameze komponente so pozabile, kako so v okviru celote medsebojno povezane z drugimi. Kar je najbolje za en del ni nujno najbolje za celoto, zaradi česar hitro pride do navzkrižja interesov in ciljev. V povezavi s poglobljeno specializacijo in večanjem kompleksnosti organizacije se pojavi problem, kako ustrezno alocirati omejene resurse (proizvodne zmogljivosti, surovine…) na aktivnosti, ki bodo najbolj pripomogle k učinkovitosti in uspešnosti celotnega podjetja. Takšni problemi in okoliščine so ustvarile okolje, v katerem so se razvile operacijske raziskave (Hillier, Lieberman, 1995, str. 2).

Sicer prvi poskusi znanstvenega reševanja managerskih problemov segajo že dobro stoletje nazaj, a za »pravi« začetek operacijskih raziskav šteje večina avtorjev (Chvatal, 1983; Feiring, 1986; Hillier, Lieberman, 1995; Winston, 1994;…) obdobje druge svetovne vojne. Takrat so britanski in ameriški vojaški voditelji prosili znanstvenike in inženirje, da jim pomagajo analizirati in rešiti več strateških in taktičnih problemov, ki so se pojavljali pri vojaških operacijah. V vojnih razmerah je bilo nujno potrebno čim ustrezneje (optimalno) alocirati omejene resurse v okviru vojaških operacij: nameščanja radarjev, organiziranja konvojev, bombardiranja, miniranja… "Eden 'najsvetlejših zgledov' [takratne] uporabe metod operacijskega raziskovanja je, denimo, vodenje invazije v Normandijo," (Čibej, 2002, str. 58). Aplikaciji uporabljenih metod so zaradi vsebine rekli operacijske raziskave1 (v nadaljevanju OR) (Winston, 1994, str. 1).

Uspešna uporaba znanstvenih metod za obvladovanje kompleksnosti okolja v vojnih razmerah in povojni industrijski boom (z že zgoraj omenjenim inherentnim povečanjem specializacije in potrebe po usklajevanju komponent sistema) sta spodbudila podjetnike, managerje in svetovalce k apliciranju razvitih metod v poslovni svet, raziskovalce pa k nadaljnim raziskavam. Pomembnejši mejnik se je zgodil leta 1947, ko je George B. Dantzig razvil simpleks metodo, namenjeno reševanju problemov linearnega programiranja. Manj učinkovit in manj definiran algoritem je na "ruski strani" razvil Leonid Kantorovič že osem let prej. Do začetka sedemdesetih let so bile razvite metode nelinearnega programiranja (Kuhn in Tucker, 1951), celoštevilskega programiranja (Gilmore in Gomory, 1961, 1963), dinamičnega programiranja, teorija zalog, teorija vrst,…, ob razvoju računalnikov pa so bila razvita tudi orodja za hitrejšo uporabo vseh teh metod v

1 angl.: Operations research.

Page 11: Izboljšanje standardne simpleks metode z algoritmom za ... metoda namreč uvaja umetne in dopolnilne spremenljivke, da začetni linearni program prevede v standardno obliko, primerno

5

praksi (Orden, 1993, str. 3). Naenkrat je bilo možno definirati produkcijske, alokacijske, transportne in druge (realne) probleme, ki so jih dosedaj managerji reševali s tehniko "poskusi in popravi"2 ali celo "ciljaj in zgreši"3 – in kar je še pomembneje, simpleks metoda je omogočala tudi njihove prve znanstvene rešitve. Številni ekonomisti, npr. T.C. Koopmans in Leonid Kantorovič, so se ukvarjali s praktično uporabo reševanja linearnih programov. Omenjena sta leta 1975 prejela Nobelovo nagrado za ekonomijo, za "svoj prispevek k teoriji optimalne alokacije resursov,"4 (Chvatal, 1983, str. 8).

Danes se linearno programiranje uporablja v številnih aplikacijah na raznovrstnih področjih: ekonomiji, financah, bančništvu, statistiki…, razvoj pa gre predvsem v smeri prilagajanja standardne simpleks metode za hitrejše reševanje specifičnih problemov, z zmanjšanjem računske kompleksnosti, predvsem pri LP z neenačbami tipa (≥) in (=) (npr. Arsham, Damij, Grad, 2002; Paparrizos, Samaras, Stephanides, v tisku), ali za hitrejše reševanje celoštevilskih problemov (Orden, 1993).

Še preden pa si podrobneje ogledamo linearno programiranje, ki je teoretična osnova magistrskega dela, bomo v razdelku 2.2 obravnavali metodologijo operacijskih raziskav, katere poznavanje je potrebno pri znanstvenem pristopu k reševanju problemov.

2.2 METODOLOGIJA OPERACIJSKIH RAZISKAV

Terminološke definicije OR so različne (Čibej, 2002, str. 57):

- Operacijsko raziskovanje je znanstveni pristop k pripravi in izbiri optimalnih rešitev.

- Operacijsko raziskovanje je kvantitativna veda, ki pomaga upravljavcem pri sprejemanju dobrih rešitev.

- Operacijsko raziskovanje pomeni uporabo matematičnih metod pri modeliranju sistemov in analizi njihovih značilnosti za podporo (poslovnemu) odločanju.

Povzamemo jih lahko kot množico aplikativnih kvantitativnih metod za kakovostnejše odločanje pri "usmerjanju delovanja poslovnih in drugih sistemov" (Čibej, 2002, str. 57).

Gre za kvantitativen način pristopanja odločevalca k reševanju danih problemov, ki ga poznamo tudi pod imenom kvantitativno modeliranje. Iz splošne teorije in raziskav odločanja vemo, da je kvantitativen način odločanja objektiven, nepristranski, definiran in ponovljiv. Kvalitativen, po drugi strani, pa bazira predvsem na intuiciji, subjektivnosti in izkušnjah iz podobnih preteklih situacij. Pri kompleksnih, pomembnih in nepoznanih problemih, pri katerih ima odločevalec čas za analizo in odločitev, bi naj managerji uporabljali kvantitativen-znanstven pristop (Stevenson, 1992, str. 3) in se naj ne bi odločali

2 angl.: Trial & Error 3 angl.: "Hit and miss" (Chvatal, 1983, str. 8) 4 Po (Chvatal, 1983, str. 8) je Kraljeva švedska akademija znanosti, ki podeljuje Nobelove nagrade, smatrala delo Georgea B. Dantziga, očeta simpleks metode, za preveč matematično – Nobelova nagrada za matematiko pa ne obstaja.

Page 12: Izboljšanje standardne simpleks metode z algoritmom za ... metoda namreč uvaja umetne in dopolnilne spremenljivke, da začetni linearni program prevede v standardno obliko, primerno

6

"po občutku". Kljub temu na tem mestu ni odveč dodati, da pri poslovnih problemih ustrezna mera kvalitativnosti in subjektivnosti vseeno sodi k odločanju – sposoben odločevalec ne sme slepo slediti rezultatom reševanja modela, ampak jih mora kritično ovrednotiti in se šele nato odločiti.

Metodologija operacijskih raziskav narekuje potek reševanja problema in odločanja (torej potek kvantitativega modeliranja v managementu) v fazah, ki jih ilustrira Slika 1, in ki so v kratkem predstavljene v preostanku tega razdelka.

Slika 1: Faze kvantitativnega modeliranja

Vir: Prirejeno po Winston, 1994, str. 1-7; Hillier in Lieberman, 1995, str. 8-4; Stevenson, 1992, str. 9-13; Čibej, 2002, str. 29-35.

2.2.1 Definiranje problema

Prva faza odločevalcu narekuje formuliranje problema. Gre verjetno za najobčutljivejšo in najtežjo fazo kvantitativnega modeliranja, saj je od nje odvisno, kako relevantne zaključke

Page 13: Izboljšanje standardne simpleks metode z algoritmom za ... metoda namreč uvaja umetne in dopolnilne spremenljivke, da začetni linearni program prevede v standardno obliko, primerno

7

bomo lahko potegnili iz rešitev. "Težko je dobiti 'prave' odgovore iz 'napačnih' problemov!" (Hillier, Lieberman, 1995, str. 9).

Primer, povzet in prirejen po (Winston, 1994, str. 1), prikazuje zahtevnost definiranja problema in potrebo po dvosmerni komunikaciji med vsemi sodelujočimi:

Manager v banki najame specialista za kvantitativno modeliranje (analitika), da bi mu pomagal najti rešitev za "zmanjšanje stroškov plač za zaposlene za bančnimi okenci, ob hkratni zahtevi po ohranitvi primernega nivoja (hitrosti) storitev do strank". Možne formulacije problema so lahko, na primer, naslednje:

1. Minimalni tedenski strošek plač, ki je potreben, da vsaka stranka v vrsti stoji povprečno tri minute.

2. Minimalni tedenski strošek plač, ki je potreben, da le 5% strank v vrsti stoji več kot tri minute.

Banka želi ob razpoložljivem znesku plač 1mio SIT minimizirati čas, ki ga mora v vrsti prebiti stranka.

Ob tem mora analitik obravnavati vidike bančnega poslovanja, ki zadevajo problem: Povprečno število strank v banki na uro? Koliko strank lahko povprečno zaposleni obdela v eni uri? Čakajo stranke za vsa okenca v eni vrsti ali ima vsako okence svojo vrsto?

2.2.2 Izgradnja modela

V tej fazi je, na podlagi definicije problema, zgrajen matematični model, ki je poenostavljena in (pogosto) idealizirana abstrakcija realnosti. Tak model na matematični način (npr. v obliki enačb) opisuje stanje sistema, pogoje, ki jih postavlja okolje sistema in odnose med spremenljivkami modela. Definiramo torej odnose med odločitvenimi spremenljivkami, neobvladljivimi vhodi in izhodi sistema; določimo tudi sistem pogojev, ki določajo možno5 rešitev (Čibej, 2002, str. 32). Povedano z drugimi besedami, določiti je potrebno o čem se odločamo, kako naše (različne) odločitve vplivajo na zastavljen cilj (ki je izražen v obliki tako imenovane namenske funkcije), kakšen je cilj in kakšne so objektivne danosti (pogoji), ki nas omejujejo pri doseganju cilja.

2.2.3 Zagotovitev vhodnih podatkov

Ko imamo model zgrajen, je potrebno zagotoviti vhodne podatke, ki jih bo model uporabil za reševanje problema. Pri nekaterih avtorjih (npr. Winston, 1994 in Stevenson, 1993) ta faza OR ni eksplicitno izpostavljena, kljub temu, da je njen pomen za uspešnost "OR projekta" izredna. Iz vsebinskih razlogov jo, seveda, bolj poudarja tista literatura, ki ni namenjena strogo OR-specialistom, ampak bolj odločevalcem. V (Curwin, Slater, 2002) je

5 Možno ali dopustno rešitev; izraza se uporabljata kot sinonima.

Page 14: Izboljšanje standardne simpleks metode z algoritmom za ... metoda namreč uvaja umetne in dopolnilne spremenljivke, da začetni linearni program prevede v standardno obliko, primerno

8

celo poglavje knjige posvečeno vhodnim podatkom, v (Čibej, 2002, str. 33) pa je npr. nakazano:

"…zagotovitev podatkov, je – vsaj po naših izkušnjah, ki pa so najbrž delno obremenjene z nekdanjimi razmerami – tista [faza], ki odloča o tem, ali je sploh smiselno nadaljevati z delom."

Podobno v (Hillier in Lieberman, 1995, str. 10) ugotavljajo, da "OR teami porabijo presenetljivo veliko časa za zbiranje relevantnih podatkov o problemu."

Razlog za pomembnost faze je očiten – če naredimo še tako realen model, nam pri odločanju ne bo mogel pomagati, če mu ne bomo zmožni posredovati vhodnih podatkov. Po principu Garbage In-Garbage Out nam napačni podatki dajo tudi napačne rezultate.

Dostikrat se zgodi, da popolnoma ustreznih in našemu modelu prirejenih podatkov ne dobimo. Razlogi so lahko različni – podatkov sploh ne zajemamo, so (pre)stari, ali pa jih zajemamo v drugačni obliki. V takšnih primerih imamo več možnih rešitev, od tega, da pripravimo izvedene podatke (iz obstoječih), uporabimo (ustrezne) ocene, ali pa celo priredimo zgrajen matematični model. Tudi, če so model in podatki že "kompatibilni", je slednje običajno potrebno še prečistiti, da ne bi morebitne napake pokvarile rezultatov našega modeliranja.

2.2.4 Reševanje modela

Ko je matematičen model formuliran in podatki zbrani, sledi faza izgradnje procedure za reševanje modela. Običajno gre preprosto za apliciranje določenega standardnega algoritma-metode operacijskih raziskav oz. preprosto za uporabo enega izmed obstoječih računalniških orodij.

Tako lahko npr. probleme linearnega programiranja hitro rešimo s klasičnim "pisarniškim" orodjem, preglednico z vgrajenimi analitičnimi pripomočki (npr. Reševalec v orodju Microsoft® Excel). Poleg matematičnega programiranja (kamor spada linearno in nelinearno programiranje), ki je ena izmed najbolj uporabljanih tehnik kvantitativnega modeliranja, se pogosto uporabljajo še: simulacije, mrežno modeliranje, teorija vrst, odločitvena drevesa, celoštevilsko programiranje, dinamično programiranje, markovska analiza in ciljno programiranje (Stevenson, 1992, str. 15).

Včasih pa se zgodi, da za optimalno rešitev določenega problema še ne obstaja procedura reševanja. V tem primeru lahko, če cost-benefit analiza to upraviči, poskušajo s pomočjo specialistov proceduro izumiti, ali, kar se dogaja pogosteje, poskušajo dobiti vsaj zadovoljive rešitve. Po Paretovem zakonu lahko namreč že z 20% napora (ali npr. stroškov) dosežemo 80% učinek. Tega se zavedajo tudi managerji, ki se "dostikrat odločijo za zadovoljivo rešitev, namesto da bi brezupno iskali optimalno" (Hernandez in Proth, 1982, str. 41).

Page 15: Izboljšanje standardne simpleks metode z algoritmom za ... metoda namreč uvaja umetne in dopolnilne spremenljivke, da začetni linearni program prevede v standardno obliko, primerno

9

2.2.5 Analiza rešitev

Ko dobimo rešitev, jo najprej formalno preizkusimo, če ustreza podanim omejitvam. Predvsem v nekaj začetnih poskusih reševanja je potrebno zgrajeni matematični model iterativno prilagajati in korigirati (Čibej, 2002, str. 34).

Sledi vsebinska analiza rezultatov, v kateri pogostokrat primerjamo več možnih rešitev med sabo in predvsem v povezavi z okolico, ki v model ni bila vključena. Možno je, da npr. "optimalna" rešitev s stališča namenske funkcije ni sprejemljiva za podjetje kot celoto, zato je potrebno poiskati kakšno podoptimalno rešitev, ki pa bo ustreznejša iz vidika celote.

2.2.6 Aplikacija modela in nadziranje implementacije

Ko je rešitev izbrana, sledi njena implementacija, katere uspešnost je potrebno analizirati. Če gre za model, ki se večkrat ali celo avtomatizirano uporablja za določene izračune, mu moramo vgraditi tudi test, ki bo opozoril na spremembo strukture modela. Lahko se namreč zgodi, da "nenadoma uporabljamo dober kvantitativni model za reševanje problema A pri reševanju problema B, kjer pa ni več ustrezen," (Čibej, 2002, str. 30).

2.3 FORMULACIJA LINEARNEGA PROGRAMA

Linearno programiranje je ena najpopularnejših tehnik operacijskih raziskav, ki se ukvarja s tako imenovano optimizacijo z omejitvami. Povedano na kratko, gre za alociranje omejenih resursov na med seboj konkurenčne aktivnosti na najboljši (optimalen) način.

Linearni program (v nadaljevanju LP) je optimizacijski problem, za katerega velja (Winston, 1993, str. 53):

1. Za LP poskušamo maksimizirati ali minimizirati linearno funkcijo odločitvenih spremenljivk. Funkciji, ki jo maksimiramo ali minimiramo, pravimo namenska oz. kriterijska oz. ciljna funkcija6.

2. Vrednosti odločitvenih spremenljivk morajo zadovoljiti nabor omejitev oz. pogojev. Vsak pogoj mora biti podan v obliki linearne enačbe ali linearne neenačbe.

3. Z vsako odločitveno spremenljivko je povezan pogoj nenegativnosti. Za vsako spremenljivko xi je določeno, ali da mora biti xi nenegativna (xi ≥ 0), ali – redkeje – da spremenljivka xi ni pogojena glede nenegativnosti7.

6 Izrazi se uporabljajo kot sinonimi. 7 angl.: Unrestricted in sign, urs.

Page 16: Izboljšanje standardne simpleks metode z algoritmom za ... metoda namreč uvaja umetne in dopolnilne spremenljivke, da začetni linearni program prevede v standardno obliko, primerno

10

2.3.1 Komponente LP

Pri formulaciji LP moramo (Feiring, 1986, str. 12; Čibej, 2002, str. 59) določiti naslednje komponente:

1. Identificirati odločitvene spremenljivke. Rečemo jim tudi neznanke ali neodvisne spremenljivke, ki popolnoma opisujejo odločitve, ki jih lahko sprejmemo.

2. Identificirati omejitve in jih zapisati v obliki linearnih enačb ali neenačb odločitvenih spremenljivk. Na primer pri odločanju o proizvodnem in/ali prodajnem asortimentu podjetja imamo tipično opraviti s proizvodnimi (ki jih določa npr. tehnologija, produkcijski faktorji…) in tržnimi omejitvami (koliko lahko prodamo na trgu). Dodajmo še, da ima vsaka omejitev štiri elemente: (1) konstanto na desni strani (bi), ki podaja mejo za obravnavani pogoj; (2) algebraičen znak (≤, = ali ≥), ki označuje tip pogoja; (3) odločitvene spremenljivke, na katere se omejitev nanaša (xi); in (4) vpliv enote odločitvene spremenljivke (ai oz. ci) na desno stran omejitve oz. namenske funkcije.

3. Identificirati namensko funkcijo in jo zapisati v obliki linearne funkcije odločitvenih spremenljivk. Pri LP namreč poskušamo maksimizirati ali minimizirati dano namensko funkcijo s spreminjanjem odločitvenih spremenljivk.

4. Identificirati parametre odločitvenih spremenljivk v naboru omejitev (ai) in koeficiente namenske funkcije (ci). Gre za fiksne vrednosti, ki določajo vpliv, ki ga ima enota odločitvene spremenljivke na namensko funkcijo in omejitev.

Iščemo torej maksimum funkcije

ss xcxcxcxf ⋅++⋅+⋅= ...)( 2211

pri linearnih pogojih

msmsmm

ss

bxaxaxa

bxaxabxaxaxa

=⋅++⋅+⋅=+++=++⋅+⋅=⋅++⋅+⋅

L

LLLLL

L

L

221

2222121

11212111

in pogojih nenegativnosti

0,...,0,0 21 ≥≥≥ sxxx

pri čemer sta indeksa m in s poljubni naravni števili, koeficienti aij (i=1,…,m; j=1,…,s) in cj (j=1,…,s) poljubna realna, bi (i=1,…,m) pa poljubna nenegativna števila.

Page 17: Izboljšanje standardne simpleks metode z algoritmom za ... metoda namreč uvaja umetne in dopolnilne spremenljivke, da začetni linearni program prevede v standardno obliko, primerno

11

Temu zapisu pravimo tudi standardna oblika zapisa8 LP, ki jo lahko namesto v skalarni obliki zapišemo tudi v matrični obliki, in sicer takole:

Določiti je potrebno vektor X, ki zadošča pogoju nenegativnosti

0≥X

in matrični enačbi

BAX =

tako, da ima namenska funkcija

CXxf =)(

maksimum.

Pri tem so vektorji

[ ]sccC L1=

=

msm

s

aa

aaA

L

MM

L

1

111

,

=

sx

xX M

1

,

=

mb

bB M

1

Iz naslednjega primera bo jasno, kako praktično formuliramo linearni program:

Primer: Iz surovin S1 in S2, ki ju imamo na voljo 1200 oz. 800 enot, izdelujemo izdelka I1 in I2, ki ju prodajamo po 40 oziroma 56 denarnih enot za enoto posameznega izdelka. Koliko enot vsakega izdelka naj proizvedemo, da bi maksimirali prihodek od prodaje, če za enoto izdelka I1 potrebujemo 3 enote surovine S1 in 1 enoto surovine S2, za izdelek I2 pa sta ustrezna normativa po 2 enoti vsake surovine?

Če označimo obseg proizvodnje posameznega izdelka z x oziroma y, imamo najprej pogoja nenegativnosti za odločitveni spremenljivki:

0≥x , 0≥y

nato pa omejitvi glede porabe materiala:

120023 =+ yx

8002 =+ yx

8 angl.: Standard form

Page 18: Izboljšanje standardne simpleks metode z algoritmom za ... metoda namreč uvaja umetne in dopolnilne spremenljivke, da začetni linearni program prevede v standardno obliko, primerno

12

Pri tem maksimiziramo namensko funkcijo prihodka:

yxyxPRIH 5640),( +=

Če zapišemo odločitvene spremenljivke, parametre in namensko funkcijo v matrični obliki, dobimo:

=

yx

X ,

=

2123

A ,

=

8001200

B , [ ]5640=C

2.3.2 Predpostavke LP

Pri določanju naštetih komponent LP (odločitvene spremenljivke, namenska funkcija, omejitve in parametri) oz. pri formulaciji LP moramo upoštevati sledeče predpostavke (Stevenson, 1993, str. 36; Čibej, 2002, str. 60):

1. Linearnost – Vsaka odločitvena spremenljivka ima linearen vpliv v namenski funkciji in v omejitvah, v katerih nastopa.

2. Aditivnost – Leva stran omejitev oz. namenske funkcije je vsota vplivov vseh odločitvenih spremenljivk.

3. Zveznost – Vrednosti odločitvenih spremenljivk so lahko katerekoli vrednosti v določenem intervalu. Pri praktični uporabi rešitve lahko omejene resurse delimo na tako drobno, kot želimo.

4. Gotovost – V modelu vladajo vzročno-posledične zveze, ki so fiksno določene. Ko določimo vrednosti odločitvenih spremenljivk, lahko takoj izračunamo stanje sistema oz. vrednost namenske funkcije.

5. Nenegativnost - Pogoji nenegativnosti so "logična posledica" vsebine problemov, ki se jih lotevamo z metodami linearnega programiranja – odločitvene spremenljivke predstavljajo take spremenljivke, ki ne morejo zavzeti negativnih vrednosti. Npr. pri odločanju o količini proizvodov v prodajnem asortimentu ne moremo izbrati -10 proizvodov A in 5 proizvodov B; podobno pri investicijskem odločanju ne moremo kupiti 10 delnic A, 5 delnic B in -100 delnic C.

Pomembno je, da imamo te predpostavke v mislih še pred postavitvijo modela oz. takrat, ko o uporabi določene metode operacijskih raziskav za reševanje problema, na katerega smo naleteli, šele razmišljamo.

Page 19: Izboljšanje standardne simpleks metode z algoritmom za ... metoda namreč uvaja umetne in dopolnilne spremenljivke, da začetni linearni program prevede v standardno obliko, primerno

13

2.4 REŠEVANJE LP

2.4.1 Teoretična izhodišča za reševanje LP

Najosnovnejša pojma povezana z reševanjem linearnih programov sta območje dopustnih rešitev in optimalna rešitev, to je tista (najboljša možna) rešitev, ki jo iščemo. Območje dopustnih rešitev je nabor vseh točk, ki zadoščajo vsem pogojem linearnega programa. Optimalna rešitev za maksimizacijski LP je tista točka območja dopustnih rešitev, ki ima največjo vrednost namenske funkcije. Podobno, optimalna rešitev za minimizacijskih linearni program je tista točka območja dopustnih rešitev, ki ima najmanjšo vrednost namenske funkcije (Winston, 1993, str. 55).

2.4.2 Grafično reševanje LP

Osnovne koncepte reševanja linearnih programov si lahko razjasnimo s pomočjo prikaza grafičnega načina reševanja le-teh. Za to najprimernejši so nedvomno LP z dvema odločitvenima spremenljivkama, ki jih lahko prikažemo s pomočjo človeku domačega X-Y koordinatnega sistema. Kljub temu, da gre za relativno trivialne primere, bo prikaz reševanja takšnega primera dobra baza za razumevanje težje predstavljivih konceptov reševanja kompleksnejših LP. Denimo, da imamo (klasični) primer proizvodnega asortimenta9, v katerem:

maksimiziramo namensko funkcijo prihodkov:

21 53 xxC +=

pri proizvodnih in tržnih pogojih:

18231224

21

2

1

≤+≤≤

xxx

x

in pogojih nenegativnosti

01 ≥x , 02 ≥x

Konstruirajmo graf z odločitvenima spremenljivkama x1 na abscisi in x2 na ordinati. V prvem koraku najprej poiščemo območje točk oziroma vrednosti, ki jih dane omejitve dopuščajo. To naredimo tako, da na graf vrišemo premice, ki jih določajo pogoji:

18231224

21

2

1

=+==

xxx

x

9 Primer je povzet in prirejen po (Hillier, Lieberman, 1995, str. 26-31).

Page 20: Izboljšanje standardne simpleks metode z algoritmom za ... metoda namreč uvaja umetne in dopolnilne spremenljivke, da začetni linearni program prevede v standardno obliko, primerno

14

in pogoja nenegativnosti:

01 =x , 02 =x

Pogoji nenegativnosti nas omejijo na pozitivni strani obeh osi, torej na prvi kvadrant. Prva omejitev (x1 ≤ 4) pomeni, da se možne rešitve lahko nahajajo le v območju levo od premice (x1 = 4), druga (2x2 ≤ 12), da so rešitve možne le pod premico (2x2 = 12) in tako dalje. Premice tako omejijo in, ko upoštevamo vse, določijo množico točk, ki zadoščajo vsem pogojem (Slika 2: osenčeno območje).

V drugem koraku izmed vseh možnih točk izberemo tisto, ki maksimizira namensko funkcijo prihodkov. Na graf je potrebno najprej dodati premico prihodka ( 21 53 xxC += ) in jo nato s povečevanjem x1 in x2 potisniti čimbolj desno (k večjim x1) in čim više (k večjim x2). Premico, vzporedno samo s sabo (po nivojnicah), potiskamo tako daleč, da se "še zadnjič dotika prostora možnih rešitev" (Čibej, 2002, str. 61). Običajno je to le v eni točki, redkeje pa na celotni stranici prostora možnih rešitev (to se zgodi takrat, ko ima premica namenske funkcije enak naklon kot ga ima premica enega od pogojev, ki omejuje namensko funkcijo). Tako s pomočjo grafičnega načina reševanja pridemo do optimalne rešitve LP, v našem primeru do točke Topt (Slika 2).

Slika 2: Grafično reševanje LP

Vir: Lastni izračuni.

Page 21: Izboljšanje standardne simpleks metode z algoritmom za ... metoda namreč uvaja umetne in dopolnilne spremenljivke, da začetni linearni program prevede v standardno obliko, primerno

15

2.4.3 Lastnosti rešitev

Gledano s stališča rešitev, spada vsak LP v eno izmed kategorij (Winston, 1993, str. 69; Vadnal, 1977, str. 55-6):

1. LP ima eno optimalno rešitev (Slika 2: točka Topt).

2. LP ima alternativne oz. več optimalnih rešitev. Namenska funkcija v dveh ali večih ekstremnih točkah na območju dopustnih rešitev dosega optimalno vrednost. Ker to pomeni, da več različnih kombinacij odločitvenih spremenljivk daje enake (optimalne) rešitve, se lahko odločevalec odloči za (poljubno) tisto kombinacijo, ki mu najbolj ustreza tudi iz vidika drugih (širših) dejavnikov.

3. Optimalna rešitev ni v območju dopustnih rešitev10. LP nima nobene možne rešitve, saj nobena od točk ni v območju dopustnih rešitev (pri dveh odločitvenih spremenljivkah bi v dvodimenzionalnem koordinatnem sistemu, kot ga prikazuje Slika 2, takšna točka ležala izven osenčenega območja). V takem primeru je na primer potrebno (Čibej, 2002, str. 88):

- "Omehčati" kakšnega od pogojev s povečanjem obsega (redkih) resursov, ki so na voljo (nakup surovin, zaposlitev novih produkcijskih faktorjev…), ali s povečanjem trženjskih aktivnosti in s tem povečanjem obsega prodaje. Spremeni se vektor desnih strani omejitev (b).

- Zmanjšati "porabo" resursov (npr. s spremembo tehnologije) in odpraviti ozka grla. Spremenijo se koeficienti matrike (A).

4. LP ima neomejeno množico rešitev11. V tem primeru je mogoče vrednost namenske funkcije po absolutni vrednosti poljubno večati (maksimizacijski LP) oz. manjšati (minimazacijski LP). Do takšne situacije pride predvsem takrat, ko smo neustrezno formulirali model – če smo npr. pri maksimizacijskem LP pozabili dodati kakšno (≤) omejitev, ali, če smo pri minimizacijskem LP pozabili dodati pogoje nenegativnosti.

2.5 UPORABA LP IN OSTALIH METOD OR V PRAKSI

Raziskave so pokazale, da so metode operacijskih raziskav v poslovni praksi široko uporabljane, kljub nekaterim mnenjem o OR:

"'Ljudski glas' običajno [rahlo pesimistično definicijo] pripisuje prof. Viljemu Rupniku: Operacijsko raziskovanje je sistem metod, ki dajo slabe odgovore na vprašanja, za katera poznamo (brez operacijskega raziskovanja) še slabše odgovore," (Čibej, 2002, str. 57).

Linearno programiranje, ki je po raziskavah (dve takšni sta povzeti v (Stevenson, 1993, str. 15) in v (Winston, 1994)) najbolj uporabljana metoda OR, se uspešno uporablja v številnih

10 angl.: Infeasible solution 11 angl.: Unbounded.

Page 22: Izboljšanje standardne simpleks metode z algoritmom za ... metoda namreč uvaja umetne in dopolnilne spremenljivke, da začetni linearni program prevede v standardno obliko, primerno

16

aplikacijah na raznovrstnih področjih: ekonomiji, financah, bančništvu, logistiki, statistiki,… V raziskavi podjetij Fortune 500 (Winston, 1994) jih kar 85% uporablja LP, v (Stevenson, 1993) pa je ta številka za 1 odstotno točko nižja.

Klasični primeri uporabe LP so:

- problemi optimalnih mešanic - npr. prehrambeni problemi, v katerih minimiziramo stroške ob hkratni zadovoljitvi minimalnih standardov glede sestavin (Damij in Grad, 1994-95; Damij in Grad, 1985; Dantzig, 1990; Dewitt et al., 1989);

- proizvodni in prodajni asortimenti - maksimiziramo namensko funkcijo ob tehnoloških ali tržnih omejitvah (Chandy in Kharabe, 1986; Sullivan in Secrest, 1985);

- alokacija sredstev za ekonomsko propagando (Čibej, 2002), in drugi.

Kljub temu, da je nabor reševanih problemov videti zelo širok, je uporabnost LP zaradi osnovnih predpostavk LP, predvsem o gotovosti, zveznosti in linearnosti, omejena (Heizer, Render, 2001). Mnogo problemov alociranja omejenih resursov se ne da obrazložiti oz. reševati z LP in, ko je katera od predpostavk resno kršena, je potrebno uporabiti kakšno drugo metodo operacijskih raziskav.

V praksi linearnemu programiranju, glede na uporabo, tako tesno sledijo simulacije, ki poskušajo olajšati napovedovanje v razmerah negotovosti. Od anketiranih jih 80% uporablja to metodo, po uporabnosti pa jo pred LP uvrščajo celo na prvo mesto (Stevenson, 1993, str. 15). V osnovi se od linearnega, celoštevilskega, nelinearnega programiranja, problemov zalog idr., simulacije razlikujejo v tem, da niso namenjene iskanju optimalne rešitve temveč eksperimentiranju z modelom, npr. v obliki "What-if" analiz. Med bolj znane tehnike spada Monte Carlo simulacija.

Tudi predpostavka zveznosti v realnosti hitro postane nesprejemljiva. "Najbolj tipično je to pri nalogah, pri katerih gre za alokacijo (razporejanje) delavcev, optimalizacijo asortimenta pri kosovni proizvodnji" in podobno (Čibej, 2002, str. 77). Težko je na primer alocirati na neko delovno mesto 1,5 zaposlenega ali proizvesti 3,4 omare. "Zahteve po celoštevilskih rešitvah so realne in pogoste, a so takšni LP tudi dosti zahtevnejši za reševanje," (Fourer, 2002, str. 3). Metode, ki se uporabljajo na tem področju so LP relaksacija, Branch-and-bound in algoritem Cutting plane (Kerkez, 1996; Winston, 1994, 9. poglavje).

S tem pa težav še ni konec. Linearen opis odnosov med odločitvenimi spremenljivkami, omejitvami in namensko funkcijo lahko daje popolnoma napačno predstavo o obravnavanem sistemu:

"Ali je smiselno predpostavljati, da pri dvakrat večji količini poslovnih učinkov porabimo natanko dvakrat večje količine posameznih resursov? Očitno je takšna predpostavka pri nekaterih dejavnostih smiselna, pri drugih pa ne, še posebej pri tistih, kjer lahko opazimo izrazite prihranke obsega (economies of scale), (Čibej, 2002, str. 88).

Pogosti tehniki, predvsem za ekonomske probleme, sta ulomljeno linearno programiranje (optimizacija kazalcev donosnosti, ekonomičnosti…) in kvadratno programiranje

Page 23: Izboljšanje standardne simpleks metode z algoritmom za ... metoda namreč uvaja umetne in dopolnilne spremenljivke, da začetni linearni program prevede v standardno obliko, primerno

17

(optimizacija na področju vrednostnih papirjev z eksplicitno vključenostjo tveganja) (Čibej, 2002, str. 95).

Za konec "uvodnega" poglavja o linearnem programiranju na kratko obravnavajmo še nekaj primerov uspešne uporabe metod in tehnik linearnega programiranja v praksi (povzeto po Winston, 1994, ter Hillier in Lieberman, 1995):

1. Razporejanje policijskih patrulj v San Franciscu – z uporabo linearnega, ciljnega in celoštevilskega programiranja je bil razvit sistem za planiranje in razporejanje policijskih patrulj. Z uporabo sistema so prihranili 11 milijonov ameriških dolarjev, izboljšali odzivne čase za 20% in povečali letne prihodke iz naslova prometnih kazni za 3 milijone ameriških dolarjev (Taylor in Huxley, 1989).

2. Zmanjšanje stroškov v ameriški električni industriji – z uporabo verjetnostnega dinamičnega programiranja in simulacijskega modela je 79 ameriških električnih podjetij prihranilo preko 125 milijonov ameriških dolarjev v okviru procesov nabave in zalog ter zaradi znižanja stroškov v zvezi s primanjkljaji električne energije (Chao et al., 1989).

3. Načrtovanje obrata za izdelavo kokil v podjetju Bethlehem Steel – z uporabo celoštevilskega programiranja je (Vasko, 1989) pomagal pri izgradnji obrata za izdelavo votlih kovinskih priprav, po katerih se oblikuje vanjo vlita tekoča kovina. Bethlehem Steel so zaradi tega letno prihranili 8 milijonov ameriških dolarjev pri stroških poslovanja.

4. Mešanje bencinov v Texacu – s pomočjo LP optimalnih mešanic in celoštevilskega programiranja je bil razvit (Dewitt et al., 1989) model za določitev optimalne mešanice surove nafte za proizvodnjo različnih tipov bencinov. Texaco ocenjuje, da so s tem znižali stroške za okrog 30 milijonov ameriških dolarjev letno, z vgrajenim simulacijskim in "What-if" orodjem pa znižali tveganje poslovanja.

5. Upravljanje z zalogami v Blue Bell – z uporabo linearnega programiranja in verjetnostnih modelov zalog so (Edwards et al., 1985) proizvajalcu tekstila zmanjšali povprečne zaloge za 31%.

6. Razporejanje tovornjakov za North American Van Lines – mrežno in dinamično programiranje sta transportnemu podjetju znižala letne stroške za 2,5 milijona ameriških dolarjev in izboljšala kakovost storitev.

7. Planiranje proizvodnje mlekarne – (Sullivan in Secrest, 1985) sta z uporabo LP rešila klasičen problem proizvodnega asortimenta in izboljšala letni dobiček za vsaj 48 tisoč ameriških dolarjev.

8. Izbira lokacije letališča – s pomočjo večkriterialne optimizacije je (Keeney, 1973) Mexico City-ju pomagal do izbire lokacije za letališče.

* * *

Page 24: Izboljšanje standardne simpleks metode z algoritmom za ... metoda namreč uvaja umetne in dopolnilne spremenljivke, da začetni linearni program prevede v standardno obliko, primerno

18

S prvim delom smo linearno programiranje umestili v širši okvir kvantitativnega modeliranja in operacijskih raziskav. V nadaljevanju je obravnavana simpleks metoda: iz teoretičnega in praktičnega vidika (reševanje numeričnega primera) je najprej razložen algoritem te najpogosteje uporabljane tehnike linearnega programiranja. Nato so predstavljene tudi možne izboljšave oziroma izpeljanke standardne simpleks metode za uporabo v specifičnih problemskih situacijah, ki se pojavijo zaradi obstoječih ali potencialnih slabosti pri reševanju specifičnih LP.

Page 25: Izboljšanje standardne simpleks metode z algoritmom za ... metoda namreč uvaja umetne in dopolnilne spremenljivke, da začetni linearni program prevede v standardno obliko, primerno

19

3. STANDARDNA SIMPLEKS METODA

3.1 OPIS STANDARDNE SIMPLEKS METODE

Simpleks metoda je osnovni algoritem za reševanja problemov linearnega programiranja, ki ga je, kot smo navedli že v točki 2.1, leta 1947 razvil George B. Dantzig (Dantzig, 1963). Z njo je danes možno reševati linearne programe ne glede na število odločitvenih spremenljivk: v praksi naj bi bilo z računsko močjo današnjih superračunalnikov možno rešiti LP z okrog milijonom pogojev (Orden, 1993, str. 4).

Gre za iterativen postopek iskanja rešitve LP, ki traja toliko časa, dokler ne najde optimalne rešitve. Postopek se začne z začetno rešitvijo, ki je dopustna rešitev LP (ustreza torej vsem danim pogojem), a ne optimalna; nahaja se na presečišču premic pogojev. Takšni rešitvi rečemo bazna dopustna rešitev, točkam pa ekstremne točke poliedra možnih rešitev. Z algebraično manipulacijo izboljšujemo bazne dopustne rešitve toliko časa, dokler izboljšava ni več mogoča, torej dokler ne najdemo rešitve, ki je ne le dopustna temveč tudi optimalna. Pri grafičnem načinu reševanja LP, obravnavanega v točki 2.4.2, smo ugotovili, da se takšna točka nahaja na robu območja dopustnih rešitev (Slika 3, točka R); to velja tudi za LP z več kot dvema odločitvenima spremenljivkama.

Pred podrobnim opisom algoritma simpleks metode, poglejmo na enostavnem primeru, kako metoda deluje; Slika 3 nam bo pri tem v pomoč. Točke M, N, P, R in T so ekstremne točke poliedra dopustnih rešitev (v nadaljevanju tudi "oglišča") oz. bazne dopustne rešitve; točke O, Q in S sicer ležijo na presečišču pogojev, a kršijo vsaj enega od (ostalih) pogojev in se tako ne nahajajo v območju dopustnih rešitev – pravimo jim bazne rešitve. Za oglišča velja (Hillier in Lieberman, 1995, str. 83):

1. Vsaka od ekstremnih točk dopustnih rešitev našega primera leži na presečišču dveh pogojev; če bi imeli n odločitvenih spremenljivk, bi vsaka taka točka ležala na presečišču n pogojev.

2. Nekatera oglišča so si sosednja in nekatera ne. Da sta si dve oglišči sosednji, si morata deliti vsaj n-1 mej pogojev. V našem primeru z dvema odločitvenima spremenljivkama sta si oglišči sosednji, če imata tako vsaj eno skupno omejitev; točka M(0,0) ima tako dve sosednji oglišči – točko N(4,0), s katero si deli pogoj x2 = 0, in točko T(0,6), s katero si deli pogoj x1 = 0.

V vsakem oglišču lahko naredimo "test optimalnosti" na ta način, da preverimo, če ima katerokoli sosednje oglišče boljšo vrednost namenske funkcije (večjo oz. manjšo pri maksimizacijskem oz. minimizacijskem LP). Če ga nima, je oglišče, v katerem se nahajamo, optimalna rešitev LP (Hillier in Lieberman, 1995, str. 83).

Page 26: Izboljšanje standardne simpleks metode z algoritmom za ... metoda namreč uvaja umetne in dopolnilne spremenljivke, da začetni linearni program prevede v standardno obliko, primerno

20

Simpleks metoda, aplicirana na konkretnem numeričnem primeru12 maksimizacije namenske funkcije prihodkov:

21 53 xxC +=

pri proizvodnih in tržnih pogojih:

18231224

21

2

1

≤+≤≤

xxx

x

in pogojih nenegativnosti:

01 ≥x , 02 ≥x

bi torej potekala na naslednji način (Hillier in Lieberman, 1995, str. 83):

1. Začetek – izberemo si začetno oglišče M(0,0), saj zanj ni potrebnih nobenih kalkulacij (vrednosti odločitvenih spremenljivk xi postavimo na 0).

2. Test optimalnosti – M(0,0) ni optimalna rešitev, saj imata sosednji oglišči (N in T) večjo vrednost namenske funkcije.

3. Premik – v tisto oglišče, ki bolj poveča vrednost namenske funkcije, torej v T(0,6), kjer se C spremeni za 30 (če bi se premaknili v N(4,0), bi bila sprememba vrednosti namenske funkcije C le za 12). Do oglišča pridemo tako, da rešimo sistem enačb, ki opredeljujejo meje v tem oglišču: x1 = 0 in 2x2 = 12.

4. Ker smo v novem oglišču, izvedemo test optimalnosti. T(0,6) ni optimalna rešitev, saj ima sosednje oglišče R(2,6) večjo vrednost namenske funkcije.

5. Premik v "boljše" oglišče: R(2,6). Do oglišča pridemo tako, da rešimo sistem enačb 2x2 = 12 in 3x1 + 2x2 = 18.

6. Zaradi premika v novo oglišče ponovno izvedemo test optimalnosti – nobeno od sosednjih oglišč (T ali P) nima večje vrednosti namenske funkcije, zato je rešitev optimalna.

12 Primer je bil grafično rešen v točki 2.4.2 na strani 13; povzet in prirejen je po (Hillier, Lieberman, 1995, str. 26-31).

Page 27: Izboljšanje standardne simpleks metode z algoritmom za ... metoda namreč uvaja umetne in dopolnilne spremenljivke, da začetni linearni program prevede v standardno obliko, primerno

21

Slika 3: Reševanje LP s standardno simpleks metodo

Vir: Hillier in Lieberman, 1995, str. 83.

Podrobnejši opis simpleks metode, ki bo omogočal tudi reševanje realnejših problemov (z več kot dvema odločitvenima spremenljivkama ter tudi s pogoji tipa (=) in (≥)), je prikazan v naslednjem razdelku (3.2). Algoritem standardne simpleks metode v grobem prikazuje slika 4.

Page 28: Izboljšanje standardne simpleks metode z algoritmom za ... metoda namreč uvaja umetne in dopolnilne spremenljivke, da začetni linearni program prevede v standardno obliko, primerno

22

Slika 4: Potek standardne simpleks metode

Vir: Prirejeno po Hillier in Lieberman, 1995; Stevenson, 1992; Vadnal, 1977; Winston, 1994.

3.2 REŠEVANJE LP S STANDARDNO SIMPLEKS METODO

Miminizirajmo namensko funkcijo stroškov (Vadnal, 197713):

4321 5862 xxxxC +++=

pri omejitvah:

120424045280224

432

421

4321

≥++≥++≥+++

xxxxxxxxxx

in pogojih nenegativnosti:

01 ≥x , 02 ≥x , 03 ≥x , 04 ≥x

13 Primer je v analizi reševanja LP v šestem poglavju označen kot "Primer 09" in ga uporabimo tudi v naslednjih dveh poglavjih pri zgledu reševanja LP z algoritmom za zoženje tabele simpleksov (str. 47) in z metodo Potisni in povleci (str. 68).

Page 29: Izboljšanje standardne simpleks metode z algoritmom za ... metoda namreč uvaja umetne in dopolnilne spremenljivke, da začetni linearni program prevede v standardno obliko, primerno

23

3.2.1 Standardna oblika

Simpleks metoda zahteva, da je LP, ki ga rešujemo, preveden v tako imenovano standardno obliko. Le-ta zahteva, da (Dantzig, 1963; Hillier in Lieberman, 1995):

1. so pogoji zapisani v obliki enačb (in ne neenačb). Pri tem nam pogojev nenegativnosti ni potrebno pretvarjati v enačbe, saj je pogoj nenegativnosti splošna predpostavka;

2. je vektor desnih strani omejitev (bi) nenegativen;

3. so odločitvene spremenljivke (xi) nenegativne;

4. je namenska funkcija maksimizacijskega tipa.

Da bi naš primer "prevedli" v obliko, primerno za ročno reševanje14 po standardni metodi simpleksov, moramo:

3.2.1.1 Pogoje v obliki neenačb pretvoriti v enačbe.

To naredimo z uvedbo tako imenovanih dopolnilnih spremenljivk. Če imamo prvo neenačbo

11212111 bxaxaxa ss ≥⋅++⋅+⋅ K

oziroma

80224 4321 ≥+++ xxxx

je lahko leva stran večja od desne. Zato moramo morebitni pribitek odšteti od leve strani in neenačba preide v enačbo:

111212111 bxxaxaxa sss =−⋅++⋅+⋅ +K

oziroma

80224 54321 =−+++ xxxxx

S tem, ko smo dodali dopolnilno spremenljivko xs+1 k pogojem, jo moramo upoštevati tudi v namenski funkciji. Ker pa nova spremenljivka nič ne prispeva k namenski funkciji, je njen koeficient cs+1 enak 0:

112211 ++ ⋅+⋅++⋅+⋅= ssss xcxcxcxcC K

14 Poudarek je na ročnem reševanju; velika večina danes obstoječih računalniških aplikacij, ki so namenjene reševanju LP, podpira vnos LP v poljubni obliki.

Page 30: Izboljšanje standardne simpleks metode z algoritmom za ... metoda namreč uvaja umetne in dopolnilne spremenljivke, da začetni linearni program prevede v standardno obliko, primerno

24

oziroma

54321 05862 xxxxxC ⋅+⋅+⋅+⋅+⋅=

Namenska funkcija se tako dejansko ne spremeni.

Enak postopek ponovimo še za ostale neenačbe in jih prevedemo v enačbe:

120424045280224

7432

6421

54321

=−++=−++=−+++

xxxxxxxx

xxxxx

pri čemer se namenska funkcija, kot smo že ugotovili, ne spremeni, saj so koeficienti pri vseh dopolnilnih spremenljivkah enaki 0.

V primeru, da bi imeli neenačbo s pogojem (≤), bi morali upoštevati, da je lahko leva stran manjša od desne; tako bi dopolnilno spremenljivko prišteli in ne odšteli, kot to storimo v primeru neenačbe s pogojem (≥).

3.2.1.2 Dopolniti LP z umetnimi spremenljivkami.

Spremenjeni in z dopolnilnimi spremenljivkami obogaten LP še ni primeren za numerično obdelavo. Pogoje z (=) in (≥) omejitvami moramo dopolniti z umetnimi spremenljivkami, saj sicer ne moremo najti oglišča, v katerem začnemo z iteracijami simpleksa (Hillier in Lieberman, 1995, str. 104).

a. Pri prvi enačbi prištejemo k levi strani umetno spremenljivko xs+m+1.

1111212111 bxxxaxaxa mssss =+−⋅++⋅+⋅ +++K

oziroma

80224 854321 =+−+++ xxxxxx

b. Namensko funkcijo dopolnimo z novo spremenljivko, in sicer ji predpišemo koeficient cs+m+1:

11112211 ++++++++ ⋅+⋅++⋅+⋅++⋅+⋅= msmsmsmsssss xcxcxcxcxcxcC KK

"Če predpišemo koeficientu cs+m+1 dovolj veliko vrednost M15, lahko dosežemo, da ima namenska funkcija minimum le tedaj, kadar ima umetna spremenljivka xs+m+1 vrednost 0. Ker dobimo zaradi tega pri optimalni rešitvi LP v vsakem primeru xs+m+1=0, se prva linearna enačba spremeni le navidezno, ne da bi se pri tem spremenila optimalna rešitev LP," (Vadnal, 1977, str. 49).

15 Temu postopku rečemo metoda "Velikega M".

Page 31: Izboljšanje standardne simpleks metode z algoritmom za ... metoda namreč uvaja umetne in dopolnilne spremenljivke, da začetni linearni program prevede v standardno obliko, primerno

25

Tako po vpeljavi umetne spremenljivke (in dopolnilnih spremenljivk iz prve točke) za prvo neenačbo dobimo naslednjo namensko funkcijo:

87654321 0005862 xMxxxxxxxC ⋅+⋅+⋅+⋅+⋅+⋅+⋅+⋅=

Enako storimo še pri ostalih pogojih z (=) in (≥) omejitvami. Umetne spremenljivke x8, x9 in x10 služijo za določitev izhodiščne bazne dopustne rešitve.

Za boljše razumevanje Tabela 1 povzema uporabo dopolnilnih in dodatnih spremenljivk pri pretvarjanju neenačb v enačbe.

Tabela 1: Uporaba dopolnilnih in umetnih spremenljivk pri pretvarjanju neenačb v enačbe LP

Tip omejitve Pretvorba v standardno obliko

≤ Prištej dopolnilno spremenljivko.

= Prištej umetno spremenljivko in zanjo postavi v namenski funkciji vrednost koeficienta na M.

≥ Odštej dopolnilno in prištej umetno spremenljivko; za umetne spremenljivke postavi v namenski funkciji vrednost koeficienta na M.

Vir: Stevenson, 1993, str. 177.

3.2.1.3 Namensko funkcijo iz minimizacijskega pretvoriti v maksimizacijski tip.

To naredimo tako, da obstoječo namensko funkcijo C pri kalkulacijah enostavno pomnožimo z -1.

Minimizacija, ko imamo dodane še dopolnilne (s koeficientom 0) in umetne (s koeficientom M) spremenljivke

∑=

⋅=n

jjj xcC

1; (j=1,…,s; s+1,…,s+m; s+m+1,…,s+2m=n)16

oziroma

111094321 5862 MxMxMxxxxxC ++++++=

je namreč enaka maksimizaciji

∑=

⋅−=−n

jjj xcC

1)(

16 Ta oblika velja za tiste LP, pri katerih uvedemo za vse neenačbe pogojev tako dopolnilne kot umetne spremenljivke!

Page 32: Izboljšanje standardne simpleks metode z algoritmom za ... metoda namreč uvaja umetne in dopolnilne spremenljivke, da začetni linearni program prevede v standardno obliko, primerno

26

oziroma

111094321 5862 MxMxMxxxxxC −−−−−−−=−

saj manjši ko je C, večji je -C. Torej rešitev, ki da najmanjšo vrednost C v območju dopustnih rešitev, da tudi največjo vrednost –C v tem območju.

Po uvedbi dopolnilnih spremenljivk, s katerimi pretvorimo neenačbe v enačbe, in uvedbi umetnih spremenljivk, s katerimi dobimo izhodiščno bazno možno rešitev, lahko zapišemo tako imenovano razširjeno formulacijo LP17 (Vadnal, 1977, str. 81):

Minimiziraj18

∑=

⋅=n

jjj xcC

1

oziroma

111094321 1010105862 xxxxxxxC ++++++=

pri pogojih nenegativnosti

0≥jx

in funkcionalnih pogojih

mnmssmsmm

mssss

bxxxaxaxa

bxxxaxaxa

=+−⋅++⋅+⋅

=+−⋅++⋅+⋅

+

+++

K

KKKKKKKKKKKKK

K

2211

1111212111

oziroma

120424045280224

107432

96421

854321

=+−++=+−++=+−+++

xxxxxxxxxx

xxxxxx

Ko imamo LP formuliran, se lahko lotimo iskanja optimalne rešitve. Najprej moramo določiti začetno oglišče.

17 angl.: Augmented form 18 Še vedno je zapisana minimizacijska oblika, saj je za maksimiranje potrebno le pomnožiti namensko funkcijo z –1 in je tako primerna za avtomatsko preračunavanje npr. s pomočjo računalniške aplikacije.

Page 33: Izboljšanje standardne simpleks metode z algoritmom za ... metoda namreč uvaja umetne in dopolnilne spremenljivke, da začetni linearni program prevede v standardno obliko, primerno

27

3.2.2 Določitev začetnega oglišča

Že pri splošnem opisu simpleks metode v točki 3.1 smo definirali pojma bazna in bazna dopustna rešitev. Ugotovili smo, da je simpleks metoda iterativen postopek obiskovanja baznih možnih rešitev, ki se nahajajo na presečiščih premic omejitev (in ustrezajo vsem omejitvam), niso pa nujno optimalne.

Do teh ekstremnih točk (oglišč) pridemo z reševanjem sistema linearnih enačb, ki ga tvorijo enačbe omejitev. V teoriji linearnega programiranja ima pomembno vlogo število neodvisnih pogojnih enačb m. Zaradi dodajanja umetnih in dopolnilnih spremenljivk ima namreč vsak LP več spremenljivk (n) kot je število enačb (m), kar pomeni, da pri reševanju sistema enačb ne moremo priti do ene same rešitve, dokler števila spremenljivk in števila enačb ne izenačimo. To naredimo tako, da n-m spremenljivk postavimo na 0 oziroma jih, povedano drugače, izvržemo iz sistema enačb. Tistim spremenljivkam, ki ostanejo v sistemu enačb, ki ga rešujemo, rečemo bazne spremenljivke, ostalim pa nebazne spremenljivke. Dve pomembni lastnosti baznih dopustnih rešitev sta (Stevenson, 1992, str. 133):

1. Bazne spremenljivke nastopajo le v eni enačbi s koeficientom 1, v ostalih pa imajo koeficient enak 0 (oz. v njih ne nastopajo).

2. Vektor desnih strani enačb je nenegativen.

Ko nato sistem rešimo, dobimo eno izmed baznih rešitev, ki – kot sedaj že vemo – "stoji" na enem izmed presečišč pogojev, ni pa nujno, da ustreza vsem omejitvam; tudi če je bazna rešitev možna, ni nujno, da je optimalna. Nas seveda zanimajo le možne rešitve, in če lahko začnemo postopek iskanja optimalne rešitve pri katerikoli možni rešitvi, bo simpleks generiral ostale bazne dopustne rešitve.

"Na to [lastnost simpleksa] lahko pomislite tudi takole: zamislite si hišo z veliko sobami, v le eni izmed njih pa se nahajajo vse dopustne rešitve. Če simpleksu pokažemo to sobo, bo izmed dopustnih našel optimalno rešitev," (Stevenson, 1992, str. 132).

V primeru, da gre za sistem brez umetnih spremenljivk, za začetne bazne spremenljivke izberemo kar dopolnilne spremenljivke, ki smo jih dobili, ko smo v prejšnjem koraku pretvarjali neenačbe v enačbe. Začetna bazna dopustna rešitev je tako

;0,...,01 == sxx mmss bxbx == ++ ,...,11

v kateri je vrednost namenske funkcije

02211 =⋅++⋅++⋅+⋅= ++ msmsss xcxcxcxcC KK

saj so pri njej koeficienti dopolnilnih spremenljivk enaki 0. To je smiselno, saj iščemo maksimum namenske funkcije, najlažje pa je začeti "iz ničle".

Page 34: Izboljšanje standardne simpleks metode z algoritmom za ... metoda namreč uvaja umetne in dopolnilne spremenljivke, da začetni linearni program prevede v standardno obliko, primerno

28

Pri LP, ki vključuje umetne spremenljivke, je stvar kompleksnejša. Da bi dobili začetno bazno možno rešitev, v obravnavanem razširjenem LP

120424045280224

107432

96421

854321

=+−++=+−++=+−+++

xxxxxxxxxx

xxxxxx

prvih sedem (n-m=10-3) spremenljivk postavimo na nič in dobimo rešitev, ki zadošča vsem pogojem; to je rešitev:

mnmsmsss bxbxxxxx ====== ++++ ,...,;0,...,0;0,...,0 1111

oziroma

120 ;40 ;80 ;0 , ... , 0 109871 ===== xxxxx

oziroma

[ 0 0 0 0 0 0 0 80 40 120 ] 19

S tem smo dobili bazno možno rešitev, ki jo uporabimo za začetno rešitev. Zanjo izračunamo še vrednost namenske funkcije stroškov

109876543211

0005862 xMxMxMxxxxxxxxcCn

jjj ⋅+⋅+⋅+⋅+⋅+⋅+⋅+⋅+⋅+⋅=⋅= ∑

=

10=M

oziroma

400.2120104010801000000005080602 =⋅+⋅+⋅+⋅+⋅+⋅+⋅+⋅+⋅+⋅=C

Koeficientom umetnih spremenljivk moramo pri minimizacijskem LP dati čim večjo vrednost, da začetna rešitev ne bi bila optimalna; v našem primeru znaša 2.400. Sestavljena je namreč iz umetnih spremenljivk, ki se v optimalni rešitvi ne smejo pojavljati.

"Umetnim spremenljivkam smo v namenski funkciji dali koeficient M=10, ker je 10 dovolj veliko število, da nobena od umetnih spremenljivk ne pride s pozitivno vrednostjo v optimalno možno rešitev," (Vadnal, 1977, str. 81).

Prvi korak – določitev začetne bazne možne rešitve – naredimo le enkrat, da lahko začnemo s proceduro simpleks metode. V našem primeru znaša vrednost namenske funkcije pri začetnem oglišču 2.400, kar ni optimalna rešitev. Naslednji korak je torej premik v takšno možno rešitev, ki ima boljšo vrednost namenske funkcije.

19 Vidimo, da ima, kljub temu, da rešujemo sistem enačb le z m spremenljivkami in enačbami, kompletna rešitev n komponent zaradi privzema dopolnilnih in umetnih spremenljivk.

Page 35: Izboljšanje standardne simpleks metode z algoritmom za ... metoda namreč uvaja umetne in dopolnilne spremenljivke, da začetni linearni program prevede v standardno obliko, primerno

29

3.2.3 Zamenjava baze

Če obstoječa možna rešitev ni optimalna (če torej še nismo v končnem oglišču), se moramo premakniti v drugo (sosednje) oglišče, ki ima boljšo vrednost namenske funkcije. To storimo tako, da enega od baznih vektorjev zamenjamo z nekim drugim vektorjem, ki ga v bazi še ni; "sosednje oglišče se od prvotnega razlikuje natanko v eni spremenljivki," (Feiring, 1986, str. 38). Ker je sosednjih oglišč več, mora metoda izbrati tisto oglišče, v kateri je vrednost namenske funkcije manjša oz. večja pri minimizacijskih oz. maksimizacijskih LP. In, ne le to, izboljšava mora biti pri premiku v novo oglišče, glede na vsa oglišča, ki izboljšajo vrednost namenske funkcije, največja. Tej izboljšavi nekateri avtorji (npr. Feiring, 1986, str. 39) pravijo "relativni profit", njegovo vrednost pa dobimo tako, da preverimo, kako se ob povečanju vsake nebazne spremenljivke spremeni (na bolje) vrednost namenske funkcije. Če izboljšava ni možna, pomeni, da je trenutna rešitev optimalna.

Pri nadaljni razlagi si pomagamo s tabelaričnim zapisom LP, tako imenovano tabelo simpleksov, ki jo prikazuje spodnja tabela.

Tabela 2: Tabela simpleksov

nkj cccc LLL1

nkj xxxx LLL1

0P nkj PPPP LLL1

prvotna baza

m

r

i

c

c

c

c

M

M

M1

m

r

i

P

P

P

P

M

M

M

1

0

0

0

101

mm

rr

ii

ax

ax

ax

ax

=

=

=

=

M

M

M

mnmkmjm

rnrkrjr

inikiji

nkj

aaaa

aaaa

aaaa

aaaa

LLL

MMMM

LLL

MMMM

LLL

MMMM

LLL

1

1

1

11111

jjjm cza −=+ ,1 0z nnkkjj czczczcz −−−− LLL11

Vir: Vadnal, 1977, str. 64.

Pri zamenjavi baze (premiku v sosednje oglišče) je potrebno ugotoviti, kateri nebazni vektor postane bazni vektor (recimo mu Pk) in kateri bazni postane nebazni (recimo mu Pr), da bi našli oglišče, v katerem je namenska funkcija bliže optimalni. Z drugimi besedami, iščemo vektor Pk, ki ga uvedemo v novo bazo in vektor Pr, ki ga odstranimo iz baze. Pri tem moramo upoštevati, za koliko se zmanjša (minimizacijski LP) oz. poveča (maksimizacijski LP) namenska funkcija. Relativni profit za vsako spremenljivko izračunamo tako, da uvedemo v ta namen nove količine

mjmjj acacz ++⋅= K11

Page 36: Izboljšanje standardne simpleks metode z algoritmom za ... metoda namreč uvaja umetne in dopolnilne spremenljivke, da začetni linearni program prevede v standardno obliko, primerno

30

Relativni profit je tem večji, čim večja je diferenca zj-cj (Vadnal, 1977, str. 68-70).

Za naš primer bi bila začetna tabela simpleksov takšna (Tabela 3):

Tabela 3: Začetna tabela simpleksov za obravnavani LP

cj 2 6 8 5 10 10 10

ci P0 P1 P2 P3 P4 P5 P6 P7 P8 P9 P10

10 P8 4 1 2 2 -1 1

10 P9 2 5 4 -1 1

10 P10 2 4 1 -1 1

zj - cj 2.400 58 74 52 65 -10 -10 -10

Vir: Vadnal, 1977, str. 82.

3.2.3.1 Izbira vektorja Pk

Če gre za minimizacijski LP, kjer iščemo minimum namenske funkcije, določimo v zadnji vrstici20 največje pozitivno število v skladu z enačbo (Vadnal, 1977, str. 77):

)(max jjjkk czcz −=−

temu številu pa ustreza vektor Pk, ki ga uvedemo v novo bazo.

Če gre za maksimizacijski LP, kjer iščemo maksimum namenske funkcije, določimo v zadnji vrstici po absolutni vrednosti največje negativno število; temu številu pa ustreza vektor Pk, ki ga uvedemo v novo bazo (Vadnal, 1977, str. 77). Ta način velja seveda le takrat, ko preračune opravljamo ročno; to v praksi večinoma delamo s pomočjo računalniških rešitev, ki – kot smo ugotovili že v točki 3.2.1.3 – maksimizacijski LP pretvorijo v minimizacijskega tako, da namensko funkcijo pomnožijo z -1. To za določitev vektorja Pk pomeni, da je vseeno, če imamo v začetni obliki maksimizacijski ali minimizacijski LP – v obeh primerih izberemo Pk tako, kot je to navedeno v prejšnjem odstavku, da torej določimo v zadnji vrstici največje pozitivno število.

V obravnavanem LP izberemo vektor P2 (k je torej 2) in ga uvedemo v bazo, saj je 74 največje pozitivno število v zadnji vrstici (gl. Tabela 5: Tabela simpleksov po prvi iteraciji, str. 32).

20 Gre za "dodatno" vrstico am+1,j.

Page 37: Izboljšanje standardne simpleks metode z algoritmom za ... metoda namreč uvaja umetne in dopolnilne spremenljivke, da začetni linearni program prevede v standardno obliko, primerno

31

3.2.3.2 Izbira vektorja Pr

Vektor, ki ga odstranimo iz baze, določimo tako, da vsako komponento vektorja P0 delimo z istoležno komponento vektorja Pk, pri tem pa upoštevamo le pozitivne komponente vektorja Pk. Najmanjši od teh ulomkov določa v skladu z enačbo

ik

i

irk

r

aP

aP 0

min==Θ ; )0( >ika ; )0(0

ik

i

aP

≤Θ<

vektor Pr, ki ga odstranimo iz prvotne baze (Vadnal, 1977, str. 77).

V obravnavanem primeru iz baze odstranimo vektor P9 (r je torej 9), saj: (80/1=80; 40/5=8; 120/2=60) (gl. Tabela 5: Tabela simpleksov po prvi iteraciji, str. 32).

Tabela 4: Iteracija pri metodi simpleksov

nkj cccc LLL1

nkj xxxx LLL1

0P nkj PPPP LLL1

prvotna baza

m

r

i

c

c

c

c

M

M

M1

m

r

i

P

P

P

P

M

M

M

1

0

0

0

101

mm

rr

ii

ax

ax

ax

ax

=

=

=

=

M

M

M

mnmkmjm

rnrkrjr

inikiji

nkj

aaaa

aaaa

aaaa

aaaa

LLL

MMMM

LLL

MMMM

LLL

MMMM

LLL

1

1

1

11111

jjjm cza −=+ ,1 0z nnkkjj czczczcz −−−− LLL11

nova baza

m

k

i

c

c

c

c

M

M

M1

m

k

i

P

P

P

P

M

M

M

1

'0

'0

'0

'10

m

r

i

a

a

a

a

M

M

M

''''1

''''1

''''1

'1

'1

'1

'11

mnmkmjm

rnrkrjr

inikiji

nkj

aaaa

aaaa

aaaa

aaaa

LLL

MMMM

LLL

MMMM

LLL

MMMM

LLL

'',1 )( jjjm cza −=+ '

0z ''''11 )()()()( nnkkjj czczczcz −−−− LLL

Vir: Vadnal, 1977, str. 64.

Page 38: Izboljšanje standardne simpleks metode z algoritmom za ... metoda namreč uvaja umetne in dopolnilne spremenljivke, da začetni linearni program prevede v standardno obliko, primerno

32

3.2.3.3 Premik v novo rešitev

Ko odstranimo iz prvotne baze vektor Pr in ga zamenjamo z vektorjem Pk, se spremenijo koeficienti LP, kakor prikazuje Tabela 4. Novi bazi ustreza spodnji del tabele; v njem so transformirani koeficienti zaznamovani s črticami (Vadnal, 1977, str. 63).

Pri premiku v novo rešitev igra pomembno vlogo koeficient matrike A, ki se nahaja na presečišču vhodnega in izhodnega vektorja (ark). Imenujemo ga ključni koeficient ali pivot (Bronštejn, Semendjajev, 1997, str. 685).

Koeficiente prvotne baze transformiramo v nove po transformacijskem zakonu (Vadnal, 1977, str. 77):

1. Koeficiente v vrstici, ki ustreza odstranjenemu vektorju Pr, delimo s ključnim koeficientom ark:

rk

rjrj a

aa ='

2. Koeficiente v vseh drugih vrsticah transformiramo po transformacijskem zakonu:

ikrk

rjijij a

aa

aa ⋅−='

; )( ri ≠

Tabela 5 prikazuje tabelo simpleksov po prvi iteraciji.

Tabela 5: Tabela simpleksov po prvi iteraciji

cj 2 6 8 5 10 10 10

ci P0 P1 P2 P3 P4 P5 P6 P7 P8 P9 P10

10 P8 80 4 1 2 2 -1 1

10 P9 40** 2 5*** 4 -1 1

10 P10 120 2 4 1 -1 1

zj - cj 2.400 58 74* 52 65 -10 -10 -10

* uvedemo P2, saj je 74 največji ** odstranimo P9, saj je (40/5=8) < (120/2=60) < (80/1=80) *** ključni koeficient ark = 5

Iteracija 1

cj 2 6 8 5 10 10 10

ci P0 P1 P2 P3 P4 P5 P6 P7 P8 P9 P10

10 P8 72 3,6 2 1,2 -1 0,2 1 -0,2

6 P2 8 0,4 1 0,8 -0,2 0,2

10 P10 104 -0,8 4 -0,6 0,2 -1 -0,4 1

zj - cj 1.808 28,4 52 5,8 -10 4,8 -10

Vir: Vadnal, 1977, str. 82.

Page 39: Izboljšanje standardne simpleks metode z algoritmom za ... metoda namreč uvaja umetne in dopolnilne spremenljivke, da začetni linearni program prevede v standardno obliko, primerno

33

3.2.3.4 Problem degeneracije

V procesu iteracije – gradnje nove tabele simpleksov – je potrebno identificirati vektor, ki ga (ker rešitev še ni optimalna) odstranimo iz tabele simpleksov. To naredimo tako, da vsako komponento vektorja P0 delimo z istoležno komponento vektorja Pk, pri čemer iščemo najmanjši (še pozitivni) koeficient. V primeru degeneracije najdemo takšnih koeficientov več, kar pomeni, da vektor Pr, ki ga odstranjujemo iz baze, ni enolično določen. Problem, ki zaradi tega lahko nastane, je "vrtenje v krogu"21, ki zaradi ponavljajočih se baznih vektorjev v zaporednih iteracijah onemogoči končanje algoritma oz. najdbo optimalne rešitve.

Obstoječa literatura obravnava problem degeneracije in (ne)končnosti simpleks algoritma različno: nekateri avtorji (npr. Stevenson, 1992, str. 155; Hillier, Lieberman, 1995, str. 101) menijo, da je pojav degeneracije redek, če pa že nastopi, za njegovo "razrešitev" ni potreben noben poseben postopek – svetujejo namreč, da je med enakimi (najmanjšimi) koeficienti poljubno izbran eden (katerikoli) izmed njih. Drugi pa za takšne primere predlagajo posebne postopke in algoritme (npr. Vadnal, 1977; Vanderbei, 1997; Padberg, 1999; P.Q. Pan, 1998), s katerimi naj bi se zagotovila končnost simpleks algoritma. Med bolj znane postopke razreševanja degeneracije v okviru simpleks metode sodijo Blandovo pravilo (Bland, 1977), metoda motenj22 (Charnes, 1952; opisana v Vadnal, 1977; in Vanderbei, 1997) in leksikografska metoda23 (Dantzig, Orden, Wolfe, 1955; opisana tudi v Vanderbei, 1997).

3.2.4 Test optimalnosti

Z zamenjavo baze se premaknemo v drugo bazno možno rešitev oz. oglišče. Sledi seveda test optimalnosti – ali je možno trenutno rešitev še izboljšati ali ne. Izboljšava je možna (v primeru minimuma namenske funkcije), če je še kak koeficient v zadnji vrstici pozitiven.

Če je izboljšava možna, iteracijo ponovimo; če izboljšava ni možna, je dobljena rešitev optimalna. V našem primeru Tabela 5 prikazuje, da so izboljšave še možne; zadnja vrstica namreč vsebuje pozitivne koeficiente.

Tabela 6 prikazuje še preostanek postopka reševanja obravnavanega LP. Iz nje preberemo, da je optimalna rešitev

2765

3

2

1

===

xxx

21 angl.: cycling 22 angl.: Perturbation method, (Vanderbei, 1997, str. 29). 23 angl.: Lexicographic method, (Vanderbei, 1997, str. 29).

Page 40: Izboljšanje standardne simpleks metode z algoritmom za ... metoda namreč uvaja umetne in dopolnilne spremenljivke, da začetni linearni program prevede v standardno obliko, primerno

34

in ob upoštevanju, da je vrednost spremenljivke x4 = 0, je vrednost namenske funkcije minimalna:

2620527866525862 4321 =⋅+⋅+⋅+⋅=⋅+⋅+⋅+⋅= xxxxC .

Tabela 6: Preostanek postopka reševanja obravnavanega LP

Iteracija 2

cj 2 6 8 5 10 10 10

ci P0 P1 P2 P3 P4 P5 P6 P7 P8 P9 P10

10 P8 20 4 1,5 -1 0,5 1 -0,5

6 P2 8 0,4 1 0,8 -0,2 0 0,2

8 P3 26 0,2 1 -0,15 0,1 -0,25 -0,1 0,25

zj - cj 456 38,8 13,6 -10 -0,4 3 -9,6 -13

Iteracija 3

cj 2 6 8 5 10 10 10

ci P0 P1 P2 P3 P4 P5 P6 P7 P8 P9 P10

2 P1 5 1 0,375 -0,25 0,125 0,25 -0,125

6 P2 6 1 0,65 0,1 -0,2 -0,05 -0,1 0,2 0,05

8 P3 27 1 -0,075 -0,05 0,1 -0,225 0,05 -0,1 0,225

zj - cj 262 -0,949 -0,3 -0,4 -1,85 -9,7 -9,6 -8,15

Vir: Lastni izračuni in Vadnal, 1977, str. 82.

3.3 IZBOLJŠAVE IN IZPELJANKE STANDARDNE SIMPLEKS METODE

Že pri obravnavi problema degeneracije v točki 3.2.3.4 je postalo jasno, da standardna simpleks metoda, kot jo je zastavil Dantzig (Dantzig, 1963), predstavlja le osnovo za reševanje LP, iz katere so se sčasoma razvile različne izpeljanke in izboljšave, ki v okviru metode simpleks rešujejo specifične probleme, do katerih lahko pride pri reševanju praktičnih problemov linearnega programiranja. Izboljšave bi vsebinsko lahko razvrstili glede na del algoritma standardne simpleks metode, ki je spremenjen ali izboljšan. Učinkovitost algoritma v smislu računske kompleksnosti pa je možno izboljšati predvsem v dveh točkah: pri izbiri začetne bazne možne rešitve (kje začne simpleks metoda iskanje optimalne rešitve) in pri načinu iskanja optimalne rešitve (kako algoritem izbere-izračuna boljše sosednje oglišče).

Metoda "Velikega M"24 v nekaterih primerih tako npr. sploh ne daje začetne bazne možne rešitve. Kot alternativo so razvili dvofazno simpleks metodo25, ki v prvi fazi rešuje LP, pri

24 angl.: Big M method.

Page 41: Izboljšanje standardne simpleks metode z algoritmom za ... metoda namreč uvaja umetne in dopolnilne spremenljivke, da začetni linearni program prevede v standardno obliko, primerno

35

kateri originalno namensko funkcijo nadomestimo s funkcijo vsote umetnih spremenljivk. Od rezultata prve faze je nato odvisno, če sploh obstaja kakšna možna rešitev LP. V drugi fazi nato ponovno vpeljemo originalno namensko funkcijo in poiščemo optimalno rešitev (več v Winston, 1993, str. 170).

Kar se tiče reševanja problema degeneracije smo že omenili Blandovo pravilo (Bland, 1977), metodo motenj (Charnes, 1952) in leksikografsko metodo (Dantzig, Orden, Wolfe, 1955).

Posebno pri načinu iskanja optimalne rešitve je bilo narejeno veliko26. Že kmalu po prvih uporabah reševanja LP v praksi se je namreč pokazalo, da je včasih simpleks časovno (preveč) potraten. Klee in Minty (Klee, Minty, 1972) sta dokazala, da simpleks potrebuje eksponencialno mnogo korakov za rešitev nekaterih LP. Zaradi tega danes obstajata dve družini reševanja linearnih programov: simpleksne metode (z izpeljankami) in metode notranjih točk; obema je še vedno skupno to, da iterativno iščeta postopno izboljšane rešitve, dokler ne najdeta optimalne27.

Med prve prištevamo npr.

- Revidirano simpleks metodo28, ki izhaja iz dejstva, da standardna simpleks metoda v vsaki iteraciji v tabeli simpleksov shranjuje veliko nepotrebnega balasta, ki ga ne potrebuje v trenutni iteraciji, včasih pa niti za kasnejšo odločitev o optimalni rešitvi ne:

"Edine potrebne in relevantne informacije v vsaki iteraciji so koeficienti nebaznih spremenljivk v namenski funkciji, koeficienti vhodne spremenljivke v omejitvenih (ne)enačbah in desne strani omejitev," (Hillier, Lieberman, 1995, str. 166).

Tako metoda shranjuje le omenjene informacije, ostale podatke pa "prenaša med iteracijami v bolj kompaktni obliki", (Hillier, Lieberman, 1995, str. 166); za shranjevanje potrebnih podatkov potrebuje le matriko velikosti m × m namesto m × n.

- Metoda generiranja stolpcev za velike LP29, ki se uporablja predvsem na področju dvodimenzionalnega razreza30, je dobra pri LP z mnogo spremenljivkami.

25 angl.: Two-Phase Simplex Method. 26 Za podroben pregled literature in dosežkov na tem področju gl. (Terlaky, Zhang, 1993). 27 Obstaja sicer še družina elipsoidnih metod, ki jo je kot pozitivni odgovor na vprašanje Klee-ja in Minty-ja, če so problemi linearne optimizacije sploh rešljivi v polinomskem času, razvil Khacijan (Khacijan, 1979). Toda ker "elipsoidne metode računsko dejansko niso konkurenčne simpleksu … saj se v praksi LP s simpleksom rešujejo dosti boljše kot v teoretično najslabšem primeru (eksponencialno), z elipsoidnimi metodami pa zelo blizu le-tega" (Illes, Terlaky, 2002, str. 171), jih bomo izpustili iz nadaljne obravnave. 28 angl.: Revised Simplex Method; več o metodi v (Gass, 1985; Hillier, Lieberman, 1995; Winston, 1993). 29 angl.: Column-generation for large-scale LP's, (Gilmore, Gomory, 1961). 30 angl.: Cutting stock problem.

Page 42: Izboljšanje standardne simpleks metode z algoritmom za ... metoda namreč uvaja umetne in dopolnilne spremenljivke, da začetni linearni program prevede v standardno obliko, primerno

36

- Metoda simpleksov za spremenljivke z zgornjo mejo31 je izpeljanka simpleksa, prirejena za uporabo pri tistih LP, v katerih imajo vse ali vsaj nekaj posamičnih spremenljivk zgornje meje, npr. xj ≤ uj

32. Ideja temelji na tem, da je z vsako novo funkcionalno omejitvijo v LP potrebno povečati računske napore (z vpeljavo dodatnih spremenljivk), število nenegativnostnih omejitev za posamične spremenljivke pa je relativno nepomembno. Tako je novost v tem, da omejitve "navzgor" (≤) tretira kot nenegativnostne omejitve in s tem seveda zmanjša kompleksnost LP.

- Dantzig-Wolfe algoritem dekompozicije33 rešuje LP na "sistemski" način, s pomočjo razbitja kompleksnega problema na več manjših, bolje obvladljivih problemov. Toda ker računska kompleksnost v smislu števila iteracij logaritmično raste s številom spremenljivk, je prvi vtis pri primerjavi standardne simpleks metode in algoritma dekompozicije takšen, da je simpleks hitrejši.

"Toda simpleks je hitrejši pri problemih, ki jih sploh lahko reši. Natančneje, ker praktični primeri LP dosegajo velike kompleksnosti, so pogosto neprimerni za reševanje zaradi premajnih računalniških zmogljivosti. Z dekompozicijo pa lahko rešujemo manjše probleme postopoma, katerih rešitve nato končno združimo in dobimo rešitev izvirnega LP," (Chvatal, 1983, str. 441).

Za razliko od standardne simpleks metode pa metode notranjih točk ne obiskujejo točk na mejah področja dopustnih rešitev ampak točke znotraj področja dopustnih rešitev in so, glede na nekatere raziskave, pri reševanju določenih linearnih programov dosti hitrejše kot simpleksne – kompleksnost naj bi bila polinomska in ne eksponencialna (Winston, 1993, str. 591). Na področju nelinearnega programiranja sta jih v šestdesetih predstavila Fiacco in McCormick (Marsten, 1990), v prakso pa jih je prvi apliciral Karmarkar leta 1984 s svojo inovativno analizo (Karmarkar, 198434).

* * *

V nadaljevanju sledi podrobna obravnava dveh novejših strategij za reševanje linearnih programov: algoritma za zoženje tabele simpleksov (Damij, Grad, 1985 in 2002) in metode Potisni in povleci oz. Push-and-Pull (Arsham, Damij, Grad, 2002), ki – vsaka na svoj način – zmanjšuje kompleksnost reševanja LP. Vsebinsko sta poglavji zastavljeni v naslednjem okviru: splošnemu opisu metode sledi podroben opis algoritma, na podlagi katerega je bila razvita računalniška aplikacija za reševanje LP. Postopek reševanja LP po določeni metodi je nato prikazan in obrazložen na konkretnem numeričnem primeru.

31 angl.: Simplex Method for Upper-Bounded Variables, tudi The Upper Bound Technique; več v (Hilllier, Lieberman, 1995, str. 271-274) ali (Winston, 1993, str. 587-591). 32 Pri čemer je uj pozitivna konstanta, ki predstavlja maksimalno dopustno vrednost spremenljivke xj. 33 angl.: Dantzig-Wolfe Decomposition algorithm, več o tem algoritmu v (Chvatal, 1983) in (Winston, 1993). 34 Več o Karmarkarjevi metodi notranje točke npr. v Hooker, 1986, ali Jamšek, 1991.

Page 43: Izboljšanje standardne simpleks metode z algoritmom za ... metoda namreč uvaja umetne in dopolnilne spremenljivke, da začetni linearni program prevede v standardno obliko, primerno

37

4. ALGORITEM ZA ZOŽENJE TABELE SIMPLEKSOV

4.1 OPIS ALGORITMA

Standardna simpleks metoda je iteracijski postopek, ki uporablja tabelo simpleksov za predstavitev in shranjevanje vrednosti vhodnih, dopolnilnih in umetnih spremenljivk linearnega programa. Kot smo videli v prejšnjem poglavju, se v vsaki iteraciji reševanja LP preračunajo vrednosti v celotni tabeli simpleksov, ki je iz (začetnega) velikostnega reda m × s35 razširjena na m+1 × n+136. Tako se iz ene tabele v drugo prenaša veliko nepotrebnega balasta, kar predstavlja problem ne le s stališča časovne komponente reševanja LP temveč tudi s stališča porabe pomnilniškega prostora (Nguyen et al., 2000).

Teoretično sicer s standardno simpleks metodo rešimo vsak LP, po drugi strani pa predvsem prevelika potratnost pomnilnika predstavlja bistveno prepreko za učinkovito in uspešno računalniško implementacijo metode. Tako se v ta namen namesto (relativno) enostavne standardne simpleks metode običajno uporablja kompleksnejša (a v povprečju učinkovitejša) revidirana simpleks metoda, ki vse potrebne informacije prenaša v bolj kompaktni obliki.

Tudi osnovna ideja algoritma za zoženje tabele simpleksov (Damij in Grad, 2001) izhaja iz enake problemske situacije – tabela simpleksov je pri standardni metodi preveč obsežna za učinkovito računalniško rešitev, zato pri algoritmu za zoženje tabele simpleksov uporabimo in obdelujemo tabelo simpleksov, ki je enakega velikostnega reda kot je vhodna matrika koeficientov sistema linearnih neenačb.

Denimo, da imamo naslednji LP v standardni (matrični) obliki: iščemo vektor X, ki zadošča pogoju nenegativnosti

0≥X

in matrični enačbi

BAX =

tako, da ima namenska funkcija

CXxf =)(

minimum.

Pri tem lahko v matrični enačbi BAX = matriko A izrazimo kot

[ ]BDFA =

35 Prvotna matrika A. 36 Pri tem je lahko n največ 3⋅s.

Page 44: Izboljšanje standardne simpleks metode z algoritmom za ... metoda namreč uvaja umetne in dopolnilne spremenljivke, da začetni linearni program prevede v standardno obliko, primerno

38

pri čemer je F matrika vhodnih vektorjev Pj (j = 1,…, s), D matrika dopolnilnih vektorjev Pj (j = s+1,…, d), B pa matrika umetnih vektorjev Pj (j = d+1,…, n).

Ključnega pomena je, da so komponente vektorjev Pj matrik D in B vnaprej določene (Damij in Grad, 2001). Za matriko D velja, da so elementi

djj = -1 ; dij = 0 (i≠j),

matrika B pa je enotna matrika, ki jo sestavljajo začetni bazni vektorji. Tudi ustrezne komponente vektorja C namenske funkcije so znane vnaprej:

cj ; (j = s+1,…, n),

pri čemer so za dopolnilne spremenljivke enake 0, za umetne spremenljivke pa imajo vrednost velikega M.

Tako se lahko osredotočimo na matriko F, ki predstavlja prvotno vhodno matriko (matriko koeficientov sistema); matriko B potrebujemo le za definiranje začetne baze, pri matriki D pa v vsaki iteraciji izberemo enega od njenih vektorjev, recimo Pr, ga transfomiramo in shranimo v matriko F kot Pk, ki vstopi v bazo. Z računskega stališča to pomeni manj potrebnega pomnilniškega prostora za shranjevanje tabel simpleksov in hitrejše izvedbe transformacij tabele simpleksov. V algoritmu je torej matrika A, t.j. F, definirana kot matrika velikostnega reda m × s (Damij in Grad, 2001).

Da ni potrebno uporabljati matrike, katere dimenzija bi bila večja od m × s, je možno zaradi tega, ker pri vpeljavi nekega vektorja v bazo le-ta v matriki A postane enotni vektor; ker to vemo, je pri vsaki iteraciji potrebno izvršiti zamenjavo določenih vektorjev matrike A. Izkoristiti moramo namreč ponujeno pomnilniško kapaciteto in na mesto enotnega vektorja shraniti dodatni vektor, ki ga – ob zamenjavi baznih spremenljivk – zgradimo, ko je potrebno37 in ga ustrezno transformiramo. S pomočjo vektorja v nato shranimo: (1) na katerem mestu v bazi se nahaja vektor Pk, ki je nadomestil vektor Pr in da je v matriki A na določenem mestu enotni vektor; (2) v katerem stolpcu matrike A je dejansko shranjen dodatni vektor, ki smo ga zgradili in transformirali ter v matriko A shranili kot nadomestilo za enotni vektor.

Zaradi teh zamenjav vektorjev matrike A za samo računalniško implementacijo potrebujemo nekaj dodatnih spremenljivk in mehanizem zamenjave in shranjevanja vektorjev, sicer pa so ostale stvari, kot npr. transformacije koeficientov tabele simpleksov, izračun relativnih profitov, način določanja indeksov k in r ter ostalo, popolnoma enaki kot pri standardni simpleks metodi.

V nadaljevanju je najprej v tehniki strukturirane angleščine podrobneje prikazan postopek algoritma za zoženje tabele simpleksov (Damij in Grad, 2001), sledi pa mu praktičen prikaz reševanja linearnega programa, ki smo ga obravnali tudi pri standardni simpleks metodi.

37 Dodatni vektor lahko zgradimo, saj so komponente vektorjev npr. umetnih spremenljivk določene vnaprej (gl. točko 3.2.1.2 na strani 24).

Page 45: Izboljšanje standardne simpleks metode z algoritmom za ... metoda namreč uvaja umetne in dopolnilne spremenljivke, da začetni linearni program prevede v standardno obliko, primerno

39

4.2 ALGORITEM

4.2.1 Inicializacija

{ v prvem delu algoritma najprej preberemo LP (število vrstic, spremenljivk, pogoje…) in določimo začetno bazno možno rešitev }

(i)

read nf, m, s { preberi namensko funkcijo (minimum ali maksimum), število linearnih (ne)enačb LP in število odločitvenih spremenljivk }

read cj (j=1,…,s) { preberi koeficiente namenske funkcije }

read p0i (i=1,…,m) { preberi vektor desnih strani pogojev }

read aij ((i=1,…,m),(j=1,…,s)) { preberi koeficiente vhodne matrike A }

(ii) read qi (i=1,…,m)

{ skonstruiraj vektor q velikostnega reda m, pri čemer je qi tip omejitve i-tega pogoja, npr. (≤), (=) ali (≥) }

(iii) calculate bigM if nf = maksimum then bigM = -bigM

{ izračunaj vrednosti d, n in M }

{ izračunaj veliki M kot trikratnik največjega koeficienta namenske funkcije; v primeru, da gre za maksimizacijsko namensko funkcijo, dobi veliki M negativni predznak }

d = s for i = 1 to m if (qi = "≥") then d = d+1 end for n = d + m

{ d izračunamo kot vsoto števila neznank in števila neenačb tipa (≥) }

{ n definiramo kot vsoto izračunanega d in števila vseh neenačb }

Page 46: Izboljšanje standardne simpleks metode z algoritmom za ... metoda namreč uvaja umetne in dopolnilne spremenljivke, da začetni linearni program prevede v standardno obliko, primerno

40

(iv) { konstruiraj vektor v, potreben za to, da lahko sledimo na katerem mestu v matriki A se nahajajo posamezni vektorji, in da vidimo, kateri vektorji matrike A so enotni vektorji (in so potemtakem v bazni rešitvi)38; komponente vektorja v so na začetku kar enake indeksom vektorjev vhodnih in dopolnilnih spremenljivk; za dopolnilne spremenljivke dopolni vektor c z ustreznimi koeficienti namenske funkcije, ki so enaki 0 }

vi = i (i=1,…,s)

w = 0 for j = s+1 to d cj = 0 for i = w+1 to m if qi = "≤" or qi = "≥" then vj = j w = i exit for end if end for end for

(v) le = gr = eq = 0 for i = 1 to m if (qi = "≤") then le = le + 1 cbi = 0 vbi = s + le + gr v(s+le+gr) = -i elseif (qi = "≥") then gr = gr + 1 cbi = bigM vbi = d + gr + eq elseif (qi = "=") then eq = eq + 1 cbi = bigM

{ konstruiraj vektor vb, katerega komponente so enake indeksom vektorjev baznih spremenljivk in vektor cb, ki vsebuje koeficiente tistih spremenljivk namenske funkcije, ki so v bazi } { cb ima za dopolnilne spremenljivke, torej za pogoje tipa (≤) vrednost 0, za ostale ((≥) in (=)) pa vrednost velikega M; Tabela 1 na strani 25 oz. razdelek 3.2.1 prikazujeta, zakaj tako } { komponente vektorja vb so enake indeksom vektorjev spremenljivk, ki so v začetni bazni možni rešitvi }

38 Več o vektorju v v razdelkih 4.1 (str. 37) in 4.2.2.4 (str. 45).

Page 47: Izboljšanje standardne simpleks metode z algoritmom za ... metoda namreč uvaja umetne in dopolnilne spremenljivke, da začetni linearni program prevede v standardno obliko, primerno

41

vbi = d + gr + eq end if end for

4.2.2 Iteracije – izboljševanje možnih rešitev do optimalne

4.2.2.1 Določitev vektorja Pk, ki bo uveden v novo bazo

(i) { izračunaj z0, zj in zj-cj za j=1,…,s, kjer je z0 vrednost namenske funkcije, zj-cj pa relativni profit j-te spremenljivke; izračun je razložen pri standardni simpleks metodi v točki 3.2.3, stran 29 } for j = 1 to s zj = 0 for i = 1 to m zj = zj + cbi * aij end for inbase = true for i = 1 to d if j = vi then inbase = false exit for end if end for if not inbase then zj = zj – cj else zj = 0 end if end for z0 = 0 for i = 1 to m z0 = z0 + cbi * P0i end for

Page 48: Izboljšanje standardne simpleks metode z algoritmom za ... metoda namreč uvaja umetne in dopolnilne spremenljivke, da začetni linearni program prevede v standardno obliko, primerno

42

(ii) { poišči vektor Pk, ki pride v novo bazo; k določa stolpec matrike A, ki ga bomo vpeljali v novo bazo (Chvatal, 1999). Če ni nobenega kandidata za Pk, je obstoječa rešitev optimalna in proces se ustavi. }

if nf = maksimum then zk = max (zj) (j=1,…,s); zj > 0 elseif nf = minimum zk = min (zj) (j=1,…,s); zj < 0 end if

for i = 1 to d if k = vi then h = i exit for end if end for

{ indeks i spremenljivke vi = k kaže pravo lokacijo k-tega stolpca, ki jo shranimo v spremenljivko h; več o zamenjavah vektorjev matrike A v točki 4.2.2.4 na strani 45 }

4.2.2.2 Določitev vektorja Pr, ki bo odstranjen iz baze

{ poišči Pr, ki zapusti bazo; r določa, kateri od baznih vektorjev postane nebazni vektor, ko ga nadomestimo s Pk }

ik

i

rk

r

ap

ap 00

min==Θ (i=1,…,m); (aik > 0); (p0i ≥ 0); (Θ ≥ 0); (*)

Pri tem se lahko pojavijo tri možnosti:

1) Obstaja natanko en indeks r, za katerega velja pravilo (*) V tem primeru u = vbr prikazuje resnično lokacijo vektorja Pr (=Pu) ki zapusti bazo: u = vbr Proces se nadaljuje v točki 4.2.2.3.

2) Ne obstaja noben (aik > 0), pri čemer je (i = 1,…,m) V tem primeru ima LP neomejeno množico rešitev (gl. točko 2.4.3 na strani 15) in proces reševanja se ustavi.

Page 49: Izboljšanje standardne simpleks metode z algoritmom za ... metoda namreč uvaja umetne in dopolnilne spremenljivke, da začetni linearni program prevede v standardno obliko, primerno

43

3) Obstaja več indeksov r, za katere velja pravilo (*) V tem primeru pride do degeneracije (gl. točko 3.2.3.4 na strani 33), ki jo rešimo tako, da iterativno, za (j = 1,…,d) delimo komponente vektorja Pj z elementi matrike A v k-tem stolpcu in iščemo Θ. Proces reševanja degeneracije se ustavi, ko najdemo Θ in Pr.

DEGENERACIJA: e = 1 for g = 1 to d (i)

if vg < 0 then j = -vg

{ v tem primeru je Pj eden izmed baznih vektorjev }

pi = 0 (i=1,…,m) in (i≠j) pi = 1 (i=j)

{ zgradi vektor Pj }

SearchVectorP_r: { poišči indeks r, ki zadošča zahtevam:

ik

i

rk

r

ap

ap min==Θ ; (i=1,…,m); (aik > 0); (pi > 0); (Θ ≥ 0);

(ii) elseif vg ≤ s then j = vg

{ Pj je j-ti stolpec matrike A }

SarchVectorR: { poišči indeks r, ki zadošča zahtevam: }

ik

ij

rk

r

aa

ap min==Θ ; (i=1,…,m); (aik > 0); (aij > 0); (Θ ≥ 0);

(iii) elseif vg ≤ d then

{ v tem primeru je Pj eden izmed dopolnilnih vektorjev }

for i = e to m if qi = "≥" then e = i + 1 j = i exit for end if

{ poišči indeks j }

Page 50: Izboljšanje standardne simpleks metode z algoritmom za ... metoda namreč uvaja umetne in dopolnilne spremenljivke, da začetni linearni program prevede v standardno obliko, primerno

44

end for pi = 0 (i=1,…,m) in (i≠j) pi = 1 (i=j)

{ zgradi vektor Pj }

SearchVectorP_r: { poišči indeks r, ki zadošča zahtevam: }

ik

i

rk

r

ap

ap min==Θ ; (i=1,…,m); (aik > 0); (pi > 0); (Θ ≥ 0)

end if

iv) { če obstaja natanko en indeks r, za katerega velja pravilo (*), smo v okviru degeneracije uspešno določili Pr }

u = vbr exit for end for

4.2.2.3 Transformacija vektorjev Pj (j = 0,…,s)39

rk

rr a

pp0

0 =

for j = 1 to s (j≠k)

rk

rjrj a

aa =

end for for i = 1 to m (i≠r) p0i = p0i – p0r * aik for j = 1 to s (j≠k) aij = aij – arj * aik end for end for

39 Postopek transformacije vektorjev Pj je enak postopku pri standardni simpleks metodi (gl. točko 3.2.3.3 na strani 32), zato na tem mestu ni še enkrat opisan.

Page 51: Izboljšanje standardne simpleks metode z algoritmom za ... metoda namreč uvaja umetne in dopolnilne spremenljivke, da začetni linearni program prevede v standardno obliko, primerno

45

4.2.2.4 Zamenjava Pk s Pr v matriki A za uporabo v nadaljnih iteracijah

Proces zamenjave Pk s Pr poteka na naslednji način:

vbr = h; cbr = cbr ; cbr = ch vh = -r

{ vrednost -r v vh pomeni, da je r-ti stolpec bazni vektor Ph }

Sledi zamenjava vektorjev v matriki A. Na začetku reševanja LP ima matrika A enako strukturo kot matrika F; vsebuje torej vektorje Pj, ki ustrezajo vhodnim odločitvenim spremenljivkam xj (j=1,…,s). V vsaki iteraciji je potrebno izvršiti zamenjavo določenih vektorjev matrike A, da bi:

- izkoristili pomnilniško kapaciteto znotraj matrike A po transformaciji vektorja Pk, ki jo je sicer prej zavzemal ta vektor (Pk); Pk se namreč transformira v enotni vektor:

Pki = 0 (i=1,…,m) in (i≠k) Pkk = 1 (i=k) ;

- shranili karakteristike dopolnilnega vektorja Pr, katerega vrednosti kasneje uporabimo kot vrednosti pivot-vektorja Pk ;

- shranili karakteristike vektorja Pr, ki smo ga odstranili iz baze, in sicer v primeru, če Pr ni umetni vektor.

Zamenjava Pk s Pr teče v treh korakih: (i) if (qr = "≥") and (cbr = bigM) then { v tem primeru je vektor Pr umetni vektor, zato ga izbrišemo, saj se v bazo oz. v rešitev LP ne more več vrniti. Zgrajen je dodatni vektor Ps+r, transformiran v skladu s specifično iteracijo in nato shranjen v k-ti stolpec matrike A }

pi = 0 (i=1,…,m) in (i≠r) pi = -1 (i=r)

{ skonstruiraj dodatni vektor Ps+r }

rk

rr a

pp =

for i = 1 to m (i≠r) pi = pi – pr * aik end for

{ transformiraj komponente vektorja Ps+r}

Page 52: Izboljšanje standardne simpleks metode z algoritmom za ... metoda namreč uvaja umetne in dopolnilne spremenljivke, da začetni linearni program prevede v standardno obliko, primerno

46

aik = pi (i=1,…,m) { shrani Ps+r v k-ti stolpec matrike A }

vr+s = k { označi lokacijo vektorja Ps+r tako, da shraniš vrednost k v r+s-to komponento vektorja v }

(ii) elseif ((qr = "=") or (qr = "≤")) and (cbr = bigM) then { v tem primeru je vektor Pr umetni vektor, zato ga izbrišemo, saj se, ko enkrat bazo zapusti, v rešitev LP ne more več vrniti. V Pk shranimo enotni vektor: }

ark = 1 aik = 0 ; (i=1,…,m) in (i≠r)

(iii) elseif cbr < bigM then { v tem primeru u=vb označuje lokacijo vektorja (stolpec) Pr (=Pu) ki ga bomo odstranili iz baze. Pu je bazni vektor s komponentami Pu

i = 0 ((i=1,…,m) in (i≠r)), in Pur = 1.

Ker Pu ni eden izmed umetnih vektorjev in lahko v rešitev ponovno vstopi pri kasnejših iteracijah, ga ustrezno transformiramo in shranimo na lokacijo vektorja Pk v matriki A. }

pi = 0 (i=1,…,m) in (i≠r) pr = 1

{ skonstruiraj dodatni vektor Pu }

rk

rr a

pp =

for i = 1 to m (i≠r) pi = pi – pr * aik end for

{ transformiraj komponente vektorja Pu }

aik = pi (i=1,…,m) { shrani Pu v k-ti stolpec matrike A }

vu = k { označi lokacijo vektorja Pu tako, da shraniš vrednost k v u-to komponento vektorja v }

end if

(iv) { nadaljuj s procesom reševanja v točki 4.2.2.1 }

Page 53: Izboljšanje standardne simpleks metode z algoritmom za ... metoda namreč uvaja umetne in dopolnilne spremenljivke, da začetni linearni program prevede v standardno obliko, primerno

47

4.3 REŠEVANJE LP Z ALGORITMOM ZA ZOŽENJE TABELE

SIMPLEKSOV

Imamo naslednji LP (Vadnal, 1977):

Miminizirajmo namensko funkcijo stroškov

4321 5862 xxxxC +++=

pri omejitvah:

120424045280224

432

421

4321

≥++≥++≥+++

xxxxxxxxxx

in pogojih nenegativnosti:

01 ≥x , 02 ≥x , 03 ≥x , 04 ≥x

4.3.1 Inicializacija

(i) beri vhodne podatke

m = 3, s = 4

c = [2 6 8 5]

p0 = [80 40 120]

Matrika A

142040522214

(ii) skonstruiraj vektor tipov omejitev q q = [ "≥" "≥" "≥" ]

(iii) izračunaj veliki M40 in vrednosti d in n M = 10 d = 7 n = 7 + 3 = 10

40 V našem primeru smo veliki M postavili na vrednost 10, kljub temu, da je v algoritmu navedeno, da ga je potrebno izračunati kot trikratnik največjega izmed koeficientov namenske funkcije. Tako je narejeno zaradi lažje primerljivosti potekov reševanja pri standardni simpleks metodi in pri algoritmu za zoženje tabele simpleksov.

Page 54: Izboljšanje standardne simpleks metode z algoritmom za ... metoda namreč uvaja umetne in dopolnilne spremenljivke, da začetni linearni program prevede v standardno obliko, primerno

48

(iv) skonstruiraj vektor v in dopolni vektor c

v = [ 1 2 3 4 5 6 7 ]

c = [ 2 6 8 5 0 0 0 ]

(v) skonstruiraj vektorja vb in cb

vb = [ 8 9 10 ]

cb = [ 10 10 10 ]

4.3.2 Izboljševanje možnih rešitev - Iteracija 1

4.3.2.1 Določitev vektorja Pk, ki bo uveden v novo bazo

(i) izračunaj z0 in zj-cj

vb

8 9

10

cb

10 10 10

p8

p9

p10

z0

p0

80

40

120

2.400

A

4 1 2 2 2 5 0 4

0 2 4 1

zj - cj 58 74 52 65

v 1 2 3 4 5 6 7

c 2 6 8 5 0 0 0

(ii) poišči indeks (k) vektorja, ki bo uveden v novo bazo

zk-ck = max (zj-cj) = 74; k = 2; h = 2

4.3.2.2 Določitev vektorja Pr, ki bo odstranjen iz baze

Poišči indeks (r) vektorja, ki bo odstranjen iz baze:

80/1, 40/5, 120/2;

Θ = 40/5 = 8; r = 2, u = vb2 = 9

Page 55: Izboljšanje standardne simpleks metode z algoritmom za ... metoda namreč uvaja umetne in dopolnilne spremenljivke, da začetni linearni program prevede v standardno obliko, primerno

49

4.3.2.3 Transformacija vektorjev Pj (j=0,…,s)

p8

p2

p10

p0

72 8

104

A

3,6 1 2 1,2 0,4 5 0 0,8 -0,8 2 4 -0,6

4.3.2.4 Zamenjava Pk s Pr v matriki A za uporabo v nadaljnih iteracijah

cbr = cb2 = 10

vb2 = h = 2

cb2 = ch = 6

v2 = -2 (vh = -r)

Ker je (q2 = "≥") in (cbr (=10) = bigM), je (1) zgrajen dodatni vektor ps+r = p6, ki je (2) nato transformiran in (3) končno shranjen v pk = p2. (4) v vektorju v je shranjeno, da je v bazi na drugem mestu vektor p2 in da je v matriki A na drugem mestu enotni vektor (*) ter, da je vektor p6 dejansko shranjen v matriki A v drugem stolpcu (**).

(1) p6 (2) p6

0 0,2 -1 -0,2 0 0,4

(3) A

3,6 0,2 2 1,2 0,4 -0,2 0 0,8 -0,8 0,4 4 -0,6

(4) v 1 -2* 3 4 5 2** 7

Page 56: Izboljšanje standardne simpleks metode z algoritmom za ... metoda namreč uvaja umetne in dopolnilne spremenljivke, da začetni linearni program prevede v standardno obliko, primerno

50

4.3.3 Iteracija 2

4.3.3.1 Določitev vektorja Pk, ki bo uveden v novo bazo

(i) izračunaj z0 in zj-cj

vb

8 2

10

cb

10 6

10

p8

p2

p10

z0

p0

72 8

104

1.808

A

3,6 0,2 2 1,2 0,4 -0,2 0 0,8 -0,8 0,4 4 -0,6

zj - cj 28,4 4,8 52 5,8

v 1 -2 3 4 5 2 7

c 2 6 8 5 0 0 0

(ii) poišči indeks (k) vektorja, ki bo uveden v novo bazo

zk-ck = max (zj-cj) = 52; k = 3; h = 3

4.3.3.2 Določitev vektorja Pr, ki bo odstranjen iz baze

Poišči indeks (r) vektorja, ki bo odstranjen iz baze:

72/2, 104/4;

Θ = 104/4 = 26; r = 3, u = vb3 = 10

4.3.3.3 Transformacija vektorjev Pj (j=0,…,s)

p8

p2

p3

p0

20 8

26

A

4 0 2 1,5 0,4 -0,2 0 0,8 -0,2 0,1 4 -0,15

Page 57: Izboljšanje standardne simpleks metode z algoritmom za ... metoda namreč uvaja umetne in dopolnilne spremenljivke, da začetni linearni program prevede v standardno obliko, primerno

51

4.3.3.4 Zamenjava Pk s Pr v matriki A za uporabo v nadaljnih iteracijah

cbr = cb3 = 10

vb3 = h = 3

cb3 = ch = 8

v3 = -3

Ker je (q2 = "≥") in (cbr (=10) = bigM), je (1) zgrajen dodatni vektor ps+r = p7, ki je (2) nato transformiran in (3) končno shranjen v pk = p3. (4) v vektorju v je shranjeno, da je v bazi na tretjem mestu vektor p3 in da je v matriki A na tretjem mestu enotni vektor (*) ter, da je vektor p7 dejansko shranjen v matriki A v tretjem stolpcu (**).

(1) p7 (2) p6

0 0,5 0 0 -1 -0,25

(3) A

4 0 0,5 1,5 0,4 -0,2 0 0,8 -0,2 0,1 -0,25 -0,15

(4) v 1 -2 -3* 4 5 2 3**

4.3.4 Iteracija 3

4.3.4.1 Določitev vektorja Pk, ki bo uveden v novo bazo

(i) izračunaj z0 in zj-cj

vb

8 2 3

cb

10 6 8

p8

p2

p3

z0

p0

20

8 26

456

A

4 0 0,5 1,5

0,4 -0,2 0 0,8 -0,2 0,1 -0,25 -0,15

zj - cj 38,8 -0,4 3 13,6

v 1 -2 -3 4 5 2 3

c 2 6 8 5 0 0 0

(ii) poišči indeks (k) vektorja, ki bo uveden v novo bazo

zk-ck = max (zj-cj) = 38,8; k = 1; h = 1

Page 58: Izboljšanje standardne simpleks metode z algoritmom za ... metoda namreč uvaja umetne in dopolnilne spremenljivke, da začetni linearni program prevede v standardno obliko, primerno

52

4.3.4.2 Določitev vektorja Pr, ki bo odstranjen iz baze

Poišči indeks (r) vektorja, ki bo odstranjen iz baze:

20/4; 8/0,4

Θ = 20/4 = 5; r = 1, u = vb3 = 8

4.3.4.3 Transformacija vektorjev Pj (j=0,…,s)

p1

p2

p3

p0

5

6 27

A

4 0 0,125 0,375

0,4 -0,2 -0,05 0,65 -0,2 0,1 -0,225 -0,075

4.3.4.4 Zamenjava Pk s Pr v matriki A za uporabo v nadaljnih iteracijah

cbr = cb1 = 10

vb3 = h = 1

cb1 = ch = 2

v1 = -1

Ker je (q2 = "≥") in (cbr (=10) = bigM), je (1) zgrajen dodatni vektor ps+r = p5, ki je (2) nato transformiran in (3) končno shranjen v pk = p1. (4) v vektorju v je shranjeno, da je v bazi na prvem mestu vektor p1 in da je v matriki A na prvem mestu enotni vektor (*) ter, da je vektor p5 dejansko shranjen v matriki A v prvem stolpcu (**).

(1) p7 (2) p6

-1 -0,25 0 0,1 0 -0,05

(3) A

-0,25 0 0,125 0,375 0,1 -0,2 -0,05 0,65 -0,05 0,1 -0,225 -0,075

(4) v -1* -2 -3 4 1** 2 3

Page 59: Izboljšanje standardne simpleks metode z algoritmom za ... metoda namreč uvaja umetne in dopolnilne spremenljivke, da začetni linearni program prevede v standardno obliko, primerno

53

4.3.5 Iteracija 4

4.3.5.1 Določitev vektorja Pk, ki bo uveden v novo bazo

(i) izračunaj z0 in zj-cj

vb

1 2 3

cb

2 6 8

p1

p2

p3

z0

p0

5 6

27

262

A

-0,25 0 0,125 0,375 0,1 -0,2 -0,05 0,65 -0,05 0,1 -0,225 -0,075

zj - cj -0,3 -0,4 -1,85 -0,949

v -1 -2 -3 4 1 2 3

c 2 6 8 5 0 0 0

(ii) Nobeden od zj-cj (j = 1,…, s) ni pozitiven, kar pomeni, da smo našli optimalno rešitev. Rešitve ni več mogoče izboljšati in proces iteracij je ustavljen.

Optimalna rešitev LP je torej41

2765

3

2

1

===

xxx

in ob upoštevanju, da je vrednost spremenljivke x4 = 0, je vrednost namenske funkcije minimalna:

2620527866525862 4321 =⋅+⋅+⋅+⋅=⋅+⋅+⋅+⋅= xxxxC .

41 Rešitev, dobljena s pomočjo algoritma za zoženje tabele simpleksov, je seveda identična rešitvi, ki smo jo dobili s standardno simpleks metodo (gl. str. 33).

Page 60: Izboljšanje standardne simpleks metode z algoritmom za ... metoda namreč uvaja umetne in dopolnilne spremenljivke, da začetni linearni program prevede v standardno obliko, primerno

54

5. METODA POTISNI IN POVLECI

5.1 OPIS METODE

Tudi metoda Potisni in povleci (angl.: Push and Pull) poskuša rešiti problem časovne in prostorske kompleksnosti, ki nastane pri reševanju linearnih programov večjih dimenzij in/ali pri LP z (=) in (≥) omejitvami (Arsham, Damij, Grad, 2002). Pri algoritmu za zoženje tabele simpleksov se zmanjša računska kompleksnost z okleščenjem tabele simpleksov na matriko velikosti vhodnih neenačb. Tako pri reševanju LP, torej pri iteracijskem izboljševanju namenske funkcije, ni potrebno več operirati z vsemi koeficienti dopolnilnih in umetnih spremenljivk.

Metoda Potisni in povleci gre, poleg odprave preračunavanja koeficientov umetnih in dopolnilnih spremenljivk, še korak dlje. Tako standardna simpleks metoda kot algoritem za zoženje tabele simpleksov začenjata (iterativno) iskanje optimalne rešitve v eni izmed ekstremnih točk množice točk dopustnih rešitev; začetna točka, ki je določena z začetno bazo, je običajno daleč od optimalne rešitve. V nasprotju s tem konceptom začenja Potisni in povleci iskanje optimalne rešitve v oglišču, ki je blizu optimalne rešitve, in za katerega je možno, da se sploh ne nahaja na mejah območja dopustnih rešitev. Prva ("Potisni", angl.: "Push") faza torej razvije bazo, ki je lahko dopustna ali nedopustna. Drugače od standardne simpleks metode, Potisni in povleci tvori množico spremenljivk, ki so v bazi, postopoma. Začetna bazna rešitev je nepopolna, vanjo pa postopoma vpelje spremenljivke, ki vodijo proti optimalni rešitvi. Če je množica osnovnih spremenljivk polna in rešitev (še) ni optimalna, nadaljuje s potiskanjem do optimalnosti in se hkrati poskuša obdržati v mejah dopustnih rešitev. Če dobljena rešitev ni dopustna, pomeni, da smo »potiskali« predaleč, in da moramo z drugo ("Povleci", angl.: Pull) fazo rešitev LP »povleči« nazaj proti optimalni dopustni rešitvi s pomočjo pristopa dualnega simpleksa42 (Arsham, Damij, Grad, 2002).

Razlika med standardno simpleks metodo in metodo Potisni in povleci je v tem, da pri standardni simpleks metodi najprej težimo k dopustnosti in nato optimalnosti, metoda Potisni in povleci pa najprej teži k optimalnosti in nato k dopustnosti (če je potrebno, se izvrši faza Povleci). Pri metodi Potisni in povleci je namreč začetna baza (ki je lahko dopustna ali nedopustna) že blizu optimalne rešitve, medtem ko pri prvi začenjamo reševanje linearnih problemov daleč od optimalne rešitve in se preko ekstremnih točk na mejah območja dopustnih rešitev postopoma premikamo do nje (Arsham, Damij, Grad, 2002). Pri minimizacijskih LP npr. z metodo Velikega M začnemo z rešitvijo, v kateri so umetne spremenljivke in katerih koeficienti v namenski funkciji imajo vrednost Velikega M – vrednost namenske funkcije oz. prva rešitev je tako "zelo pozitivna". Obratno, pri maksimizacijskih LP, začnemo z reševanjem v rešitvi v kateri so sprva same dopolnilne spremenljivke, katerih koeficienti v namenski funkciji so enaki 0, posledično pa je tudi njena vrednost enaka 0. Metoda Potisni in povleci pa, drugače, gradi rešitev postopoma,

42 angl.: Dual simplex, več npr. v Chvatal 1983; Borgwardt, 1987; Paparrizos, 1990; Paparrizos, v tisku.

Page 61: Izboljšanje standardne simpleks metode z algoritmom za ... metoda namreč uvaja umetne in dopolnilne spremenljivke, da začetni linearni program prevede v standardno obliko, primerno

55

najprej z vpeljavo vseh dopolnilnih spremenljivk in s postopnim vpeljevanjem osnovnih spremenljivk, kar potiska rešitev proti optimalni rešitvi. Zaradi načina "izdelave baze" tako ne potrebuje nobenih umetnih spremenljivk pri (=) in (≥) omejitvah, s čimer se izogne dvojemu: (1) "kazenskemu" velikemu M kot koeficientu umetnih spremenljivk v namenski funkciji in (2) potrebi po izračunavanju relativnega profita (zj-cj), saj je namesto tega lahko uporabljan le cj, t.j. koeficient namenske funkcije spremenljivke xj. Od standardne simpleks metode se Potisni in povleci razlikuje tudi po tem, da zmanjša kompleksnost tabele simpleksov na velikostni red vhodne matrike neenačb, saj vsebuje algoritem za zoženje tabele simpleksov (razložen je v 4. poglavju). Potisni in povleci se od obeh loči tudi po tem, da problema degeneracije ne razrešuje s posebnim algoritmom, temveč izmed enakih vrednosti koeficienta p0

i/aik izbere prvi indeks r po vrsti.

Metoda Potisni in povleci je podrobneje razložena v naslednjem razdelku (5.2), okvirno pa poteka v naslednjih korakih (Arsham, Damij, Grad, 2002):

1. Z vpeljavo dopolnilnih spremenljivk pretvori omejitvene neenačbe v enačbe.

2. Sestavi začetno tabelo simpleksov z dopolnilnimi spremenljivkami kot edinimi spremenljivkami v bazi.

3. Konstruira polno množico baznih spremenljivk (BVS43), za dopustno ali nedopustno rešitev:

a. Spremenljivka xk, ki bo uvedena v bazo, ima največji ck, t.j. koeficient spremenljivke xk v namenski funkciji (lahko je negativen). Povedano drugače, išče vektor Pk (Arsham, Damij, Grad, 2002):

)(max jjk cc =

Pri tem so koeficienti cj shranjeni v dodatni vrstici matrike A: am+1,j.

b. Vektor Pr, ki bo odstranjen iz baze, določi tako, da vsako komponento vektorja P0 deli z istoležno komponento vektorja Pk.

ik

i

mirk

r

aP

aP 0

1min

<<==Θ ; )0( >ika ; )0(

0

ik

i

aP

≤Θ< (+)

Če obstaja več indeksov r, za katere velja (+), izbere prvega po vrsti. V primeru, da pogoju (aik > 0) ni zadoščeno, ima LP neomejeno množico rešitev in proces reševanja se ustavi.

c. Če je množica baznih spremenljivk polna, nadaljuje s 4. korakom, sicer se vrne na točko (a.) in nadaljuje z izgradnjo množice baznih spremenljivk.

43 angl.: Basic Variable Set.

Page 62: Izboljšanje standardne simpleks metode z algoritmom za ... metoda namreč uvaja umetne in dopolnilne spremenljivke, da začetni linearni program prevede v standardno obliko, primerno

56

4. Če je kakšen koeficient cj večji od 0, so izboljšave bazne rešitve še možne. V nasprotnem primeru nadaljuje s korakom 5.

a. Določi spremenljivko xk, ki bo uvedena v bazo (ima največji ck, ki ne sme biti negativen).

b. Določi vektor Pr, ki bo odstranjen iz baze. r določi tako kot pri koraku 3b:

ik

i

mirk

r

aP

aP 0

1min

<<==Θ ; )0( >ika ; )0(

0

ik

i

aP

≤Θ< (+)

Če obstaja več indeksov r, za katerega velja (+), izbere prvega po vrsti. V primeru, da pogoju (aik > 0) ni zadoščeno, ima LP neomejeno množico rešitev in proces reševanja se ustavi.

5. Če vsi koeficienti vektorja desne strani omejitev P0 ustrezajo pogoju

00 ≥iP ; mi ...1= ,

in če ni med koeficienti cj (t.j. elementi am+1,j) nobenega pozitivnega več, smo pri optimalni rešitvi. V nasprotnem primeru nadaljuje s fazo Povleci.

6. Faza Povleci: uporabi tehniko Dualnega simpleksa za določitev spremenljivke, ki jo odvede iz baze in spremenljivke, ki jo uvede v bazo. Najprej poišče najmanjši koeficient v vektorju desnih strani omejitev, ki določi pivotno vrstico. Spremenljivki xk, ki bo uvedena v bazo in xr, ki bo iz baze odstranjena, določi tako, da poišče največji količnik med koeficientom cj (v namenski funkciji) in istoležnim koeficientom pivotne vrstice v matriki A. Pri tem morata biti števec in imenovalec negativna. Če obstaja več takih količnikov, izbere največjega. Če tak količnik ne obstaja, rešitev LP ni v območju dopustnih rešitev in preneha z reševanjem. Sicer generira novo tabelo simpleksov in se vrne na korak 5.

5.2 ALGORITEM METODE

5.2.1 Inicializacija

{ v prvem delu algoritma preberemo LP (število vrstic, spremenljivk, pogoje…) }

(i)

read nf, m, s { preberi namensko funkcijo (minimum ali maksimum), število linearnih (ne)enačb LP in število odločitvenih spremenljivk }

Page 63: Izboljšanje standardne simpleks metode z algoritmom za ... metoda namreč uvaja umetne in dopolnilne spremenljivke, da začetni linearni program prevede v standardno obliko, primerno

57

read cj (j=1,…,s) { preberi koeficiente namenske funkcije v vektor c }

if nf = min then cj = -cj (j=1,…,s) end if

{ v primeru, da gre za minimizacijski LP, pomnožimo koeficiente namenske funkcije z –144 }

read p0i (i=1,…,m) { preberi vektor desnih strani pogojev }

read aij ((i=1,…,m),(j=1,…,s)) { preberi koeficiente vhodne matrike A }

(ii) read qi (i=1,…,m)

{ konstruiraj vektor q velikostnega reda m, pri čemer je qi tip omejitve i-tega pogoja, npr. (≤), (=) ali (≥) }

(iii)

d = s for i = 1 to m if (qi = "≥") or (qi = "≤") then d = d+1 end for

{ izračunaj vrednost d kot vsoto števila neznank in števila neenačb tipa (≥) ali (≤) }

(iv)

{ konstruiraj vektorja v in am+1,j ter dopolni vektor c }

{ vektor v potrebujemo za to, da lahko sledimo na katerem mestu v matriki A se nahajajo posamezni vektorji, in da vidimo, kateri vektorji matrike A so enotni vektorji (in so potemtakem v bazni rešitvi)45; komponente vektorja v so na začetku kar enake indeksom vektorjev vhodnih in dopolnilnih spremenljivk; za dopolnilne spremenljivke dopolnimo vektor c z ustreznimi koeficienti namenske funkcije, ki so enaki 0; v vektorju am+1,j predstavlja dejansko vektor relativnega profita, ki pa ni izračunan preko kot zj-cj, ampak vsebuje le drugi del enačbe, torej cj - sprva je enak koeficientom namenske funkcije, nato pa so pri vsaki iteraciji ti elementi transformirani; v vektorju c pa se koeficienti namenske funkcije ohranijo, da se lahko nato pri dobljeni optimalni rešitvi izračuna tudi vrednost namenske funkcije }

44 Algoritem Potisni in povleci je namreč narejen v osnovi za maksimizacijske probleme. Minimizacija ∑=

⋅=n

jjj xcC

1 je sicer

enaka maksimizaciji ∑=

⋅−=−n

jjj xcC

1)( , saj manjši kot je C, večji je -C. Torej rešitev, ki da najmanjšo vrednost C v območju

dopustnih rešitev, da tudi največjo vrednost –C v tem območju (Arsham, Damij, Grad, 2002).

45 Več o vektorju v v razdelkih 4.1 (str. 37) in 4.2.2.4 (str. 45).

Page 64: Izboljšanje standardne simpleks metode z algoritmom za ... metoda namreč uvaja umetne in dopolnilne spremenljivke, da začetni linearni program prevede v standardno obliko, primerno

58

vi = i (i=1,…,s)

am+1,j = i (i=1,…,s)

w = 0 for j = s+1 to d cj = 0 for i = w+1 to m if qi = "≤" or qi = "≥" then vj = j w = i exit for end if end for end for

(v) ii = 0 for i = 1 to m vbi = 0 cbi = 0 if (qi = "≤") then ii = ii + 1 vbi = s + ii vs+ii = -i elseif (qi = "≥") then ii = ii + 1 end if end for

{ konstruiraj vektor vb, katerega komponente so enake indeksom vektorjev spremenljivk, ki so v začetni bazni rešitvi in vektor cb, ki vsebuje koeficiente tistih spremenljivk namenske funkcije, ki so v bazi; za dopolnilne spremenljivke ima cb vrednost 0 }

5.2.2 Izgradnja množice baznih spremenljivk (BVS)

{ konstruiraj polno množico baznih spremenljivk (BVS) } vbcomplete = false chosenj = 0 (j=1,…,s)

{ sprazni vektor chosenj, v katerem bodo shranjevani indeksi koeficientov tistih spremenljivk xk, ki bodo izbrani v trenutni iteraciji }

Page 65: Izboljšanje standardne simpleks metode z algoritmom za ... metoda namreč uvaja umetne in dopolnilne spremenljivke, da začetni linearni program prevede v standardno obliko, primerno

59

do while (vb not complete):

5.2.2.1 Določitev vektorja Pk, ki bo uveden v novo bazo

{ poišči indeks k spremenljivke xk, ki ima največji koeficient v namenski funkciji; lahko je negativen; torej išči največji am+1,j ; k določa spremenljivko, ki bo uvedena v bazo } for j = 1 to s inBase = true for i = 1 to d if j = vi then { poišči indeks j prve inBase = false spremenljivke, ki še ni v bazi } exit for end if end for if not inBase and chosenj = 0 then k = j { določi primerjalno bazo za pk = am + 1, j iskanje največjega am+1,j } exit for end if end for for j = 1 to s inBase = true for i = 1 to d if j = vi then { poišči indeks j prve inBase = false spremenljivke, ki še ni v bazi } exit for end if end for if not inBase and (am+1,j > pk) and chosenj = 0 then k = j { določi največji am+1,j in s pk = am + 1, j tem tudi k } end if end for if k = 0 then exit do chosenk = 1

{ če ni nobenega k, prenehaj z reševanjem, saj možna rešitev ne obstaja; v nasprotnem primeru s pomočjo vektorja chosen zabeleži, kateri k je bil izbran }

Page 66: Izboljšanje standardne simpleks metode z algoritmom za ... metoda namreč uvaja umetne in dopolnilne spremenljivke, da začetni linearni program prevede v standardno obliko, primerno

60

for i = 1 to d if k = vi then h = i exit for end if end for

{ indeks i spremenljivke vi = k kaže pravo lokacijo k-tega stolpca, ki jo shrani v spremenljivko h; več o zamenjavah vektorjev matrike A v točki 4.2.2.4 na strani 45 }

5.2.2.2 Določitev vektorja Pr, ki bo odstranjen iz baze

{ poišči vektor Pr, ki bo odstranjen iz baze; določi ga tako, da vsako komponento vektorja P0 deliš z istoležno komponento vektorja Pk; r mora zadoščati pogojem: }

ik

i

irk

r

aP

aP 0

min==Θ ; )0( >ika ; )0(0

ik

i

aP

≤Θ< (+)

{ najprej poišči primerjalno bazo za iskanje najmanjšega količnika } for i = 1 to m if ai,k > 0 and p0i ≥ 0 then zzzmin = p0i / ai,k r = i exit for end if end for { določi r } if r > 0 then zzzmincount = 0 for i = 1 to m if ai,k > 0 and p0i ≥ 0 then zzz = p0i / ai,k if (zzz < zzzmin) then r = i zzzmin = zzz zzzmincount = 1 elseif zzz = zzzmin then zzzmincount = zzzmincount + 1 end if end if end for

Page 67: Izboljšanje standardne simpleks metode z algoritmom za ... metoda namreč uvaja umetne in dopolnilne spremenljivke, da začetni linearni program prevede v standardno obliko, primerno

61

Pri tem se lahko pojavi več možnosti:

1) če za vbr velja (vbr > 0), pomeni, da je izbrana vrstica že zasedena; vrni se na točko 5.2.2.1 in izberi naslednji k (pri izbiri "naslednjega" k si pomagamo z vektorjem chosen, v katerem shranjujemo, katere k smo v trenutni iteraciji že izbrali). 2) Obstaja en ali več indeksov r, za katere velja pravilo (+) Če je indeksov r več, izberi prvega, za katerega velja pravilo (+).

u = vbr { u = vbr prikazuje resnično lokacijo

vektorja Pr (=Pu) ki zapusti bazo }

Proces se nadaljuje, kot sledi:

2.1) transformiraj vektorje Pj (j = 0,…,s) (gl. točko 4.2.2.3);

2.2) zamenjaj vektor Pk z vektorjem Pr za uporabo v nadaljnih iteracijah (točka 5.2.2.4);

2.3) postavi komponente vektorja chosenj na 0, saj se začenja nova iteracija:

chosenj = 0 (j = 0,…,s)

če je bil kateri od vektorjev že izbran v bazo, ima am+1,j v tem stolpcu vrednost 0 (enotni vektor). chosenj = 1 (am+1,j = 0)

2.4) testiraj, če je množica baznih spremenljivk (BVS) že polna:

- če v vektorju vbi vsi elementi zadoščajo pogoju (vb

i > 0; i=1,…,m), je baza polna. Kontrolno spremenljivko vbcomplete postavi na true in nadaljuj proces reševanja v točki 5.2.3 z izboljševanjem bazne rešitve proti optimalni;

- če v vektorju vbi obstaja vsaj element, ki ne zadoščajo pogoju (vb

i > 0; i=1,…,m), baza še ni polna. V tem primeru preveri še, če so bili v tej iteraciji že izbrani vsi možni indeksi k (s testiranjem vektorja chosen). Če so na voljo še kakšni k (vsaj eden od elementov vektorja chosenj = 0; j=1,…,s), se vrni s procesom reševanja na točko 5.2.2.1 in izberi naslednji k, sicer pa kontrolno spremenljivko vbcomplete postavi na true in nadaljuj proces reševanja v točki 5.2.3 z izboljševanjem bazne rešitve do optimalne.

3) Ne obstaja noben (aik > 0), pri čemer je (i = 1,…,m) V tem primeru ima LP neomejeno množico rešitev (gl. točko 2.4.3 na strani 15) in proces reševanja se ustavi.

Page 68: Izboljšanje standardne simpleks metode z algoritmom za ... metoda namreč uvaja umetne in dopolnilne spremenljivke, da začetni linearni program prevede v standardno obliko, primerno

62

5.2.2.3 Transformacija vektorjev Pj (j = 0,…,s)46

rk

rr a

pp0

0 =

for j = 1 to s (j≠k)

rk

rjrj a

aa =

end for for i = 1 to m (i≠r) p0i = p0i – p0r * aik end for for i = 1 to m+1 (i≠r) for j = 1 to s (j≠k) aij = aij – arj * aik end for end for

5.2.2.4 Zamenjava Pk s Pr v matriki A za uporabo v nadaljnih iteracijah

vbr = h; cbr = ch vh = -r

{ vrednost -r v vh pomeni, da je r-ti stolpec bazni vektor Ph }

Sledi zamenjava vektorjev v matriki A. Na začetku reševanja LP ima matrika A enako strukturo kot matrika F; vsebuje torej vektorje Pj, ki ustrezajo vhodnim odločitvenim spremenljivkam xj (j=1,…,s). V vsaki iteraciji je potrebno izvršiti zamenjavo določenih vektorjev matrike A, da bi:

- izkoristili pomnilniško kapaciteto znotraj matrike A po transformaciji vektorja Pk, ki jo je sicer prej zavzemal ta vektor (Pk); Pk se namreč transformira v enotni vektor:

Pki = 0 (i=1,…,m) in (i≠k)

Pkk = 1 (i=k) ;

46 Postopek transformacije vektorjev Pj je enak postopku pri standardni simpleks metodi (gl. točko 3.2.3.3 na strani 32), zato na tem mestu ni opisan še enkrat.

Page 69: Izboljšanje standardne simpleks metode z algoritmom za ... metoda namreč uvaja umetne in dopolnilne spremenljivke, da začetni linearni program prevede v standardno obliko, primerno

63

- shranili karakteristike dopolnilnega vektorja Pr, katerega vrednosti kasneje uporabimo kot vrednosti pivot-vektorja Pk ;

- shranili karakteristike vektorja Pr, ki smo ga odstranili iz baze.

Zamenjava Pk s Pr teče v treh korakih: (i) if (qr = "≥") and (u = 0) then { v tem primeru u-ta vrstica bazne rešitve ni zasedena. Zgrajen je dodatni vektor Ps+r, transformiran v skladu s specifično iteracijo in nato shranjen v k-ti stolpec matrike A }

pi = 0 (i=1,…,m) in (i≠r) pi = -1 (i=r)

{ konstruiraj dodatni vektor Ps+r }

rk

rr a

pp =

for i = 1 to m+1 (i≠r) pi = pi – pr * aik end for

{ transformiraj komponente vektorja Ps+r}

aik = pi (i=1,…,m+1) { shrani Ps+r v k-ti stolpec matrike A }

vr+s = k { označi lokacijo vektorja Ps+r tako, da shraniš vrednost k v r+s-to komponento vektorja v }

(ii) elseif ((qr = "=") and (u = 0)) then { u-ta vrstica baze ni zasedena in tudi ni dopolnilnega vektorja, ki bi ga morali shraniti v k-ti stolpec matrike A. V Pk shranimo enotni vektor: }

ark = 1 aik = 0 ; (i=1,…,m+1) in (i≠r)

(iii) else { v tem primeru u=vb

r označuje lokacijo vektorja (stolpec) Pr (=Pu) ki ga bomo odstranili iz baze. Pu je bazni vektor s komponentami Pu

i = 0 ((i=1,…,m) in (i≠r)), in Pur = 1. Ker Pu lahko

v rešitev ponovno vstopi pri kasnejših iteracijah, ga ustrezno transformiramo in shranimo na lokacijo vektorja Pk v matriki A. }

Page 70: Izboljšanje standardne simpleks metode z algoritmom za ... metoda namreč uvaja umetne in dopolnilne spremenljivke, da začetni linearni program prevede v standardno obliko, primerno

64

pi = 0 (i=1,…,m+1) in (i≠r) pr = 1

{ skonstruiraj dodatni vektor Pu }

rk

rr a

pp =

for i = 1 to m+1 (i≠r) pi = pi – pr * aik end for

{ transformiraj komponente vektorja Pu }

aik = pi (i=1,…,m+1) { shrani Pu v k-ti stolpec matrike A }

vu = k { označi lokacijo vektorja Pu tako, da shraniš vrednost k v u-to komponento vektorja v }

end if

5.2.3 Izboljševanje bazne rešitve do optimalne

Če je množica baznih spremenljivk polna in rešitev (še) ni optimalna (če obstaja še kakšen pozitiven koeficient namenske funkcije), nadaljujemo s potiskanjem do optimalnosti, in sicer z izboljševanjem bazne rešitve.

do while am+1,j > 0 (j=1,…,s):

5.2.3.1 Določitev vektorja Pk, ki bo uveden v novo bazo

Pk = max (am+1,j); (am+1,j > 0)

{ poišči k spremenljivke xk, ki ima največji koeficient am+1,j ; k določa spremenljivko, ki bo uvedena v bazo }

if k = 0 then exit do for i = 1 to d if k = vi then h = i exit for end if end for

{ če ni nobenega k, prenehaj z reševanjem, saj možna rešitev ne obstaja } { sicer pa indeks i spremenljivke vi = k kaže pravo lokacijo k-tega stolpca, ki jo shranimo v spremenljivko h; več o zamenjavah vektorjev matrike A v točki 4.2.2.4 na strani 45 }

Page 71: Izboljšanje standardne simpleks metode z algoritmom za ... metoda namreč uvaja umetne in dopolnilne spremenljivke, da začetni linearni program prevede v standardno obliko, primerno

65

5.2.3.2 Določitev vektorja Pr, ki bo odstranjen iz baze

{ poišči vektor Pr, ki bo odstranjen iz baze; določi ga tako, da vsako komponento vektorja P0 deliš z istoležno komponento vektorja Pk; r mora zadoščati pogojem: }

ik

i

mirk

r

aP

aP 0

1min

<<==Θ ; )0( >ika ; )0( 0 >iP ; )0(

0

ik

i

aP

≤Θ< (++)

{ iskanje r poteka na enak način kot v točki 5.2.2.2 } Pri tem se lahko pojavita dve možnosti:

1) Obstaja en ali več indeksov r, za katere velja pravilo (++) 1.1) Če je indeksov r več, izberi prvega, za katerega velja pravilo (++).

u = vbr { u = vbr prikazuje resnično lokacijo

vektorja Pr (=Pu) ki zapusti bazo }

Proces se nadaljuje, kot sledi:

1.2) transformiraj vektorje Pj (j = 0,…,s) (gl. točko 4.2.2.3);

1.3) zamenjaj vektor Pk z vektorjem Pr za uporabo v nadaljnih iteracijah (točka 5.2.2.4);

1.4) testiraj, če obstaja še kakšen (am+1,j > 0 ; i = 1,…,m); če obstaja, je možno rešitev še izboljšati, zato se s procesom reševanja vrni na točko 5.2.3.1, sicer nadaljuj s testom optimalnosti in dopustnosti (točka 5.2.4).

2) Ne obstaja noben (aik > 0), pri čemer je (i = 1,…,m) V tem primeru ima LP neomejeno množico rešitev (gl. točko 2.4.3 na strani 15) in proces reševanja se ustavi.

5.2.4 Test optimalnosti in dopustnosti

Rešitev, ki jo dobimo, ni nujno, da je optimalna in dopustna. Iskanje smo sicer začeli nekje blizu optimalne rešitve LP, a je možno, da smo "potiskali" predaleč in da rešitev ni na meji območja dopustnih rešitev, ampak izven njega.

Če so vsi )0( 0 >iP (i=1,…,m), smo našli optimalno rešitev. Sicer smo potiskali predaleč in

nadaljujemo s fazo POVLECI (točka 5.2.5).

Page 72: Izboljšanje standardne simpleks metode z algoritmom za ... metoda namreč uvaja umetne in dopolnilne spremenljivke, da začetni linearni program prevede v standardno obliko, primerno

66

5.2.5 Faza povleci

Fazo povleci uporabimo pri reševanju LP takrat, ko dobljena (optimalna) rešitev ni več na meji območja dopustnih rešitev, ampak izven njega. S pomočjo pristopa dualnega simpleksa povlečemo rešitev nazaj proti dopustni optimalni (Arsham, Grad, Damij, 2002).

{ Najprej poišči najmanjši koeficient v vektorju desnih strani omejitev, ki določi pivotno vrstico. Spremenljivki xk, ki bo uvedena v bazo in xr, ki bo iz baze odvedena, določi tako, da poiščeš največji količnik med koeficientom namenske funkcije am+1,j in istoležnim koeficientom pivotne vrstice v matriki A. Pri tem morata števec in imenovalec biti negativna. Če obstaja več takih količnikov, izberi največjega. Če tak količnik ne obstaja, rešitev LP ni v območju dopustnih rešitev in prenehaj z reševanjem. Sicer generiraj novo tabelo simpleksov in se vrni na korak 5. }

5.2.5.1 Določitev koeficienta v vektorju desnih strani omejitev

{ Poišči najmanjši koeficient v vektorju desnih strani omejitev, ki določi pivotno vrstico. }

0

1min imi

P<<

=Θ ; )0( 0 <iP

p0min =0 for i = 1 to m

if p0i < 0 then if (p0i < p0min) or (i = 1) then p0min = p0i

end if end for

{ V vektor rowri zabeleži, katera vrstica je pivotna. } for i = 1 to m

rowri = 0 if p0i = p0min then rowri = 1

end for

5.2.5.2 Določitev vektorjev Pk in Pr

{ Določi vektor Pk oz. Pr, ki bo uveden v bazo oz. odstranjen iz baze: }

ij

jm

sjrk

r

aa

aP ,1

1

0

max +

<<= ; )0( <ija ; )0( ,1 <+ jma ; )( 0 Θ=iP (+++)

r = k = maxx = 0 for i = 1 to m

Page 73: Izboljšanje standardne simpleks metode z algoritmom za ... metoda namreč uvaja umetne in dopolnilne spremenljivke, da začetni linearni program prevede v standardno obliko, primerno

67

if rowri = 1 then for j = 1 to s if am+1,j < 0 and ai,j < 0 then x = am+1,j / ai,j if x > maxx then r = i k = j maxx = x end if end for end if end for for i = 1 to d if k = vi then h = i exit for end if end for

{ indeks i spremenljivke vi = k kaže pravo lokacijo k-tega stolpca, ki jo shranimo v spremenljivko h; več o zamenjavah vektorjev matrike A v točki 4.2.2.4 na strani 45 }

Pri tem se lahko pojavita dve možnosti:

1) Obstaja natanko en indeks r, ki ustreza pravilu (+++) 1.1) u = vbr { u = vbr prikazuje resnično lokacijo

vektorja Pr (=Pu) ki zapusti bazo }

1.2) transformiraj vektorje Pj (j = 0,…,s) (gl. točko 4.2.2.3);

1.3) zamenjaj vektor Pk z vektorjem Pr za uporabo v nadaljnih iteracijah (točka 5.2.2.4);

1.4) s procesom reševanje se vrni na točko 5.2.4 – testiranje optimalnosti in dopustnosti rešitve.

2) Ne obstaja noben tak r, ki ustreza pravilu (+++) V tem primeru ima LP neomejeno množico rešitev (gl. točko 2.4.3 na strani 15) in proces reševanja se ustavi.

Page 74: Izboljšanje standardne simpleks metode z algoritmom za ... metoda namreč uvaja umetne in dopolnilne spremenljivke, da začetni linearni program prevede v standardno obliko, primerno

68

5.3 REŠEVANJE LP Z METODO POTISNI IN POVLECI

Imamo naslednji LP (Vadnal, 1977):

Miminizirajmo namensko funkcijo stroškov

4321 5862 xxxxC +++=

pri omejitvah:

120424045280224

432

421

4321

≥++≥++≥+++

xxxxxxxxxx

in pogojih nenegativnosti:

01 ≥x , 02 ≥x , 03 ≥x , 04 ≥x

5.3.1 Inicializacija

(i) beri vhodne podatke

m = 3, s = 4

c = [ 2 6 8 5 ] ; nf = min c = [ -2 -6 -8 -5 ]

p0 = [ 80 40 120 ]

Matrika A

142040522214

(ii) konstruiraj vektor tipov omejitev q

q = [ "≥" "≥" "≥" ]

(iii) izračunaj vrednost d

d = 7

(iv) konstruiraj vektorja v in am+1,j ter dopolni vektor c

v = [ 1 2 3 4 5 6 7 ]

am+1,j = [ -2 -6 -8 -5 ]

c = [ -2 -6 -8 -5 0 0 0 ]

Page 75: Izboljšanje standardne simpleks metode z algoritmom za ... metoda namreč uvaja umetne in dopolnilne spremenljivke, da začetni linearni program prevede v standardno obliko, primerno

69

(v) konstruiraj vektorja vb in cb

vb = [ 0 0 0 ]

cb = [ 0 0 0 ]

Rezultat inicializacije: vb

0 0 0

cb

0 0 0

p0

80 40

120

A

4 1 2 2 2 5 0 4 0 2 4 1

Am+1,j -2 -6 -8 -5

v 1 2 3 4 5 6 7

c -2 -6 -8 -5 0 0 0

5.3.2 Izgradnja množice baznih spremenljivk (BVS) – Iteracija 1

vbcomplete = false

chosenj = [ 0 0 0 0 ]

do while vbcomplete = false :

5.3.2.1 Določitev vektorja Pk, ki bo uveden v novo bazo

Poišči indeks (k) vektorja, ki bo uveden v novo bazo

vb

0 0 0

p0

80

40 120

A

4 1 2 2

2 5 0 4 0 2 4 1

Am+1,j -2 -6 -8 -5

v 1 2 3 4 5 6 7

c -2 -6 -8 -5 0 0 0

pk = max ( am+1,j ) = -2

Page 76: Izboljšanje standardne simpleks metode z algoritmom za ... metoda namreč uvaja umetne in dopolnilne spremenljivke, da začetni linearni program prevede v standardno obliko, primerno

70

j = 1; k = 1

chosen 1 0 0 0

h = 1

5.3.2.2 Določitev vektorja Pr, ki bo odstranjen iz baze

Poišči indeks (r) vektorja, ki bo odstranjen iz baze:

480

; 240

204

80==Θ ; 20

240

==Θ ; obstajata dva indeksa r: 1 in 2, izberemo prvega po vrsti:

r = 1, u = vbr = 0

5.3.2.3 Transformacija vektorjev Pj (j = 0,…,s)

p1

p5

p0

20 0

120

A

4 0,25 0,5 0,5 2 4,5 -1 3 0 2 4 1

-2 -5,5 -7 -4

5.3.2.4 Zamenjava Pk s Pr v matriki A za uporabo v nadaljnih iteracijah

vbr = h; vb

1 = 1

cbr = ch; cb

1 = c1 = -2

vh = -r; v1 = -1

Ker je (qr (q1) = "≥" in u=0), u-ta vrstica baze ni zasedena. (1) Zgrajen je dodatni vektor Ps+r

= P5, (2) transformiran v skladu s specifično iteracijo in nato (3) shranjen v k-ti (k=1) stolpec matrike A.

(1) p5 (2) p5

-1 -0,25 0 0,5 0 0 0 -0,5

(3) A

-0,25 0,25 0,5 0,5 0,5 4,5 -1 3 0 2 4 1

Am+1,j -0,5 -5,5 -7 -4

Page 77: Izboljšanje standardne simpleks metode z algoritmom za ... metoda namreč uvaja umetne in dopolnilne spremenljivke, da začetni linearni program prevede v standardno obliko, primerno

71

vr+s = k; v5 = 1

(4) V vektorju v je shranjeno, daje v bazi na prvem mestu vektor p1 in da je v matriki A na prvem mestu enotni vektor (*) ter da je vektor p5 dejansko shranjen v matriki A na prvem mestu (**).

(4) v -1* 2 3 4 1** 6 7

5.3.2.5 Je množica baznih spremenljivk polna?

vb

1 0 0

chosenj = [ 0 0 0 0 ]

Baza še ni polna, saj sta dva elementa vektorja vb enaka vrednosti 0. Določi novi k (proces reševanja se vrne na točko 5.2.2.1).

5.3.3 Izgradnja množice baznih spremenljivk (BVS) – Iteracija 2

5.3.3.1 Določitev vektorja Pk, ki bo uveden v novo bazo

Poišči indeks (k) vektorja, ki bo uveden v novo bazo

vb

1 0 0

p0

20

0

120

A

-0,25 0,25 0,5 0,5 0,5 4,5 -1 3

0 2 4 1

Am+1,j -0,5 -5,5 -7 -4

v -1 2 3 4 1 6 7

c -2 -6 -8 -5 0 0 0

pk = max ( am+1,j ) = -0,5

j = 5; k = 1

Page 78: Izboljšanje standardne simpleks metode z algoritmom za ... metoda namreč uvaja umetne in dopolnilne spremenljivke, da začetni linearni program prevede v standardno obliko, primerno

72

chosen 1 0 0 0

h = 5

5.3.3.2 Določitev vektorja Pr, ki bo odstranjen iz baze

Poišči indeks (r) vektorja, ki bo odstranjen iz baze:

25,020

−;

5,00

05,0

0==Θ

r = 2, u = vbr = 0

5.3.3.3 Transformacija vektorjev Pj (j = 0,…,s)

p1

p0

20 0

120

A

-0,25 2,5 0 2 0,5 9 -2 6 0 2 4 1

-0,5 -1 -8 -1

5.3.3.4 Zamenjava Pk s Pr v matriki A za uporabo v nadaljnih iteracijah

vbr = h; vb

2 = 5

cbr = ch; cb

2 = c5 = 0

vh = -r; v5 = -2

Ker je (qr (q1) = "≥" in u=0), u-ta vrstica baze ni zasedena. (1) Zgrajen je dodatni vektor Ps+r

= P6, (2) transformiran v skladu s specifično iteracijo in nato (3) shranjen v k-ti (k=1) stolpec matrike A.

(1) p6 (2) p6

0 -0,5 -1 -2 0 0 0 -1

(3) A

-0,5 2,5 0 2

-2 9 -2 6 0 2 4 1

-1 -1 -8 -1

vr+s = k; v6 = 1

Page 79: Izboljšanje standardne simpleks metode z algoritmom za ... metoda namreč uvaja umetne in dopolnilne spremenljivke, da začetni linearni program prevede v standardno obliko, primerno

73

(4) V vektorju v je shranjeno, da je v bazi na drugem mestu vektor p5 in da je v matriki A na drugem mestu enotni vektor (*) ter da je vektor p6 dejansko shranjen v matriki A na prvem mestu.

(4) v -1 2 3 4 -2* 1** 7

5.3.3.5 Je množica baznih spremenljivk polna?

vb

1

5 0

chosenj = [ 0 0 0 0 ]

Baza še ni polna, saj je en element vektorja vb enak vrednosti 0. Določi novi k (proces reševanja se vrne na točko 5.2.2.1).

5.3.4 Izgradnja množice baznih spremenljivk (BVS) – Iteracija 3

5.3.4.1 Določitev vektorja Pk, ki bo uveden v novo bazo

Poišči indeks (k) vektorja, ki bo uveden v novo bazo

vb

1 5 0

p0

20 0

120

A

-0,5 2,5 0 2 -2 9 -2 6 0 2 4 1

Am+1,j -1 -1 -8 -1

v -1 2 3 4 -2 1 7

pk = max ( am+1,j ) = -8

j = 3; k = 3

chosen 1 1 1 1

h = 3

Page 80: Izboljšanje standardne simpleks metode z algoritmom za ... metoda namreč uvaja umetne in dopolnilne spremenljivke, da začetni linearni program prevede v standardno obliko, primerno

74

5.3.4.2 Določitev vektorja Pr, ki bo odstranjen iz baze

Poišči indeks (r) vektorja, ki bo odstranjen iz baze:

34

120==Θ

r = 3, u = vb3 = 0

5.3.4.3 Transformacija vektorjev Pj (j = 0,…,s)

p1

p5

p3

p0

20 60 30

A

-0,5 2,5 0 2 -2 10 -2 6,5 0 0,5 4 0,25

-1 3 -8 1

5.3.4.4 Zamenjava Pk s Pr v matriki A za uporabo v nadaljnih iteracijah

vbr = h; vb

3 = 3

cbr = ch; cb

3 = c3 = -8

vh = -r; v3 = -3

Ker je (qr (q3) = "≥" in u=0), u-ta vrstica baze ni zasedena. (1) Zgrajen je dodatni vektor Ps+r

= P7, (2) transformiran v skladu s specifično iteracijo in nato (3) shranjen v k-ti (k=3) stolpec matrike A.

(1) p7 (2) p7

0 0 0 -0,5 -1 -0,25 0 -2

(3) A

-0,5 2,5 0 2 -2 10 -0,5 6,5 0 0,5 -0,25 0,25

-1 3 -2 1

vr+s = k; v7 = 3

(4) V vektorju v je shranjeno, da je v bazi na tretjem mestu vektor p3 in da je v matriki A na tretjem mestu enotni vektor (*) ter da je vektor p7 dejansko shranjen v matriki A na tretjem mestu (**).

(4) v -1 2 -3* 4 -2 1 3**

Page 81: Izboljšanje standardne simpleks metode z algoritmom za ... metoda namreč uvaja umetne in dopolnilne spremenljivke, da začetni linearni program prevede v standardno obliko, primerno

75

5.3.4.5 Je množica baznih spremenljivk polna?

vb

1 5 3

chosenj = [ 0 0 0 0 ]

Baza je polna. Proces reševanja nadaljuj v točki 5.2.3 – z izboljšanjem bazne rešitve.

5.3.5 Izboljševanje bazne rešitve – Iteracija 4

5.3.5.1 Določitev vektorja Pk, ki bo uveden v novo bazo

Poišči indeks (k) vektorja, ki bo uveden v novo bazo

vb

1 5 3

p0

20

60

30

A

-0,5 2,5 0 2 -2 10 -0,5 6,5

0 0,5 -0,25 0,25

Am+1,j -1 3 -2 1

v -1 2 -3 4 -2 1 3

pk = max ( am+1,j ) = 3

j = 2; k = 2

h = 2

5.3.5.2 Določitev vektorja Pr, ki bo odstranjen iz baze

Poišči indeks (r) vektorja, ki bo odstranjen iz baze:

5,220

; 1060

; 5,0

30

61060

==Θ

r = 2, u = vb2 = 5

Page 82: Izboljšanje standardne simpleks metode z algoritmom za ... metoda namreč uvaja umetne in dopolnilne spremenljivke, da začetni linearni program prevede v standardno obliko, primerno

76

5.3.5.3 Transformacija vektorjev Pj (j = 0,…,s)

p1

p2

p3

p0

5 6

27

A

2,77E-17 2,5 0,125 0,375 -0,2 10 -0,05 0,65 0,1 0,5 -0,225 -0,075

-0,4 3 -1,85 -0,95

5.3.5.4 Zamenjava Pk s Pr v matriki A za uporabo v nadaljnih iteracijah

vbr = h; vb

2 = 2

cbr = ch; cb

2 = c2 = -6

vh = -r; v2 = -2

u=vbr = vb

2 = 2

u (=2) označuje lokacijo vektorja (stolpec) Pr (=Pu), ki ga bomo odstranili iz baze. (1) Pu je bazni vektor s komponentami Pu

i = 0 ((i=1,…,m) in (i≠r)), in Pur = 1. Ker Pu lahko v rešitev

ponovno vstopi pri kasnejših iteracijah, ga ustrezno (2) transformiramo v skladu s specifično iteracijo in (3) shranimo v k-ti stolpec matrike A.

(1) p2 (2) p2

0 -0,25 1 0,1 0 -0,05 0 -0,3

(3) A

2,77E-17 -0,25 0,125 0,375

-0,2 0,1 -0,05 0,65 0,1 -0,05 -0,225 -0,075

-0,4 -0,3 -1,85 -0,95

vu= k; v2 = 2

(4) V vektorju v je shranjeno, da je v bazi na drugem mestu vektor p2 in da je v matriki A na drugem mestu enotni vektor (*) ter da je vektor p5 dejansko shranjen v matriki A na drugem mestu (**).

(4) v -1 -2* -3 4 2** 1 3

Ker v vrstici am+1,j ni nobenega pozitivnega elementa več, ustavi iskanje, saj izboljšava ni več možna.

Page 83: Izboljšanje standardne simpleks metode z algoritmom za ... metoda namreč uvaja umetne in dopolnilne spremenljivke, da začetni linearni program prevede v standardno obliko, primerno

77

5.3.6 Test optimalnosti in dopustnosti

p0

5 6

27

)0( 0 >iP (i=1,…,m); našli smo optimalno rešitev:

vb

1 2 3

p0

5 6

27

A

2,77E-17 -0,25 0,125 0,375 -0,2 0,1 -0,05 0,65 0,1 -0,05 -0,225 -0,075

Am+1,j -0,4 -0,3 -1,85 -0,95

c -2 -6 -8 -5 0 0 0

Optimalna rešitev LP je torej47

2765

3

2

1

===

xxx

in ob upoštevanju, da je vrednost spremenljivke x4 = 0, je vrednost namenske funkcije minimalna:

2620527866525862 4321 =⋅+⋅+⋅+⋅=⋅+⋅+⋅+⋅= xxxxC .

47 Rešitev, dobljena s pomočjo metode Potisni in povleci, je identična rešitvi, ki smo jo dobili s standardno simpleks metodo (gl. str. 33).

Page 84: Izboljšanje standardne simpleks metode z algoritmom za ... metoda namreč uvaja umetne in dopolnilne spremenljivke, da začetni linearni program prevede v standardno obliko, primerno

78

6. PRIMERJAVA OBRAVNAVANIH ALGORITMOV

Dva izmed treh bistvenih ciljev magistrskega dela sta bila 1) implementirati vse tri obravnavane algoritme (standardno simpleks metodo, algoritem za zoženje tabele simpleksov in metodo Potisni in povleci) na računalniku v obliki aplikacije, ki rešuje dane linearne programe na vse tri načine, in 2) s primerjavo rezultatov reševanja numeričnih primerov LP ugotoviti izboljšavo standardne simpleks metode z algoritmom za zoženje tabele simpleksov in z metodo Potisni in povleci.

S sprogramirano aplikacijo sem rešil numerične primere linearnega programiranja. V prilogi je predstavljenih pet konkretnih primerov LP ter podrobni postopki njihovega reševanja s standardno simpleks metodo in z vsako od obravnavanih novih dveh tehnik. Ostali primeri, omenjeni v analizi, so na voljo pri avtorju magistrskega dela.

6.1 ANALIZA REŠEVANJA NUMERIČNIH PRIMEROV

Ker je standardna simpleks metoda pri problemih večjih dimenzij in pri linearnih programih z (=) in (≥) omejitvami tako časovno kot prostorsko (v smislu porabe pomnilnika) potratna, poskušata predstavljeni modifikaciji – vsaka na svoj način – zmanjšati računsko kompleksnost reševanja LP. V nadaljevanju so predstavljene ugotovitve analize reševanja numeričnih primerov linearnega programiranja, ki jih v celoti vsebuje priloga A.

Pri algoritmu za zoženje tabele simpleksov se zmanjša kompleksnost z okleščenjem tabele simpleksov na matriko velikosti vhodnih neenačb. Tako pri reševanju LP, torej pri iteracijskem izboljševanju namenske funkcije, ni potrebno več operirati z vsemi koeficienti dopolnilnih in umetnih spremenljivk.

Število računskih operacij se glede na standardno simpleks metodo močno zmanjša. Rezultati reševanja konkretnih LP pokažejo, da se število matematičnih operacij zmanjša za 33% (v najslabšem) oz. 58% (v najboljšem primeru). Povprečno se je pri naših petnajstih primerih računska kompleksnost pri algoritmu za zoženje tabele simpleksov zmanjšala za 47% glede na standardno simpleks metodo.

Metoda Potisni in povleci gre, poleg odprave preračunavanja koeficientov umetnih in dopolnilnih spremenljivk, še korak dlje. Tako standardna simpleks metoda kot algoritem za zoženje tabele simpleksov začenjata svoje iterativno iskanje optimalne rešitve pri enem izmed oglišč – ekstremnih točk množice točk dopustnih rešitev; začetna točka, ki je določena z začetno bazo, je običajno daleč od optimalne rešitve. V nasprotju s tem konceptom začenja Potisni in povleci iskanje optimalne rešitve v oglišču, ki je blizu optimalne rešitve, in za katerega je možno, da se sploh ne nahaja na mejah območja dopustnih rešitev. Druga faza metode ("povleci") pa v primeru, ko je bilo potiskanje proti optimalni točki premočno, povleče rešitev nazaj proti optimalni. Z drugimi besedami, metoda začenja iskanje optimalne rešitve "že ogreta", pri drugih dveh metodah pa je "štart hladen" (Arsham, Damij, Grad, 2002).

Page 85: Izboljšanje standardne simpleks metode z algoritmom za ... metoda namreč uvaja umetne in dopolnilne spremenljivke, da začetni linearni program prevede v standardno obliko, primerno

79

Analiza rezultatov reševanja LP z metodo Potisni in povleci pokaže, da je računska kompleksnost drastično manjša kot pri standardni simpleks metodi. Zmanjšala se je za 61% (v najslabšem primeru) oz. 84% (v najboljšem primeru). Povprečno se je pri obravnavanih petnajstih primerih zmanjšala za 72%.

Regresijska analiza tudi pokaže, da ni odvisnosti med številom operacij pri reševanju LP s standardno simpleks metodo in relativno izboljšavo z algoritmom za zoženje tabele simpleksov oz. metodo Potisni in povleci (vrednost determinacijskih koeficientov je 0,12384 oz. 0,0107). Z drugimi besedami, relativno izboljšanje rezultatov reševanja z uporabo obravnavanih novih strategij glede na standardno metodo ni odvisno od tega, kako kompleksen je vhodni LP.

Primerjava rezultatov, dobljenih z novima strategijama pokaže, da je Potisni in povleci glede na algoritem za zoženje tabele simpleksov zmanjšal računsko kompleksnost za 27% v najslabšem oz. 64% v najboljšem primeru, povprečno pa za skoraj polovico (47%).

Spodnji tabeli in graf zgoščeno prikazujejo primerjavo učinkovitosti oz. računske kompleksnosti vseh treh obravnavanih metod.

Tabela 7: Število operacij pri reševanju numeričnih primerov z obravnavanimi strategijami

Operacije+ in -

Operacije * in /

Operacije+ in -

Operacije * in /

Operacije+ in -

Operacije * in /

Primer01 323 249 154 150 72 88

Primer02 468 366 196 183 78 59

Primer03 186 144 113 105 56 58

Primer04 1039 839 404 387 176 214

Primer05 906 648 366 348 179 185

Primer06 1830 1257 800 792 412 458

Primer07 142 111 80 72 42 41

Primer08 70 56 44 40 24 25

Primer09 304 233 131 116 82 99

Primer10 243 171 103 93 44 52

Primer11 89 59 44 35 24 19

Primer12 102 64 53 40 26 24

Primer13 158 109 78 70 41 37

Primer14 450 367 249 239 122 136

Primer15 468 366 198 183 78 95

Standardna simpleks metoda

Algoritem za zoženje tabele simpleksov

Metoda Potisni in povleci

Vir: Lastni izračuni.

Page 86: Izboljšanje standardne simpleks metode z algoritmom za ... metoda namreč uvaja umetne in dopolnilne spremenljivke, da začetni linearni program prevede v standardno obliko, primerno

80

Slika 5: Število operacij pri reševanju numeričnih primerov z obravnavanimi strategijami

0

500

1000

1500

2000

2500

3000

Štev

ilo o

pera

cij

Standardna simpleks metoda 572 834 330 1878 1554 3087 253 126 537 414 148 166 267 817 834

Alg. za zoženje tabele simpleksov 304 379 218 791 714 1592 152 84 247 196 79 93 148 488 381Metoda Potisni in povleci 160 137 114 390 364 870 83 49 181 96 43 50 78 258 173

Primer01 Primer02 Primer03 Primer04 Primer05 Primer06 Primer07 Primer08 Primer09 Primer10 Primer11 Primer12 Primer13 Primer14 Primer15

Število operacij pri reševanju numeričnih primerov z obravnavanimi strategijami

Vir: Lastni izračuni.

Tabela 8: Izboljšava obravnavanih strategij glede na število operacij

Alg. za zoženje tabele simpleksov : Standardna

simpleks metoda(%)

Metoda Potisni in povleci : Standardna simpleks

metoda(%)

Metoda Potisni in povleci : Alg. za zožanje tabele

simpleksov(%)

Primer01 -47% -72% -47%

Primer02 -55% -84% -64%

Primer03 -34% -65% -48%

Primer04 -58% -79% -51%

Primer05 -54% -77% -49%

Primer06 -48% -72% -45%

Primer07 -40% -67% -45%

Primer08 -33% -61% -42%

Primer09 -54% -66% -27%

Primer10 -53% -77% -51%

Primer11 -47% -71% -46%

Primer12 -44% -70% -46%

Primer13 -45% -71% -47%

Primer14 -40% -68% -47%

Primer15 -54% -79% -55%

Povprečno -47% -72% -47%

Min -33% -61% -27%

Max -58% -84% -64% Vir: Lastni izračuni.

Na podlagi navedenih izsledkov analize lahko potrdim hipotezo, da obe novi strategiji, algoritem za zoženje tabele simpleksov in metoda Potisni in povleci, vplivata na računsko kompleksnost v smislu zmanjšanja števila aritmetičnih operacij pri reševanju problemov linearnega programiranja.

Page 87: Izboljšanje standardne simpleks metode z algoritmom za ... metoda namreč uvaja umetne in dopolnilne spremenljivke, da začetni linearni program prevede v standardno obliko, primerno

81

7. SKLEP

V magistrskem delu sem dopolnil razvoj pomembnega področja operacijskih raziskav, ki se ukvarja z optimizacijo z omejitvami, konkretno, linearnim programiranjem. Prikazal sem dve modifikaciji standardne simpleks metode, ki poskušata zmanjšati kompleksnost reševanja lienarnih problemov (LP), in ki sta bili razviti v raziskavah, v katerih sem sodeloval kot programer računalniške implementacije.

Linearno programiranje, torej reševanje (optimiranje) danega problema pri danih pogojih, se v praksi uporablja v številnih aplikacijah na raznovrstnih področjih: ekonomiji, financah, bančništvu, logistiki, statistiki, uporabni matematiki, itd. V povezavi s poglobljeno specializacijo in širjenjem organizacije se namreč pojavi problem, kako ustrezno alocirati omejene vire (proizvodne zmogljivosti, surovine,…) na aktivnosti, ki bodo najbolj pripomogle k učinkovitosti in uspešnosti celotnega podjetja.

Kot je ugotovljeno v drugem poglavju, obstajata danes dve družini tehnik reševanja linearnih problemov – simpleksne metode in metode notranjih točk. Obema je skupen iterativni način iskanja rešitev, t.j. postopno iskanje vedno boljših rešitev, dokler ne najdeta optimalne. Tehnike prve družine (npr. simpleksna metoda), katerih začetnik je bil Dantzig, so osredotočene na iskanje dopustnih rešitev, in sicer toliko časa, dokler ni več možno izboljšati vrednosti namenske funkcije. Pri drugi družini (npr. Karmarkarjeva metoda) pa gre za iskanje največje vrednosti namenske funkcije, a ne preko "obiskovanja" ekstremnih točk ampak preko točk, ki se nahajajo znotraj območja dopustnih rešitev.

Razvoj metod je šel seveda v smeri izboljšanja (in pohitritve) načina iskanja optimalne rešitve. Reševanje linearnih problemov – v obliki računalniške implementacije – namreč zahteva veliko pomnilnika in časa ter je računsko kompleksno. Pri standardni simpleks metodi npr. moramo najprej prevesti začetni linearni problem v standardno obliko, primerno za reševanje s to metodo. V ta namen se uvedejo dopolnilne in umetne spremenljivke linearnega modela, ki se pri vsaki iteraciji reševanja transformirajo v nove vrednosti. Pri problemu velikostnega reda m·s lahko tako pridemo pri linearnih neenačbah s pogoji tipa (≥) do problema velikostnega reda m·3s. Da bi računsko in časovno kompleksnost zmanjšali, se v praksi razvijajo nove tehnike in strategije metode, ki vsaka na svoj način poskuša rešiti omenjeni problem.

Algoritem za zoženje tabele simpleksov (četrto poglavje) skrči kompleksnost problema za dopolnilne in umetne spremenljivke. Metoda Potisni in povleci (peto poglavje) se od standardne simpleks metode oddalji po načinu določanja izhodiščne točke, torej začetne bazne rešitve. Pri standardni simpleks metodi je začetna rešitev daleč od optimalne rešitve, do katere pridemo postopoma, preko ekstremnih točk območja dopustnih rešitev. V nasprotju s tem konceptom Potisni in povleci začne iskanje optimalne točke s pomočjo rešitve, ki je že blizu optimalne, ni pa nujno, da je ta začetna rešitev tudi dopustna. V bazo najprej (faza "Potisni") postopoma vpeljujemo spremenljivke, ki vodijo k optimalnosti; v primeru, da smo "potiskali" predaleč, pa nato rešitev na dopustno optimalno vrnemo s fazo "povleci".

Page 88: Izboljšanje standardne simpleks metode z algoritmom za ... metoda namreč uvaja umetne in dopolnilne spremenljivke, da začetni linearni program prevede v standardno obliko, primerno

82

Tako ti dve novi strategiji reševanja LP, obravnavani v magistrskem delu, zmanjšujeta kompleksnost reševanja linearnih problemov in prideta do optimalne rešitve z manj računskimi operacijami, hitreje in z manjšo zasedbo pomnilnika. Slednje je dokazano z analizo reševanja petnajstih numeričnih primerov, prikazano v šestem poglavju in s pomočjo priloge, v kateri je predstavljenih pet primerov in podrobni postopki njihovega reševanja z vsako od obravnavanih dveh tehnik in s standardno simpleks metodo. Prikazani primeri so bili rešeni s pomočjo aplikacije, sprogramirane v razvojnem orodju Microsoft Visual Studio, konkretno v programskem jeziku Visual Basic.

Cilji magistrskega dela, zapisani v uvodu, so doseženi, saj sem prikazal standardno simpleks metodo linearnega programiranja in njeno uporabo ter podrobno predstavil novi tehniki reševanja LP. Implementiral sem standardno simpleks metodo, algoritem za zoženje tabele simpleksov in metodo Potisni in povleci v obliki računalniške aplikacije, ki omogoča reševanje danih linearnih problemov na vse tri načine. S primerjavo rezultatov reševanja numeričnih primerov linearnih problemov sem dokazal izboljšavo standardne simpleks metode z novima strategijama. Kljub že narejenim izboljšavam obravnavano področje omogoča še številne nadaljne možnosti za raziskovalno delo in, kar je iz gospodarskega vidika še bolj obetavno, aplikacije v praksi.

Page 89: Izboljšanje standardne simpleks metode z algoritmom za ... metoda namreč uvaja umetne in dopolnilne spremenljivke, da začetni linearni program prevede v standardno obliko, primerno

83

LITERATURA

[1] Arsham H., Damij T., Grad J.: An algorithm for Simplex tableau reduction : the push-and-pull solution strategy. Working Papers, no. 127. Ljubljana : Ekonomska fakulteta, 2002. 45 str.

[2] Bland R.G.: New finite pivoting rules for the simplex method. Mathematics of Operations Research, 1952, št. 2, str. 103-107.

[3] Borgwardt H. K.: The Simplex Method. Berlin : Springer Verlag, 1987. 268 str.

[4] Bronštejn I.K., Semendjajev K.A., Musiol G., Mühlig H.: Matematični priročnik. Ljubljana: Tehniška založba Slovenije, 1997.

[5] Chandy, P., Kharabe K.: Pricing in the Government Bond Market. Interfaces, 16(1986), št. 1, str. 65-71.

[6] Chao Hung-Po, et al.: EPRI Reduces Fuel Inventory Costs in the Electric Utility Industry. Interfaces, 19(1989), št. 1, str. 48-67.

[7] Chvatal Vašek: Linear Programming. Freeman, 1983. 478 str.

[8] Curwin Jon, Slater Roger: Quantitative Methods For Business Decisions – 5th edition. Thomson Learning, 2002. 682 str.

[9] Damij Talib, Grad Janez: An algorithm for simplex tableau reduction. Working Papers, no. 125. Ljubljana : Ekonomska fakulteta, 2002. 12 str.

[10] Damij Talib, Grad Janez: Diet nutrition optimization and planning system. Central European journal for operations research and economics, 3(1994-95), št. 4, str. 311-323.

[11] Damij Talib, Grad Janez: Računalniško planiranje dietne prehrane. Zdravstveni Vestnik, Ljubljana, 54(1985), št. 1, str. 7-9.

[12] Damij Talib, Grad Janez: Reduciranje simpleksne tabele splošne metode simpleksov. Informatica, Ljubljana, 9(1985), 1, str. 3-8.

[13] Dantzig George B., Orden A., Wolfe P.: The generalized simplex method for minimizing a linear form under linear inequality restraints. Pacific Journal of Mathematics, 1955, št. 5, str. 183-195.

[14] Dantzig George B.: Linear Programming and Extensions. Princeton, New Jersey : Princeton University Press, 1963.

[15] Dantzig George B.: The Diet Problem. Interfaces, 20(1990), št. 4, str. 43-47.

[16] Dewitt C., et al.: OMEGA: An Improved Gasoline Blending System for Texaco. Interfaces, 19(1989), št. 1, 85-101.

Page 90: Izboljšanje standardne simpleks metode z algoritmom za ... metoda namreč uvaja umetne in dopolnilne spremenljivke, da začetni linearni program prevede v standardno obliko, primerno

84

[17] Edwards J., Wagner H., Wood W.: Blue Bell Trimms Its Inventory. Interfaces, 15(1985), št. 1, 34-53.

[18] Feiring Bruce: Linear programming: An Introduction. Sage University Paper series on Quantitative Applications in the Social Sciencees, 07-060. Beverly Hills : Sage Publications, 1986. 90 str.

[19] Fourer Robert: Linear Programming Frequently Asked Questions. Optimization Technology Center of Northwestern University and Argonne National Laboratory. [URL: http://www-unix.mcs.anl.gov/otc/Guide/faq/linear-programming-faq.html], 7.6.2002.

[20] Gass Saul I.: Linear Programming: Methods and Applications. 5th edition. International Thomson Publishing, 1985.

[21] Gilmore P., Gomory R.: A Linear Programming Approach to the Cutting Stock Problem. Operations Research, 9(1961), str. 849-859.

[22] Gilmore P., Gomory R.: A Linear Programming Approach to the Cutting Stock Problem: Part II. Operations Research, 11(1963), str. 863-888.

[23] Heizer J. H., Render Barry: Operations management. Upper Saddle River (New Jersey) : Prentice Hall, 2001. 874 str.

[24] Hernandez J. P., Proth J. M.: A good solution instead of an optimal one. Interfaces, 12(1982), št. 2, 37-41.

[25] Hillier S. Frederick, Lieberman J. Gerald: Introduction to mathematical programming – 2nd edition. Singapore : McGraw-Hill, 1995. 716 str.

[26] Hooker J. N.: Karmarkar’s Linear Programming Algorithm. Interfaces, 16(1986), št. 4, 75-90.

[27] Illes Tibor, Terlaky Tamas: Pivot versus interior point methods: Pros and cons. Invited review, European Journal of Operations Research, 2002, št. 140, str. 170-190.

[28] Jamšek Jana: Karmarkarjev algoritem za reševanje linearnih programov. Obzornik za matematiko in fiziko, 38(1991), št. 6, str. 161-169.

[29] Karmarkar Narendra: A New Polynomial Time Algorithm for Linear Programming. Combinatorica, 4(1984), str. 373-395.

[30] Keeney R.L.: A Decision Analysis with Multiple Objectives: The Mexico City Airport. Bell Journal of Economics and Management Science, 4(1973), 101-117.

[31] Kerkez Janko: Primjena linearnog programiranja u planiranju proizvodnje. Naše gospodarstvo, 42(1996), št. 5/6, str. 658-672.

[32] Khacijan L.G.: A polynomial time algorithm in linear programming. Soviet Mathematics Doklady, 20(1979), str. 191-194.

Page 91: Izboljšanje standardne simpleks metode z algoritmom za ... metoda namreč uvaja umetne in dopolnilne spremenljivke, da začetni linearni program prevede v standardno obliko, primerno

85

[33] Klee V., Minty G.J.: How good is the simplex algorithm?. Inequalities III, new York: Academic Press, 1972.

[34] Marsten Roy, et al.: Interior Point Methods for Linear Programming: Just Call Newton, Lagrange, and Fiacco and McCormick. Interfaces, 20(1990), št. 4, 105-116.

[35] Meško Ivan: Optimizacija poslovanja : s programi na disketi. Maribor : Ekonomsko-poslovna fakulteta, 1994. 251 str.

[36] Nguyen D.T., Bai Y., Qin J., Han B., Hu Y.: Computational aspects of linear programming Simplex method. Advances in engineering software, 31 (2000), str. 539-545.

[37] Orden Alex: LP from the ‘40s to ‘90s. Interfaces, 23(1993), št. 5, 2-12.

[38] Padberg Manfred: Linear Optimization and Extensions – 2nd revised and expanded edition. Springer, 1999. 501 str.

[39] Pan P.Q.: A Basis-Deficiency-Allowing Variation of the Simplex Method for Linear Programming. Computers Mathematics Applications, 36(1998), št. 3, str. 33-53.

[40] Paparrizos Konstantinos: The two-phase simplex without artificial variables. Methods of operations research, 61(1), 1990, str. 73-83.

[41] Powell W., et al.: Maximizing Profits for North American Van Lines’ Truckload Division: A New framework for Pricing and Operations. Interfaces, 18(1988), št. 1, 21-41.

[42] Stevenson J. William: Introduction to management science. 2nd edition. Irwin, 1992. 904 str.

[43] Sullivan R., Secrest S.: A Simple Optimization DSS for Production Planning at Dairyman’s Cooperative Creamery Association. Interfaces, 15(1985), št. 5, 46-53.

[44] Taylor Philip, Huxley Stephen: A Break from Tradition for the San Francisco Police: Patrol Officer Scheduling Using an Optimization-based Decision Support System. Interfaces, 19(1989), št. 1, 4-24.

[45] Terlaky Tamas, Zhang Shushong: Pivot Rules for Linear Programming: a survey on recent theoretical developments. Annals of Operations Research, 46(1993), št. 1-4, str. 203-233.

[46] Vadnal Alojzij: Rešeni problemi linearnega programiranja. Ljubljana : Državna založba Slovenije, 1977. 200 str.

[47] Vanderbei Robert J.: Linear Programming: Foundations and Extensions. Kluwer Academic Publishers, 1996. 418 str.

[48] Vasko J. Francis, et al.: Selecting Optimal Ingot Site for Bethlehem Steel. Interfaces, 19(1989), št. 1, 68-84.

Page 92: Izboljšanje standardne simpleks metode z algoritmom za ... metoda namreč uvaja umetne in dopolnilne spremenljivke, da začetni linearni program prevede v standardno obliko, primerno

86

[49] Winston L. Wayne: Operations research: applications and algorithms – 3rd edition. Belmont, California : Duxbury Press, 1994. 1318 str.

VIRI

[1] Čibej Jože Andrej: Sistemi za podporo poslovnemu odločanju. Zapiski predavanj. [http://www.ef.uni-lj.si/predmeti/_struktura/izpis.asp?vrsta=gradivo&predmet=404], 15. oktober 2002.

[2] Paparrizos Konstantinos, Samaras Nikolaos, Stephanides George: A new efficient primal dual simplex algorithm. Computers & Operations Research, v tisku.

Page 93: Izboljšanje standardne simpleks metode z algoritmom za ... metoda namreč uvaja umetne in dopolnilne spremenljivke, da začetni linearni program prevede v standardno obliko, primerno

1

PRILOGA

Priloga: numerični primeri LP in njihove rešitve

Page 94: Izboljšanje standardne simpleks metode z algoritmom za ... metoda namreč uvaja umetne in dopolnilne spremenljivke, da začetni linearni program prevede v standardno obliko, primerno

Primer 02:

Minimiziraj

4321 1043 xxxxC +++=

ob danih pogojih

202252210

421

432

431

=++<++>++

xxxxxxxxx

in pogojih nenegativnosti

0≥jx ; 4,...,1=j

===================================================== Primer 02 - Original Simplex algorithm (Dantzig) =====================================================Minimum: C:\Push-Pull-Dantzig-Simplex\example02.dan========================================================

vBasis RHS 8 10 9 25 10 20

Vector c(j) 1 3 4 10 0 0 0 30 30 30

Matrix A 1 0 1 1 -1 0 0 1 0 0 0 1 2 2 0 -1 0 0 1 0 1 2 0 1 0 0 -1 0 0 1

Vector cb 30 30 30

zj - cj: 59 87 86 110 -30 -30 -30 0 0 0

z0: 1650

==================================================================

Iteration 1 =================vBasis RHS 4 10 9 5 10 10

Matrix A 1 0 1 1 -1 0 0 1 0 0 -2 1 0 0 2 -1 0 -2 1 0 0 2 -1 0 1 0 -1 -1 0 1

Vector cb 10 30 30

zj - cj: -51 87 -24 0 80 -30 -30 -110 0 0

z0: 550

==================================================================

Iteration 2 =================The degeneracy occurs!vBasis RHS 4 10 9 0 2 5

Matrix A 1 0 1 1 -1 0 0 1 0 0 -2 0 0,5 0 1,5 -1 0,5 -1,5 1 -0,5 0 1 -0,5 0 0,5 0 -0,5 -0,5 0 0,5

Vector cb 10 30 3

zj - cj: -51 0 19,5 0 36,5 -30 13,5 -66,5 0 -43,5

z0: 115

==================================================================

Iteration 3 =================vBasis RHS 4 10 5 0 2 5

Matrix A-0,33 0 1,33 1 0 -0,66 0,33 0 0,66 -0,33 -1,33 0 0,33 0 1 -0,66 0,33 -1 0,66 -0,33 0,66 1 -0,66 0 0 0,33 -0,66 0 -0,33 0,66

Vector cb 10 0 3

zj - cj: -2,33 0 7,33 0 0 -5,66 1,33 -30 -24,33 -31,33

Page 95: Izboljšanje standardne simpleks metode z algoritmom za ... metoda namreč uvaja umetne in dopolnilne spremenljivke, da začetni linearni program prevede v standardno obliko, primerno

z0: 115

==================================================================

Iteration 4 =================vBasis RHS 4 10 3 0 2 5

Matrix A 5 0 0 1 -4 2 -1 4 -2 1 -4 0 1 0 3 -2 1 -3 2 -1 -2 1 0 0 2 -1 0 -2 1 0

Vector cb 10 4 3

zj - cj: 27 0 0 0 -22 9 -6 -8 -39 -24

z0: 115

==================================================================

Iteration 5 =================vBasis RHS 1 2 3 8 2 9

Matrix A 1 0 0 0,2 -0,8 0,4 -0,2 0,8 -0,4 0,2 0 0 1 0,8 -0,2 -0,4 0,2 0,2 0,4 -0,2 0 1 0 0,4 0,4 -0,2 -0,4 -0,4 0,2 0,4

Vector cb 1 4 3

The solution is optimal:========================

zj - cj: 0 0 0 -5,4 -0,400000000000001 -1,8 -0,6 -29,6 -28,2 -29,4

z0: 61

Add/Sub operations: 468 Mult/Div operations: 366

=================================================== Primer 02 - Simplex tableu reduction algorithm ===================================================Minimum: C:\Push-Pull-Dantzig-Simplex\example02.sim=================================================vBasis RHS 8 10 9 25 10 20

Vector c(j)

Matrix A 1 0 1 1 0 1 2 2 1 2 0 1

Vector cb 30 30 30

Vector v 1 2 3 4 5 6 7 Vector c 1 3 4 10 0 0 0

zj - cj: 59 87 86 110

z0: 1650

==================================================================

Iteration 1 =================vBasis RHS 4 10 9 5 10 10

Matrix A 1 0 1 -1 -2 1 0 2 0 2 -1 1

Vector cb 10 30 30

Vector v 1 2 3 -1 4 6 7 Vector c 1 3 4 10 0 0 0

zj - cj: -51 87 -24 80

Page 96: Izboljšanje standardne simpleks metode z algoritmom za ... metoda namreč uvaja umetne in dopolnilne spremenljivke, da začetni linearni program prevede v standardno obliko, primerno

Primer 06:

Minimiziraj

987654321 62732528 xxxxxxxxxC ++++++++=

ob danih pogojih

759637585215074110598710565490321

=++=++=++=++=++=++

xxxxxx

xxxxxx

xxxxxx

in pogojih nenegativnosti

0≥jx ; 9,...,1=j

===================================================== Primer 06 - Original Simplex algorithm (Dantzig) =====================================================

Minimum: C:\Push-Pull-Dantzig-Simplex\example06.dan========================================================

vBasis RHS 10 90 11 105 12 105 13 150 14 75 15 75

Vector c(j) 8 2 5 2 1 3 7 2 6 24 24 24 24 24 24

Matrix A 1 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 1 0 0 0 1 0 0 1 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 1 0 0 0 0 0 1

Vector cb

24 24 24 24 24 24

zj - cj: 40 46 43 46 47 45 41 46 42 0 0 0 0 0 0

z0: 14400

==================================================================

Iteration 1 =================vBasis RHS 10 90 11 30 12 105 13 150 5 75 15 75

Matrix A 1 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 -1 0 1 0 1 0 -1 0 0 1 0 0 -1 0 0 0 0 0 0 0 1 1 1 0 0 1 0 0 0 1 0 0 1 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 1 0 0 0 0 0 1

Vector cb 24 24 24 24 1 24

zj - cj: 40 -1 43 46 0 45 41 -1 42 0 0 0 0 -47 0

z0: 10875

==================================================================

Iteration 2 =================vBasis RHS 10 90 4 30 12 105 13 120

Page 97: Izboljšanje standardne simpleks metode z algoritmom za ... metoda namreč uvaja umetne in dopolnilne spremenljivke, da začetni linearni program prevede v standardno obliko, primerno

5 75 15 75

Matrix A 1 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 -1 0 1 0 1 0 -1 0 0 1 0 0 -1 0 0 0 0 0 0 0 1 1 1 0 0 1 0 0 0 1 1 0 0 0 -1 1 1 0 0 -1 0 1 1 0 0 1 0 0 1 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 1 0 0 0 0 0 1

Vector cb 24 2 24 24 1 24

zj - cj: 40 45 43 0 0 -1 41 45 42 0 -46 0 0 -1 0

z0: 9495

==================================================================

Iteration 3 =================vBasis RHS 10 15 4 105 12 105 13 45 2 75 15 75

Matrix A 1 0 1 0 -1 0 0 -1 0 1 0 0 0 -1 0 0 0 0 1 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 1 0 0 0 1 0 0 0 -1 -1 1 0 0 0 -1 0 1 0 0 0 1 0 0 1 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 1 0 0 0 0 0 1

Vector cb 24 2 24 24

2 24

zj - cj: 40 0 43 0 -45 -1 41 0 42 0 -46 0 0 -46 0

z0: 6120

==================================================================

Iteration 4 =================vBasis RHS 3 15 4 105 12 105 13 45 2 75 15 60

Matrix A 1 0 1 0 -1 0 0 -1 0 1 0 0 0 -1 0 0 0 0 1 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 1 0 0 0 1 0 0 0 -1 -1 1 0 0 0 -1 0 1 0 0 0 1 0 0 1 0 0 1 0 0 0 0 0 1 0 -1 0 0 0 1 1 0 1 1 -1 0 0 0 1 1

Vector cb 5 2 24 24 2 24

zj - cj: -3 0 0 0 -2 -1 41 43 42 -43 -46 0 0 -3 0

z0: 5475

==================================================================

Iteration 5 =================vBasis RHS 3 75 4 105 12 45 13 45 2 15 8 60

Matrix A

Page 98: Izboljšanje standardne simpleks metode z algoritmom za ... metoda namreč uvaja umetne in dopolnilne spremenljivke, da začetni linearni program prevede v standardno obliko, primerno

0 0 1 0 0 1 0 0 1 0 0 0 0 0 1 0 0 0 1 1 1 0 0 0 0 1 0 0 0 0 1 0 0 0 -1 -1 1 0 0 1 0 1 0 -1 -1 1 0 0 0 -1 -1 1 0 0 0 -1 0 1 0 0 1 1 0 0 0 -1 0 0 -1 1 0 0 0 0 -1 -1 0 0 0 1 1 0 1 1 -1 0 0 0 1 1

Vector cb 5 2 24 24 2 2

zj - cj: 40 0 0 0 -45 -44 41 0 -1 0 -46 0 0 -46 -43

z0: 2895

==================================================================

Iteration 6 =================The degeneracy occurs!vBasis RHS 3 75 4 105 12 0 7 45 2 15 8 60

Matrix A 0 0 1 0 0 1 0 0 1 0 0 0 0 0 1 0 0 0 1 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 -1 -1 -1 1 0 0 0 -1 -1 1 0 0 0 -1 0 1 0 0 1 1 0 0 0 -1 0 0 -1 1 0 0 0 0 -1 -1 0 0 0 1 1 0 1 1 -1 0 0 0 1 1

Vector cb 5 2 24 7 2 2

The solution is optimal:========================

zj - cj: -1 0 0 0 -4 -3 0 0 -1 0 -5 0 -41 -46 -43

z0: 1050

Add/Sub operations: 1830 Mult/Div operations: 1257

=================================================== Primer 06 - Simplex tableu reduction algorithm ===================================================

Minimum: C:\Push-Pull-Dantzig-Simplex\example06.sim=================================================vBasis RHS 10 90 11 105 12 105 13 150 14 75 15 75

Vector c(j)

Matrix A 1 1 1 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 1 0 0 1 0 0 0 1 0 0 1 0 0 1 0 0 0 1 0 0 1 0 0 1

Vector cb 10 10 10 10 10 10

Vector v 1 2 3 4 5 6 7 8 9 Vector c 8 2 5 2 1 3 7 2 6

zj - cj: 12 18 15 18 19 17 13 18 14

z0: 6000

==================================================================

Page 99: Izboljšanje standardne simpleks metode z algoritmom za ... metoda namreč uvaja umetne in dopolnilne spremenljivke, da začetni linearni program prevede v standardno obliko, primerno

Iteration 1 =================vBasis RHS 10 90 11 30 12 105 13 150 5 75 15 75

Matrix A 1 1 1 0 0 0 0 0 0 0 -1 0 1 0 1 0 -1 0 0 0 0 0 0 0 1 1 1 1 0 0 1 0 0 1 0 0 0 1 0 0 1 0 0 1 0 0 0 1 0 0 1 0 0 1

Vector cb 10 10 10 10 1 10

Vector v 1 2 3 4 -5 6 7 8 9 Vector c 8 2 5 2 1 3 7 2 6

zj - cj: 12 -1 15 18 0 17 13 -1 14

z0: 4575

==================================================================

Iteration 2 =================vBasis RHS 10 90 4 30 12 105 13 120 5 75 15 75

Matrix A 1 1 1 0 0 0 0 0 0 0 -1 0 1 0 1 0 -1 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 -1 1 1 0 0 1 0 0 1 0 0 1 0 0 0 1 0 0 1 0 0 1

Vector cb 10 2 10 10 1

10

Vector v 1 2 3 -2 -5 6 7 8 9 Vector c 8 2 5 2 1 3 7 2 6

zj - cj: 12 17 15 0 0 -1 13 17 14

z0: 4035

==================================================================

Iteration 3 =================vBasis RHS 10 15 4 105 12 105 13 45 2 75 15 75

Matrix A 1 -1 1 0 -1 0 0 -1 0 0 1 0 1 1 1 0 0 0 0 0 0 0 0 0 1 1 1 1 -1 0 0 -1 -1 1 0 0 0 1 0 0 1 0 0 1 0 0 0 1 0 0 1 0 0 1

Vector cb 10 2 10 10 2 10

Vector v 1 -5 3 -2 2 6 7 8 9 Vector c 8 2 5 2 1 3 7 2 6

zj - cj: 12 -17 15 0 0 -1 13 0 14

z0: 2760

==================================================================

Iteration 4 =================vBasis RHS 3 15 4 105 12 105 13 45 2 75 15 60

Page 100: Izboljšanje standardne simpleks metode z algoritmom za ... metoda namreč uvaja umetne in dopolnilne spremenljivke, da začetni linearni program prevede v standardno obliko, primerno

Matrix A 1 -1 1 0 -1 0 0 -1 0 0 1 0 1 1 1 0 0 0 0 0 0 0 0 0 1 1 1 1 -1 0 0 -1 -1 1 0 0 0 1 0 0 1 0 0 1 0 -1 1 0 0 1 1 0 1 1

Vector cb 5 2 10 10 2 10

Vector v 1 -5 -1 -2 2 6 7 8 9 Vector c 8 2 5 2 1 3 7 2 6

zj - cj: -3 -2 0 0 0 -1 13 15 14

z0: 2535

==================================================================

Iteration 5 =================vBasis RHS 3 75 4 105 12 45 13 45 2 15 8 60

Matrix A 0 0 1 0 0 1 0 0 1 0 1 0 1 1 1 0 0 0 1 -1 0 0 -1 -1 1 0 0 1 -1 0 0 -1 -1 1 0 0 1 0 0 0 0 -1 0 0 -1 -1 1 0 0 1 1 0 1 1

Vector cb 5 2 10 10 2 2

Vector v 1 -5 -1 -2 2 6 7 -6 9 Vector c 8 2 5 2 1 3 7 2 6

zj - cj: 12 -17 0 0 0 -16 13 0 -1

z0: 1635

==================================================================

Iteration 6 =================The degeneracy occurs!vBasis RHS 3 75 4 105 7 45 13 0 2 15 8 60

Matrix A 0 0 1 0 0 1 0 0 1 0 1 0 1 1 1 0 0 0 1 -1 0 0 -1 -1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 -1 0 0 -1 -1 1 0 0 1 1 0 1 1

Vector cb 5 2 7 10 2 2

Vector v 1 -5 -1 -2 2 6 -3 -6 9 Vector c 8 2 5 2 1 3 7 2 6

The solution is optimal:========================

zj - cj: -1 -4 0 0 0 -3 0 0 -1

z0: 1050

Add/Sub operations: 800 Mult/Div operations: 792

=================================== Primer 06 - Push & Pull method ===================================Minimum: C:\Push-Pull-Dantzig-Simplex\example06.pp=================================================

Step II - the input data------------------------vBasis RHS 0 90

Page 101: Izboljšanje standardne simpleks metode z algoritmom za ... metoda namreč uvaja umetne in dopolnilne spremenljivke, da začetni linearni program prevede v standardno obliko, primerno

0 105 0 105 0 150 0 75 0 75

Matrix A: 1 1 1 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 1 0 0 1 0 0 0 1 0 0 1 0 0 1 0 0 0 1 0 0 1 0 0 1

A(m+1,j):-8 -2 -5 -2 -1 -3 -7 -2 -6

Vector v 1 2 3 4 5 6 7 8 9 Vector c-8 -2 -5 -2 -1 -3 -7 -2 -6 =======================================================================Step III--------

Iteration 1 =================vBasis RHS 0 90 0 30 0 105 0 150 5 75 0 75

Matrix A: 1 1 1 0 0 0 0 0 0 0 -1 0 1 0 1 0 -1 0 0 0 0 0 0 0 1 1 1 1 0 0 1 0 0 1 0 0 0 1 0 0 1 0 0 1 0 0 0 1 0 0 1 0 0 1

A(m+1,j):-8 -1 -5 -2 0 -3 -7 -1 -6

Vector v 1 2 3 4 -5 6 7 8 9 Vector c-8 -2 -5 -2 -1 -3 -7 -2 -6 =======================================================================

Iteration 2 =================vBasis RHS 0 90 4 30 0 105 0 120 5 75 0 75

Matrix A: 1 1 1 0 0 0 0 0 0 0 -1 0 1 0 1 0 -1 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 -1 1 1 0 0 1 0 0 1 0 0 1 0 0 0 1 0 0 1 0 0 1

A(m+1,j):-8 -3 -5 0 0 -1 -7 -3 -6

Vector v 1 2 3 -2 -5 6 7 8 9 Vector c-8 -2 -5 -2 -1 -3 -7 -2 -6 =======================================================================

Iteration 3 =================vBasis RHS 0 15 4 30 0 105 0 120 5 75 3 75

Matrix A: 1 1 0 0 0 -1 0 0 -1 0 -1 0 1 0 1 0 -1 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 -1 1 1 0 0 1 0 0 1 0 0 1 0 0 0 1 0 0 1 0 0 1

A(m+1,j):-8 -3 0 0 0 4 -7 -3 -1

Vector v 1 2 -6 -2 -5 6 7 8 9 Vector c-8 -2 -5 -2 -1 -3 -7 -2 -6 =======================================================================

Iteration 4 =================vBasis RHS 2 15 4 45 0 105 0 105 5 60 3 75

Matrix A: 1 1 0 0 0 -1 0 0 -1 1 0 0 1 0 0 0 -1 -1 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 1 1 -1 0 0 0 1 1 0 1 1 0 0 1 0 0 1 0 0 1

Page 102: Izboljšanje standardne simpleks metode z algoritmom za ... metoda namreč uvaja umetne in dopolnilne spremenljivke, da začetni linearni program prevede v standardno obliko, primerno

A(m+1,j):-5 0 0 0 0 1 -7 -3 -4

Vector v 1 -1 -6 -2 -5 6 7 8 9 Vector c-8 -2 -5 -2 -1 -3 -7 -2 -6 =======================================================================

Iteration 5 =================vBasis RHS 2 15 4 45 7 105 0 0 5 60 3 75

Matrix A: 1 1 0 0 0 -1 0 0 -1 1 0 0 1 0 0 0 -1 -1 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 -1 0 0 0 1 1 0 1 1 0 0 1 0 0 1 0 0 1

A(m+1,j):-5 0 0 0 0 1 0 4 3

Vector v 1 -1 -6 -2 -5 6 -3 8 9 Vector c-8 -2 -5 -2 -1 -3 -7 -2 -6 =======================================================================

Step IV--------

Iteration 6 =================vBasis RHS 2 15 4 105 7 45 0 0 8 60 3 75

Matrix A: 1 1 0 0 0 -1 0 0 -1 0 0 0 1 1 1 0 1 0 1 0 0 0 -1 -1 1 -1 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 1 1 0 1 1 0 0 1 0 0 1 0 0 1

A(m+1,j):-1 0 0 0 -4 -3 0 -4 -1

Vector v 1 -1 -6 -2 8 6 -3 -5 9

Vector c-8 -2 -5 -2 -1 -3 -7 -2 -6 =======================================================================

Step V------

The solution is optimal:========================vBasis RHS 2 15 4 105 7 45 0 0 8 60 3 75

Matrix A: 1 1 0 0 0 -1 0 0 -1 0 0 0 1 1 1 0 1 0 1 0 0 0 -1 -1 1 -1 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 1 1 0 1 1 0 0 1 0 0 1 0 0 1

A(m+1,j):-1 0 0 0 -4 -3 0 -4 -1

Vector v 1 -1 -6 -2 8 6 -3 -5 9 Vector c-8 -2 -5 -2 -1 -3 -7 -2 -6 =======================================================================

Add/Sub operations: 412 Mult/Div operations: 458

Page 103: Izboljšanje standardne simpleks metode z algoritmom za ... metoda namreč uvaja umetne in dopolnilne spremenljivke, da začetni linearni program prevede v standardno obliko, primerno

Primer 07:

Maksimiziraj

321 757060 xxxC ++=

ob danih pogojih

600.2543600.3765400.2463

321

321

321

≤++≤++≤++

xxxxxxxxx

in pogojih nenegativnosti

0≥jx ; 3,...,1=j

===================================================== Primer 07 - Original Simplex algorithm (Dantzig) =====================================================Maximum: C:\Push-Pull-Dantzig-Simplex\example07.dan========================================================

vBasis RHS 4 2400 5 3600 6 2600

Vector c(j)-60 -70 -75 0 0 0

Matrix A 3 6 4 1 0 0 5 6 7 0 1 0 3 4 5 0 0 1

Vector cb 0 0 0

zj - cj: 60 70 75 0 0 0

z0: 0

==================================================================

Iteration 1 =================vBasis RHS 4 342,857142857143 3 514,285714285714 6 28,5714285714283

Matrix A 0,142857857143 2,57142842857 0 1 -0,571428428571 0 0,714285285714 0,857142842857 1 0 0,142857857143 0 -0,571428528572 -0,285715714285 0 0 -0,714214285714 1

Vector cb 0 -75 0

zj - cj: 6,42857157143 5,71428428572 0 0 -10,7147142857 0

z0: -38571,4284286

==================================================================

Iteration 2 =================vBasis RHS 4 240 1 720 6 440

Matrix A 0 2,4 -0,2 1 -0,6 0 1 1,2 1,4 0 0,2 0 0 0,4 0,8 0 -0,6 1

Vector cb 0 -60 0

The solution is optimal:========================

zj - cj: 0 -2 -9 0 -12 0

z0: 43200

Add/Sub operations: 142 Mult/Div operations: 111

=================================================== Primer 07 - Simplex tableu reduction algorithm ===================================================Maximum: C:\Push-Pull-Dantzig-Simplex\example07.sim=================================================vBasis RHS 4 2400 5 3600 6 2600

Vector c(j)

Page 104: Izboljšanje standardne simpleks metode z algoritmom za ... metoda namreč uvaja umetne in dopolnilne spremenljivke, da začetni linearni program prevede v standardno obliko, primerno

Matrix A 3 6 4 5 6 7 3 4 5

Vector cb 0 0 0

Vector v 1 2 3 -1 -2 -3 Vector c-60 -70 -75 0 0 0

zj - cj: 60 70 75

z0: 0

==================================================================

Iteration 1 =================vBasis RHS 4 342,857142857143 3 514,285714285714 6 28,5714285714283

Matrix A 0,1428571428571 2,571428571428 -0,571428571428 0,7142857142857 0,8571428571428 0,1428571428571 -0,5714285714285 -0,2857142857142 -0,7142857142857

Vector cb 0 -75 0

Vector v 1 2 -2 -1 3 -3 Vector c-60 -70 -75 0 0 0

zj - cj: 6,42857142857143 5,71428571428572 -10,7142857142857

z0: -38571,4285714286

==================================================================

Iteration 2 =================vBasis RHS 4 240 1 720 6 440

Matrix A-0,2 2,4 -0,6

1,4 1,2 0,2 0,8 0,4 -0,6

Vector cb 0 -60 0

Vector v-2 2 1 -1 3 -3 Vector c-60 -70 -75 0 0 0

The solution is optimal:========================

zj - cj: -9 -2 -12

z0: 43200

Add/Sub operations: 80 Mult/Div operations: 72

=================================== Primer 07 - Push & Pull method ===================================Maximum: C:\Push-Pull-Dantzig-Simplex\example07.pp=================================================

Step II - the input data------------------------vBasis RHS 4 2400 5 3600 6 2600

Matrix A: 3 6 4 5 6 7 3 4 5

A(m+1,j): 60 70 75

Vector v 1 2 3 -1 -2 -3 Vector c 60 70 75 0 0 0 =======================================================================Step III--------

The basis is complete!-----------------------

Step IV

Page 105: Izboljšanje standardne simpleks metode z algoritmom za ... metoda namreč uvaja umetne in dopolnilne spremenljivke, da začetni linearni program prevede v standardno obliko, primerno

--------

Iteration 1 =================vBasis RHS 4 342,857142857143 3 514,285714285714 6 28,5714285714283

Matrix A: 0,1428571428571 2,571428571428 -0,571428571428 0,7142857142857 0,8571428571428 0,1428571428571 -0,5714285714285 -0,2857142857142 -0,7142857142857

A(m+1,j): 6,428571428571 5,714285714285 -10,71428571428

Vector v 1 2 -2 -1 3 -3 Vector c 60 70 75 0 0 0 =======================================================================

Step IV--------

Iteration 2 =================vBasis RHS 4 240 1 720 6 440

Matrix A:-0,2 2,4 -0,6 1,4 1,2 0,2 0,8 0,4 -0,6

A(m+1,j):-9 -1,99999999999999 -12

Vector v-2 2 1 -1 3 -3 Vector c 60 70 75 0 0 0 =======================================================================

Step V------

The solution is optimal:========================vBasis RHS 4 240 1 720 6 440

Matrix A:-0,2 2,4 -0,6 1,4 1,2 0,2 0,8 0,4 -0,6

A(m+1,j):-9 -1,99999999999999 -12

Vector v-2 2 1 -1 3 -3 Vector c 60 70 75 0 0 0 =======================================================================

Add/Sub operations: 42 Mult/Div operations: 41

Page 106: Izboljšanje standardne simpleks metode z algoritmom za ... metoda namreč uvaja umetne in dopolnilne spremenljivke, da začetni linearni program prevede v standardno obliko, primerno

Primer 08:

Maksimiziraj

21 5,22 xxC +=

ob danih pogojih

000.465,075,0000.2043

21

21

≤+≤+

xxxx

in pogojih nenegativnosti

0≥jx ; 2,...,1=j

===================================================== Primer 08 - Original Simplex algorithm (Dantzig) =====================================================Maximum: C:\Push-Pull-Dantzig-Simplex\example08.dan========================================================

vBasis RHS 3 20000 4 4000

Vector c(j)-2 -2,5 0 0

Matrix A 3 4 1 0 0,75 0,65 0 1

Vector cb 0 0

zj - cj: 2 2,5 0 0

z0: 0

==================================================================

Iteration 1 =================vBasis RHS 2 5000 4 750

Matrix A 0,75 1 0,25 0 0,2625 0 -0,1625 1

Vector cb

-2 0

zj - cj: 0,5 0 -0,5 0

z0: -10000

==================================================================

Iteration 2 =================vBasis RHS 2 2857,14285714286 1 2857,14285714286

Matrix A 0 1 0,714285714285714 -2,85714285714286 1 0 -0,619047619047619 3,80952380952381

Vector cb-2 -2

The solution is optimal:========================

zj - cj: 0 0 -0,19047619047619 -1,90476190476191

z0: 11428,5714285714

Add/Sub operations: 70 Mult/Div operations: 56

=================================================== Primer 08 - Simplex tableu reduction algorithm ===================================================Maximum: C:\Push-Pull-Dantzig-Simplex\example08.sim=================================================vBasis RHS 3 20000 4 4000

Vector c(j)

Matrix A 3 4 0,75 0,65

Vector cb 0 0

Vector v 1 2 -1 -2

Page 107: Izboljšanje standardne simpleks metode z algoritmom za ... metoda namreč uvaja umetne in dopolnilne spremenljivke, da začetni linearni program prevede v standardno obliko, primerno

Vector c-2 -2,5 0 0

zj - cj: 2 2,5

z0: 0

==================================================================

Iteration 1 =================vBasis RHS 2 5000 4 750

Matrix A 0,75 0,25 0,2625 -0,1625

Vector cb-2 0

Vector v 1 -1 2 -2 Vector c-2 -2,5 0 0

zj - cj: 0,5 -0,5

z0: -10000

==================================================================

Iteration 2 =================vBasis RHS 2 2857,14285714286 1 2857,14285714286

Matrix A-2,85714285714286 0,714285714285714 3,80952380952381 -0,619047619047619

Vector cb-2 -2

Vector v-2 -1 2 1 Vector c-2 -2,5 0 0

The solution is optimal:========================

zj - cj: -1,90476190476191 -0,19047619047619

z0: 11428,5714285714

Add/Sub operations: 44 Mult/Div operations: 40

=================================== Primer 08 - Push & Pull method ===================================Maximum: C:\Push-Pull-Dantzig-Simplex\example08.pp=================================================

Step II - the input data------------------------vBasis RHS 3 20000 4 4000

Matrix A: 3 4 0,75 0,65

A(m+1,j): 2 2,5

Vector v 1 2 -1 -2 Vector c 2 2,5 0 0 =======================================================================Step III--------

The basis is complete!-----------------------

Step IV--------

Iteration 1 =================vBasis RHS 2 5000 4 750

Matrix A: 0,75 0,25 0,2625 -0,1625

A(m+1,j): 0,125 -0,625

Vector v 1 -1 2 -2 Vector c 2 2,5 0 0 =======================================================================

Step IV--------

Page 108: Izboljšanje standardne simpleks metode z algoritmom za ... metoda namreč uvaja umetne in dopolnilne spremenljivke, da začetni linearni program prevede v standardno obliko, primerno

Iteration 2 =================vBasis RHS 2 2857,14285714286 1 2857,14285714286

Matrix A:-2,85714285714286 0,714285714285714 3,80952380952381 -0,619047619047619

A(m+1,j):-0,476190476190476 -0,547619047619048

Vector v-2 -1 2 1 Vector c 2 2,5 0 0 =======================================================================

Step V------

The solution is optimal:========================vBasis RHS 2 2857,14285714286 1 2857,14285714286

Matrix A:-2,85714285714286 0,714285714285714 3,80952380952381 -0,619047619047619

A(m+1,j):-0,476190476190476 -0,547619047619048

Vector v-2 -1 2 1 Vector c 2 2,5 0 0 =======================================================================

Add/Sub operations: 24 Mult/Div operations: 25

Page 109: Izboljšanje standardne simpleks metode z algoritmom za ... metoda namreč uvaja umetne in dopolnilne spremenljivke, da začetni linearni program prevede v standardno obliko, primerno

Primer 13:

Maksimiziraj

321 4612 xxxC ++=

ob danih pogojih

24262

32

321

21

≤+≤+−+−≤+

xxxxx

xx

in pogojih nenegativnosti

0≥jx ; 3,...,1=j

===================================================== Primer 13 - Original Simplex algorithm (Dantzig) =====================================================Maximum: C:\Push-Pull-Dantzig-Simplex\example13.dan========================================================

vBasis RHS 4 6 5 4 6 2

Vector c(j)-12 -6 -4 0 0 0

Matrix A 1 2 0 1 0 0 -1 -1 2 0 1 0 0 1 1 0 0 1

Vector cb 0 0 0

zj - cj: 12 6 4 0 0 0

z0: 0

==================================================================

Iteration 1 =================vBasis RHS 1 6

5 10 6 2

Matrix A 1 2 0 1 0 0 0 1 2 1 1 0 0 1 1 0 0 1

Vector cb-12 0 0

zj - cj: 0 -18 4 -12 0 0

z0: -72

==================================================================

Iteration 2 =================vBasis RHS 1 6 5 6 3 2

Matrix A 1 2 0 1 0 0 0 -1 0 1 1 -2 0 1 1 0 0 1

Vector cb-12 0 -4

The solution is optimal:========================

zj - cj: 0 -22 0 -12 0 -4

z0: 80

Add/Sub operations: 158 Mult/Div operations: 109

=================================================== Primer 13 - Simplex tableu reduction algorithm ===================================================Maximum: C:\Push-Pull-Dantzig-Simplex\example13.sim=================================================vBasis RHS 4 6 5 4 6 2

Page 110: Izboljšanje standardne simpleks metode z algoritmom za ... metoda namreč uvaja umetne in dopolnilne spremenljivke, da začetni linearni program prevede v standardno obliko, primerno

Vector c(j)

Matrix A 1 2 0 -1 -1 2 0 1 1

Vector cb 0 0 0

Vector v 1 2 3 -1 -2 -3 Vector c-12 -6 -4 0 0 0

zj - cj: 12 6 4

z0: 0

==================================================================

Iteration 1 =================vBasis RHS 1 6 5 10 6 2

Matrix A 1 2 0 1 1 2 0 1 1

Vector cb-12 0 0

Vector v-1 2 3 1 -2 -3 Vector c-12 -6 -4 0 0 0

zj - cj: -12 -18 4

z0: -72

==================================================================

Iteration 2 =================vBasis RHS 1 6 5 6 3 2

Matrix A

1 2 0 1 -1 -2 0 1 1

Vector cb-12 0 -4

Vector v-1 2 -3 1 -2 3 Vector c-12 -6 -4 0 0 0

The solution is optimal:========================

zj - cj: -12 -22 -4

z0: 80

Add/Sub operations: 78 Mult/Div operations: 70

=================================== Primer 13 - Push & Pull method ===================================Maximum: C:\Push-Pull-Dantzig-Simplex\example13.pp=================================================

Step II - the input data------------------------vBasis RHS 4 6 5 4 6 2

Matrix A: 1 2 0 -1 -1 2 0 1 1

A(m+1,j): 12 6 4

Vector v 1 2 3 -1 -2 -3 Vector c 12 6 4 0 0 0 =======================================================================Step III--------

The basis is complete!-----------------------

Page 111: Izboljšanje standardne simpleks metode z algoritmom za ... metoda namreč uvaja umetne in dopolnilne spremenljivke, da začetni linearni program prevede v standardno obliko, primerno

Step IV--------

Iteration 1 =================vBasis RHS 1 6 5 10 6 2

Matrix A: 1 2 0 1 1 2 0 1 1

A(m+1,j):-12 -18 4

Vector v-1 2 3 1 -2 -3 Vector c 12 6 4 0 0 0 =======================================================================

Step IV--------

Iteration 2 =================vBasis RHS 1 6 5 6 3 2

Matrix A: 1 2 0 1 -1 -2 0 1 1

A(m+1,j):-12 -22 -4

Vector v-1 2 -3 1 -2 3 Vector c 12 6 4 0 0 0 =======================================================================

Step V------

The solution is optimal:========================vBasis RHS 1 6 5 6 3 2

Matrix A: 1 2 0 1 -1 -2 0 1 1

A(m+1,j):-12 -22 -4

Vector v-1 2 -3 1 -2 3 Vector c 12 6 4 0 0 0 =======================================================================

Add/Sub operations: 41 Mult/Div operations: 37