Upload
others
View
11
Download
1
Embed Size (px)
Citation preview
1. OPŠTA UPUTSTVA ZA LINDO LINDO (Linear Interactive and Discrete Optimizer) je korisnički orijentisan programski paket∗, namenjen rešavanju problema linearnog, celobrojnog i kvadratnog programiranja. U ovom dodatku se nalazi uputstvo za korišćenje LINDO programskog paketa u rešavanju napred navedenih problema, kao i objašnjenje kako se može povezati izlaz (rezultat) programskog paketa sa simpleks algoritmom. Pokretanjem LINDO programskog paketa pojaviće se početni ekran (sl. 1) Početni ekran sadrži šemu koja ukazuje na parametre LINDO programa: maksimalan broj ograničenja (100), promenljivih (200) i koeficijenata (16000). Ili se radi klik na oznaku OK ili se sačeka nekoliko trenutaka pa natpis sam nestaje. Tada je sve spremno za korišćenje LINDO programskog paketa.
∗ Linus Schrage, 1986.
674
Slika 1. Početni ekran LINDO
LINDO komandeLINDO komandeLINDO komandeLINDO komande LINDO se veoma lako koristi, za najveći broj problema je dovoljno poznavati sledeće komande:
MAX početak unosa problema maksimuma
MIN početak unosa problema minimuma
END završetak unosa problema, znak da se LINDO pripremi za prihvatanje drugih komandi
GO komanda za rešavanje aktuelnog problema i ispisivanje rešenja
LOOK prikazati izabrani deo aktuelne formulacije
ALTER promena jednog elementa aktuelne formulacije
EXT dodati jedno ili više ograničenja aktuelnoj formulaciji
DEL brisati jedno ili više ograničenja aktuelne formulacije
675
DIVERT promeniti izlaz u datoteku iz koje se može štampati
RVRT izvršiti DIVERT komandu
SAVE memorisanje aktuelne formulacije problema radi kasnije upotrebe
RETRIEVE učitavanje ranije memorisanog problema radi ponovnog rešavanja ili izmene
EDIT aktiviranje editora na celom ekranu
SOLU prikaz rešenja LP (ako je ranije već primenjena komanda GO)
TABLEAU prikazati aktuelnu simpleks tabelu
TAKE aktiviranje modela u LINDO iz tekst procesora
LINDO model sadrži sledeće elemente:
1) funkciju kriterijuma 2) jednu ili više promenljivih 3) jedno ili više ograničenja
Funkcija kriterijuma se nalazi u prvom redu Lindo modela, korišćenjem MIN ili MAX izraza. Ograničenja koja predstavljaju drugi deo modela se u model uvode jednom od sledećih izraza:
SUBJECT TO SUCH THAT S.T. ST
Nakon ograničenja upiše se izraz END, ali to nije neophodno. Osnovna pravila pri korišćenju LINDO programskog paketa su sledeća:
1) Nazivi promenljivih mogu se sastojati od najviše 8 karaktera.
2) Računske operacije koje se mogu koristiti u LINDO programu su:
+ sabiranje, koristi se operator "plus" (+)
− oduzimanje, koristi se operator "minus" (−)
≥ veće ili jednako, za njegov prikaz se koristi bilo niz dva simbola > = ili samo operator >
≤ manje ili jednako, koristi se ili niz < = ili samo <.
3) Korišćenje zagrada nije dozvoljeno, računske operacije se uvode s leva na desno.
4) Komentari se mogu upisati bilo gde u modelu a počinju sa simbolom !
5) Pojedina ograničenja i funkcija kriterijuma se mogu upisati u jednom ili više redova.
676
6) Naredbe i nazivi promenljivih se mogu upisivati bilo malim bilo velikim slovima, LINDO ih pretvara u velika slova.
7) Sa desne strane jednakosti ili nejednakosti mogu se upisivati samo konstante.
8) Sa leve strane jednakosti ili nejednakosti mogu se upisivati samo promenljive i njihovi koeficijenti.
9) LINDO podrazumeva da su sve promenljive nenegativne, prema tome, pri korišćenju LINDO programskog paketa nije neophodno ukucati uslov o nenegativnosti. Pored osnovnih elemenata modela, LINDO prepoznaje i nekoliko izbornih iskaza koji se mogu upisati nakon END komande. Ovi iskazi omogućuju naknadno proširenje kapaciteta, kao i određenog opisa promenljivih.
FREE <Promenljiva > Omogućuje da promenljive mogu uzeti kako pozitivne tako i nepozitivne vrednosti
GIN < Promenljiva > Ograničava vrednost promenljive na nenegativan ceo broj (general integer)
INT < Promenljiva > Ograničava vrednost promenljive na binarni broj (0 ili 1) (binary integer)
SLB <Promenljiva ><Vrednost> Određuje donju granicu vrednosti
promenljive (simple lower bound) SUB <Promenljiva><Vrednost> Određuje gornju granicu vrednosti
promenljive (simple upper bound) QCP <Ograničenje> Ukazuje na prva realna ograničenja u
modelu kvadratnog programiranja TITLE <Naslov> Omogućuje da se dodeli naziv modelu
ili da se prikaže ranije dodeljen naziv
2. LINGO – DODATNA UPUTSTVA LINGO je korisnički orijentisan programski paket, namenjen rešavanju problema linearnog, celobrojnog i nelinearnog programiranja. Pokretanjem LINGO programskog paketa pojaviće se ekran sa sadržajem Kako je prikazano na sl. 2. Elementi koji se zahtevaju radi pokretanja LINGO programskog paketa su veoma slični onima, koji su prisutni kod LINDO: LINGO takođe zahteva funkciju kriterijuma, jednu ili više
677
promenljivih, jedno ili više ograničenja. Za razliku od LINDO, LINGO ograničenja ne mora prethoditi izraz SUBJECT TO ili SUCH THAT ali iza MIN ili MAX izraza sledi znak =. LINGO ima slične sintakse kao LINDO, slede razlike:
• LINGO iskazi se završavaju tačka zarezom (;)
• LINGO podrazumeva nove matematičke operatore: zvezdica, tj. * označava operaciju množenja, znak / deljenje, a ^ sa brojem iza znak je stepenovanja)
• Zagrada omogućuje da se odredi redosled matematičkih operacija
• Imena promenljivih mogu biti dužine najviše 32 karaktera.
• Ekstenzija je LNG će biti oznaka tipa fajla kod sačuvanja podataka.
Lingo je takođe u mogućnosti da reši problem celobrojnog, pa i binarnog programiranja. Ograničenje koje se odnosi na to da promenljiva može da poprima samo celobrojne vrednosti koristi se @GIN operator. Da bi promenljiva mogla poprimiti samo vrednosti 0 ili 1 koristi se @BIN operator.
Slika 2. Početni ekran LINGO
678
3. PRIMERI ZA REŠAVANJE LINEARNIH MODELA
Primer 1. Promenljive: x1 – broj komada proizvoda tipa A x2 – broj komada proizvoda tipa B x3 – broj komada proizvoda tipa C x4 – broj komada proizvoda tipa D Model: 1 2 3 4, , , 0≥x x x x
1 2 3 4 2 5 80+ + + ≤x x x x (ograničenje koje se odnosi na kapacitet mašine M1)
1 2 42 2 2 80+ + ≤x x x (ograničenje koje se odnosi na kapacitet mašine M2)
1 2 3 42 2 4 120+ + + ≤x x x x (ograničenje koje se odnosi na sirovine S)
2 3 0− + ≤x x (odnos prodaje proizvoda B i C)
1 2 3 4 150 120 140 40 max+ + + = →x x x x z Da bismo uneli ovaj problem u LINDO, prvo treba proveriti da li ekran sadrži prazan prozor ili prostor za rad sa naznakom «untitled» u gornjem levom uglu. Ako je neophodno, novi prozor je moguće otvoriti izborom New iz File menija ili jednim klikom na ikonu New file����. Prvi upis LINDO modela odnosi se na funkciju kriterijuma, a upisuje se kao:
MAX 150 X1 + 120 X2 + 140 X3 + 40 X4
Ovo govori LINDO da je reč o problemu maksimuma nastavljajući unos, slede ograničenja:
SUBJECT TO
X1 + 2 X2 + X3 + 5 X4 < 80
2 X1 + 2 X2 + 2 X4 < 80
X1 + 2 X2 + 2 X3 + 4 X4 < 120
– X2 + X3 < 0
END
Posle ovoga naš zadatak je da sačuvamo te podatke radi kasnije upotrebe. Treba uraditi sledeće:
1. Iz File menija treba izabrati komandu Save. 2. Kada se postavi pitanje naziva datoteke treba zameniti ponuđeni simbol * nazivom po
sopstvenom izboru (npr. zad001). Ekstenzija je LTX, kao oznaka tipa fajla ostaje iza naziva, dakle: zad001.LTX Pod ovim nazivom od sada pa nadalje bićemo u mogućnosti pozvati ove podatke.
Radi rešavanja problema treba uraditi sledeće: 1. Iz menija Solve bira se komanda Solve.
679
2. Kada program ponudi ispitivanje nakon optimiranja (analizu osetljivosti) celishodno je izabrati NO (Slika 3.).
Slika 3. Program nudi mogućnost vršenja analize osetljivosti
3. Kada je rešenje kompletno, na ekranu će se pojaviti status nakon izvršene Solve komande (Slika 4.).
680
Slika 4. Stanje optimiziranja
Nakon pregleda ispisanih informacija, treba izabrati Close.
4. Ispod upisanih podataka nalazi se "Reports window". Zatvaranjem aktuelnog prozora pojaviće se ekran, kao što prikazuje slika 5. koja se čita kao što je to opisano u Tabeli 1.
681
Slika 5. Prikaz rešenja
Kratak pregled u "Reports window" pokazuje da je postignuta optimalna proizvodnja, ako se od proizvoda A proizvede 20 komada, od B 20 komada, od C 20 komada, dok od D ne treba ništa proizvesti. To se čita iz kolone Value pored naziva promenljivih. Vrednost maksimalnog prihoda iznosi 8200 novčanih jedinica. Kapacitet po mašinama iskorišćen je u potpunosti dok od sirovine S ostalo je neprerađeno 20 kilograma, pročitano iz kolone Slack or surplus. Ako bi se kapacitet M1 povećao za 1 čas ukupan prihod bi se povećao za 55 novčanih jedinica. Ako bi se kapacitet M2 povećao za 1 čas ukupan prihod bi se povećao za 47,5 novčanih jedinica. Vrednost dualnih promenljivih čita se iz kolone Dual prices.
682
Tabela 1. ČITANJE REŠENJA
OBJECTIVE
FUNCTION
FUNKCIJA KRITERIJUMA
VALUE
VREDNOST
PROMENLJIVE U
BAZI *
PROMENLJIVE VAN
BAZE **
VARIABLE OZNAKE PRIMARNIH PROMENLJIVIH
VALUE
VREDNOST PRIMARNE PROMENLJIVE
REDUCED COST VREDNOST DOPUNSKE PROMENLJIVE ZA ODGOVARAJUĆI DUALNI USLOV
ROW
REDNI BROJ OGRANIČENJA
SLACK OR SURPLUS VREDNOST DOPUNSKE PROMENLJIVE ZA PRIMARNE USLOVE
DUAL PRICES
VREDNOST DUALNE PROMENLJIVE – DUALNE CENE
ZADNJA KOLONA
SIMPLEKS TABELE
ZADNJI RED
SIMPLEKS TABELE
Napomena: u simpleks tabeli svaka promenljiva ima dvostruku ulogu; ako je dobijena vrednost u koloni * različita od nule, njoj u koloni ** odgovara vrednost nula i obratno. izuzetno, kod slučaja degeneracije i alternativnog rešenja obe vrednosti mogu biti jednake nuli.
4. ANALIZA OSETLJIVOSTI
Da bismo uradili analizu osetljivosti treba minimizirati ekran Reports i izabrati Range komandu u Reports meniju. Tada će se ponovo pojaviti ekran "Reports window" ali sada u proširenom obliku sa analizom osetljivosti, odnosno intervalima u kojima se koeficijenti funkcije kriterijuma, odnosno elementi desne strane mogu kretati (slika 6.). Koeficijenti u funkciji kriterijuma mogu da se povećavaju ili smanjuju. Tabela pokazuje koliko se oni pojedinačno mogu povećati ili smanjiti pri čemu su ostali koeficijenti funkcije kriterijuma
683
konstantni, a da se pri tome ne menja optimalna baza kao ni vrednosna struktura optimalnog primarnog rešenja. Tabela ukazuje i na moguće promene desne strane nejednakosti (kapaciteta), povećanje ili smanjenje kapaciteta pojedinačno, a da pri tome ne menja optimalna baza kao ni vrednosna struktura optimalnog dualnog rešenja.
Slika 6. Analiza osetljivosti
Rešavanje problema minimuma se vrši na isti način kao i kod problema maksimuma. Jedina razlika je kod upisa funkcije kriterijuma koja umesto max počinje sa min naredbom.
Primer 2. Promenljive: x1 – količina S1 u kg x2 – količina S2 u kg x3 – količina S3 u kg
684
Model: 1 2 3, , 0≥x x x
1 32 + 120≥x x (ograničenje koje se odnosi na potrebnu najmanju količinu B1 u hrani) 1 2 3 600+ ≥x x (ograničenje koje se odnosi na potrebnu najmanju količinu B2 u hrani) 1 2 3 200+ + ≥x x x (ograničenje koje se odnosi na potrebnu najmanju količinu B3 u hrani)
1 2 3300 360 100 min+ + = →x x x v Model problema, koji je postavljen unosi se u LINDO na sledeći način, a nakon komande Solve dobija se rešenje prikazano na slici 7.
Slika 7. Problem i rešenje
Treba sačuvati te podatke radi kasnije upotrebe i to pod imenom zad002. Nakon rešavanja zadatka možemo doći i do analize osetljivosti.
685
Primer 3.
Model:
1 2
1 2
1 2
1
1 2
, 0
8 4 60
4 4 64
2
max
≥
+ ≥
+ ≥
≤
+ = →
x x
x x
x x
x
x x z
Unos problema u LINDO: MAX X1+X2
ST
8X1+4X2>60
4X1+4X2>64
X1<2
END
Nakon aktiviranja Solve komande, dobija se rešenje prikazano na slici 8 odnosno nakon izbora OK na slici 9., što ukazuje na nemogućnost određivanja optimalnog rešenja. Poruka na ekranu UNBOUNDED, znači da je skup mogućih rešenja neograničen, tj. da funkcija kriterijuma nema gornju među.
686
Slika 8. Problem bez gornje međe
Slika 9. Problem bez gornje međe
Primer 4.
1 2
1 2
1 2
1
1 2
, 0
8
2 4
3 6
max
≥
+ ≥
+ ≤
≤
+ = →
x x
x x
x x
x
x x z
Oblik na koji se problem unosi u LINDO: MAX X1+X2
ST
X1+X2>8
2X1+X2<4
3X1<6
END
687
Ovaj problem nema moguće rešenje, a to se pokazuje odmah nakon pokretanja Solve komande, kao komentar pojavljuje se INFEASIBLE, skup mogućih rešenja je prazan (slike 10. i 11.)
Slika 10. Problem bez mogućeg rešenja
688
Slika 11. Problem bez mogućeg rešenja
5. CELOBROJNO PROGRAMIRANJE I LINDO
Primer 5. Promenljive: x1 – broj proizvedenih komada džempera A x2 – broj proizvedenih komada džempera B x3 – broj proizvedenih komada džempera C Model: 1 2 3, , 0≥x x x
1 2 34 8 5 1800+ + ≤x x x (ograničenje koje se odnosi na raspoloživu količinu prediva)
1 2 34 12 2 1240+ + ≤x x x (ograničenje koje se odnosi na kapacitet pogona P1)
1 2 32 12 6 1800+ + ≤x x x (ograničenje koje se odnosi na kapacitet pogona P2)
1 2 3 800+ + ≤x x x (ograničenje koje se odnosi na mogućnost realizacije)
1 2 37 5 9 max+ + = →x x x z LINDO oblik problema:
689
MAX 7X1+5X29X3
ST
4X1+ 8X2+5X3<1800
4X1+12X2+2X3<1240
2X1+12X2+6X3<1800
X1+ X2+ X3< 800
END
Nakon upisa osnovnih elemenata modela moramo uneti i dodatni iskaz koji će obezbediti da dobijemo celobrojno rešenje za sve promenljive: GIN X1
GIN X2
GIN X3
Ekran podeljen na dva dela sa upisanim modelom i rešenjima je na slici 12.
Slika 12. Unos modela i rešenje
690
Nakon rešavanja zadatka možemo izvršiti i analizu osetljivosti. Isti model u LINGO formatu glasi: MAX = 7*X1+5*X2+9*X3;
4*X1+8*X2+5*X3<1800;
4*X1+12*X2+2*X3<1240;
2*X1+12*X2+6*X3<1800;
X1+X2+X3< 800;
@INT(X1);
@INT(X2);
@INT(X3);
END
Sam model i rešenje su prikazani na slici 13.
Slika 13. Unos modela i rešenje
Primer 6.
691
Promenljive: x11 – označava izgradnju omladinskog doma po projektu P11 x12 – označava izgradnju omladinskog doma po projektu P12 x21 – označava izgradnju obdaništa po projektu P21 x22 – označava izgradnju obdaništa po projektu P22 x31 – označava izgradnju osnovne škole po projektu P31 x32 – označava izgradnju osnovne škole po projektu P32 x33 – označava izgradnju osnovne škole po projektu P33 x41 – označava izgradnju vodovodne mreže po projektu P41
Model: x11, x12, x21, x22 , x31, x32, x33 , x41 ≥0
11 12 21 22 31 32 33 412 3 3 6 8 8 4 17+ + + + + + + ≤x x x x x x x x
(ograničenje koje se odnosi na raspoloživa novčana sredstva)
11 12 1 + ≤x x
(ograničenje koje se odnosi na to da se najviše jedna od projekata može uzeti u obzir kod izgradnje)
21 22 1+ ≤x x
(ograničenje koje se odnosi na to da se najviše jedna od projekata može uzeti u obzir kod izgradnje)
31 32 33 41 0+ + − ≤x x x x
(ograničenje koje se odnosi na to da se najviše jedna od projekata može uzeti u obzir kod izgradnje i vezanost promenljivih)
41 1≤x
(ograničenje koje se odnosi na to da samo 0 ili 1 može da predstavlja odgovor na pitanje graditi ili ne)
11 12 21 22 31 32 33 416 8 9 5 4 8 7 9 maxx x x x x x x x z+ + + + + + + = →
Problem u LINDO obliku: MAX 6X11+8X12+9X21+5X22+4X31+8X32+7X33+9X41
ST
2X11+3X12+ X21+3X22+6X31+8X32+8X33+4X41<17
X11+ X12 <1
X21+ X22 <1
692
X31+ X32+ X33- X41<0
END
Nakon upisa osnovnih elemenata modela moramo uneti i dodatni iskaz koji će obezbediti da dobijemo binarno rešenje (0 ili 1) za sve promenljive. INT X11
INT X12
INT X21
INT X22
INT X31
INT X32
INT X33
INT X41
Dobijeno rešenje (slika14.) daje odgovor na zahtev šta će se graditi a šta ne.
Slika 14. Unos modela i rešenje
Primer 7. Promenljive:
693
x1 – označava izgradnju broda B1 x2 – označava izgradnju broda B2
x3 – označava izgradnju broda B3 x4 – označava izgradnju broda B4 x5 – označava izgradnju broda B5 Model:
1 2 3 4 5, , , , 0≥x x x x x
1 2 3 4 520 10 20 10 30 60+ + + + ≤x x x x x (ograničenje koje se odnosi na raspoloživa novčana sredstva)
1 2 3 4 510 5 10 20 30 70+ + + + ≤x x x x x (ograničenje koje se odnosi na raspoloživa novčana sredstva)
1 2 1+ ≤x x (ograničenje koje se odnosi na međusobno isključenje dve promenljive)
2 4 0− + ≤x x (ograničenje koje se odnosi na međusobnu vezanost promenljivih)
3 1≤x (ograničenje koje se odnosi na to da samo 0 ili 1 može da predstavlja odgovor na pitanje graditi ili ne)
5 1≤x (ograničenje koje se odnosi na to da samo 0 ili 1 može da predstavlja odgovor na pitanje graditi ili ne)
1 2 3 4 520 10 2 30 40 max+ + + + = →x x x x x z
Problem u LINDO obliku: MAX 20X1+10X2+2X3+30X4+40X5
ST
20X1+10X2+20X3+10X4+30X5<60
10X1+ 5X2+10X3+20X4+30X5<70
X1+X2<1
-X2+X4<0
END
INT X1
INT X2
INT X3
INT X4
INT X5
Ekran rešenja je na slici 15.
694
Slika 15. Unos modela i rešenje
Isti model u LINGO formatu, a nakon toga i rešenje su prikazani na slici 16. MAX= 20*X1+10*X2+2*X3+30*X4+40*X5;
20*X1+10*X2+20*X3+10*X4+30*X5<60;
10*X1+ 5*X2+10*X3+20*X4+30*X5<70;
X1+X2<1;
-X2+X4<0;
@BIN(X1);
@BIN(X2);
@BIN(X3);
@BIN(X4);
END
695
Slika 16. Unos modela i rešenje
6. PRIMERI REŠAVANJA MODELA KVADRATNOG
PROGRAMIRANJA
Primer 8. Promenljive: x1 – broj proizvedenih komada artikla A1
x2 – broj proizvedenih komada artikla A2
x3 – broj proizvedenih komada artikla A3
x4 – broj proizvedenih komada artikla A4
Model:
1 2 3 4, , , 0≥x x x x
696
1 2 3 4 2 3 3200+ + + ≥x x x x (ograničenje koje se odnosi na najmanju količinu sirovna S koju treba potrošiti)
1 2 3 42 2 7000+ + + =x x x x (ograničenje koje se odnosi na 100% iskorišćenje kapaciteta mašine M1)
1 2 3 4 6 4 4200+ + + ≤x x x x (ograničenje koje se odnosi kapaciteta mašine M2)
4 1000≥x (ograničenje koje se odnosi na potrebu proizvoda A4)
1 3000≤x (ograničenje koje se odnosi na potrebu proizvoda A1)
21 1 2 3 40,5 2 3500 6000 3200 min+ + + + = →x x x x x v
Linearni oblik modela: x11, x12, x13, x2, x3, x4 ≥0
11 12 13 2 3 4 2 3 3200+ + + + + ≥x x x x x x
11 12 13 2 3 42 2 2 + 2 7000+ + + + =x x x x x x
11 12 13 2 3 4 6 4 4200+ + + + + ≤x x x x x x
11 1000≤x
12 1000≤x
13 1000≤x
11 12 13 2 3 4502 1502 2502 3500 6000 3200 min+ + + + + = →x x x x x x v
Pomoću LINDO može se rešiti linearizovani oblik modela kvadratnog programiranja, LINDO oblik problema glasi:
MIN 502X11+1502X12+2502X133500X2+6000X3+3200X4
ST
X11+X12+X13+2X2+3X3+X4>3200
2X11+2X12+2X13+X2+X3+2X4=7000
X11+X12+X13+6X2+4X3+X4<4200
X4>1000
X11<1000
X12<1000
X13<1000
END
Rešenja koja dobijamo su prikazana na slici 17.
697
Slika 17. Unos modela i rešenje
Unos problema kvadratnog programiranja pomoću LINGO ne zahteva pripreme, kao što je linearizacija problema. Unos konkretnog modela izgleda na sledeći način: MIN= 0,5*X1^2+2*X1+3500*X2+6000*X3+3200*X4;
X1+2*X2+3*X3+X4>3200;
2*X1+X2+X3+2*X4=7000;
X1+6*X2+4*X3+X4<4200;
X4>1000;
X1<3000;
END
Birajući SOLVE iz LINGO menija pojavljuje se output prikazan na slici 18.
698
Slika 18. Unos modela i rešenje
7. TRANSPORTNI PROBLEM I LINDO
Primer 9. Promenljive: x11 – transportovana količina robe R iz magacina G1 do potrošača P1 x12 – transportovana količina robe R iz magacina G2 do potrošača P1 x13 – transportovana količina robe R iz magacina G3 do potrošača P1 x21 – transportovana količina robe R iz magacina G1 do potrošača P2 x22 – transportovana količina robe R iz magacina G2 do potrošača P2 x23 – transportovana količina robe R iz magacina G3 do potrošača P2
699
Model: x11, x12, x13, x21, x22, x23 ≥0
11 12 13 = 1500+ +x x x (ograničenje koje se odnosi na potrošnju potrošača P1)
21 22 23 = 2000+ +x x x (ograničenje koje se odnosi na potrošnju potrošača P2)
11 21 1500+ =x x (ograničenje koje se odnosi na kapacitet skladišta G1)
12 22 800+ =x x (ograničenje koje se odnosi na kapacitet skladišta G2)
11 12 13 21 22 2310 6 8 12 7 2 min+ + + + + = →x x x x x x v (ograničenje koje se odnosi na kapacitet skladišta G3)
13 23 = 1200+x x
Transportni problem postavljen u linearnom obliku modela programiranja može se rešiti pomoću LINDO programskog paketa, model je sledeći: MIN X11+6X12+8X13+12X21+7X22+2X23
ST
X11+X12+X13=1500
X21+X22+X23=2000
X11+X21=1500
X12+X22=800
X13+X23=1200
END
Rešenja dobijena na ekranu prikazuje slika 19.
701
8. HIPERBOLIČNO PROGRAMIRANJE I LINDO
Primer 10. Promenljive: x1 – broj proizvedenih komada artikla A1
x2 – broj proizvedenih komada artikla A2
x3 – broj proizvedenih komada artikla A3
Model:
1 2 3, , 0≥x x x
3x1 + x2 + 2x3 = 2200 (ograničenje koje se odnosi na 100% iskorišćenje kapaciteta mašine M)
5x1 + 2x2 + 8x3 ≤ 3900 (ograničenje koje se odnosi na moguću količinu sirovine S)
x1 ≥500 (ograničenje koje se odnosi na donji limit proizvoda A1)
x1 ≤600 (ograničenje koje se odnosi na gornji limit proizvoda A1)
x2 ≥100 (ograničenje koje se odnosi na donji limit proizvoda A2)
x2 ≤600 (ograničenje koje se odnosi na gornji limit proizvoda A2)
x3 ≥100 (ograničenje koje se odnosi na donji limit proizvoda A3)
x3≤250 (ograničenje koje se odnosi na gornji limit proizvoda A3)
(200x1+350x2+250x3)/(20x1+10x2+20x3+50000) = z→ max
Funkcija kriterijuma se odnosi na maksimiziranje ekonomičnosti
Pomoću LINGO može se rešiti model hiperboličnog programiranja, LINGO oblik problema glasi:
MAX= (200*X1+350*X2+250*X3)/(20*X1+10*X2+20*X3+50000);
3*X1+X2+2*X3<2200;
5*X1+2*X2+8*X3<3900;
X1>500;
X1<600;
X2>100;
X2<600;
X3>100;
X3<250;
END
Model i rešenje modela su prikazani na slici 20.
703
9. METOD CPM
Problem kritičnog puta (CPM) rešava se pomoću LINDO tako što se dijagram prevodi u oblik koji je za programski paket prihvatljiv. Funkcija kriterijuma je razlika između početne i krajnje tačke dijagrama. Ograničenja su sva oblika > a predstavlaju razliku između svih direktno povezanih tačaka dijagrama. Nakon SOLVE komande dobija se kritični put od početne do krajnje tačke mreže
Primer 11. Tabela 2. Podaci o trajanju aktivnosti
Aktivnosti Aij Trajanje aktivnosti u danima A - B 10
A - C 20
A - D 12
B - G 20
B - E 0
B - C 10
C - E 12
D - E 132
D - F 201
F - E 11
F - H 125
E - G 51
E - M 105
G - M 21
H - M 20
LINDO oblik modela: MIN M-A
ST
-A+B>10
-A+C>20
-A+D>12
-B+G>20
-B+E>0
-B+C>10
-C+E>12
-D+E>132
-D+F>201
-F+H>125
-F+E>11
-E+G>51