51OPL Prirucnik - Radna Verzija1

Embed Size (px)

DESCRIPTION

prirucnik za modelujuci jezik opste namene OPL

Citation preview

Projektovanje optimizacionih aplikacija

4Projektovanje optimizacionih aplikacija sa reenim primerima u OPL-u -radni materijal-O prirunikuSadraj

1. Motivacija za izuavanje optimizacionih jezika i alataPredmet izuavanja operacionih istraivanja su organizacioni sistemi i procesi koji se u njima odvijaju. Generalni cilj je pronalaenje najboljih odluka pri upravljanju operacijama (otuda i ime ove naune discipline operaciona istraivanja) kako bi se ostvarili utvreni ciljevi konkretnog organizacionog sistema.

Organizacioni sistemi mogu biti vrlo raznovrsni: industrijski, saobraajni, poljoprivredni, obrazovni, zdravstveni, vojni, dravni,... Sve njih karakterie ogranienost raspoloivih resursa (novanih sredstava, vremena, sirovina, maina, ljudskih resursa, ...) i tenja da u uslovima takve ogranienosti funkcioniu na najbolji nain. Tenja da sistem funkcionie na najbolji mogui najee se formalizuje zahtevom da neke veliine budu maksimizirane (prihod, dobit, broj prevezenih jedinica robe, ...) ili minimizirane (troak, vreme realizacije projekta, kanjenje, ...). Model sistema je apstrakcija realnog sistema koja se formira radi izuavanja odreene pojave u njemu. Model ukljuuje samo osobine bitne za posmatranu pojavu, a zanemaruje manje vane detalje. Modeli prema svojoj strukturi mogu biti razliiti, a operaciona istraivanja tipino koriste matematike modele.

Matematiko programiranje

Matematiki model se moe definisati kao skup matematikih relacija koje opisuju ili definiu veze izmeu pojedinih atributa objekata realnog sistema. U matematikim modelima figuriu matematiki koncepti: promenljive, operatori, funkcije, domeni, ...

Najei oblik modela operacionih istraivanja sadri funkciju cilja koju treba optimizirati (minimizirati ili maksimizirati) i skup ogranienja koja definiu skup dopustivih reenja. Opti oblik takvog modela je:

min(max) f(x1,...,xn)

pod ogranienjima:

gi(x1,...,xn) 0, i=1, ..., m

gde je f - funkcija cilja, gi funkcije ogranienja, a x1,...,xn su promenljive odluivanja (upravljake promenljive). Skup svih n-torki (x1,...,xn ) koje zadovoljavaju sva postavljena ogranienja predstavlja dopustiv skup, a svaki njegov element (x1,...,xn ) je dopustivo reenje.

Ovaka formulacija se naziva optimizacioni problem ili problem matematikog programiranja (Mathematical Programming- MP). Napomenimo da ovaj izraz nije direktno povezan sa pojmom raunarskogprogramiranja.

Oblik ciljne funkcije i ogranienja odreuju da li govorimo o: linearnom, celobrojnom, meovitom celobrojnom ili nelinearnom programiranju.

Za svaki optimizacioni problem postoji odgovarajui problem odluivanja koji odgovara na pitanje da li postoji dopustivo reenje za neku konkretnu meru. Reenje problema odluivanja je jedan od odgovora DA ili NE.

Na primer, posmatrajmo na daleko poznati problem trgovakog putnika (Travelling Salesman Problem-TSP): S obzirom na spisak gradova i daljina izmeu svakog para gradova, nai najkrai put da putnik poseti svaki grad tano jednom i da se vrati u poetni grad. Oigledno, re je o optimizacionom min problemu. Problem: da li postoji put takav da putnik poseti svaki grad tano jednom krai ili jednak k, je problem odluivanja.Programiranje ogranienjaIako radi sa istim konceptima kao i MP (model, funkcija cilja, ogranienja, promenljive odluivanja), programiranje ogranienja (Constraint Programming CP) nije generalizacija linearnog, celobrojnog ili nelinearnog programiranja. Re "programiranje" u CP pojmu upravo ukazuje na njegove korene u oblasti programskih jezika, preciznije u oblasti logikog programiranja. Paradigma programiranja je pristup programiranju zasnovan na matematikoj teoriji ili koherentnom skupu principa. Svaka paradigma podrava skup koncepata koji je ini posebno podesnom za odreenu klasu problema. Postoje razliite paradigme programiranja (neki autori su prebrojali ak 30! [1]), a najvanije su: imperativna, funkcionalna, logika, objektno-orijentisana. Svaka od paradigmi ima prednosti i nedostatke za razliite kategorije problema. Takoe, postoje programski jezici koji podravaju vie paradigmi. Npr. Visual Basic, C++, C#, Java, ...podravaju imperativnu i objektno-orijentisanu paradigmu.CP je noviji pristup u oblasti programskih jezika koji pokuava da smanji jaz izmeu opisa problema na visokom nivou i algoritma implementiranog za njegovo reavanje. Najvanija osobina ogranienja u CP je njihova deklarativana priroda, tj. specificira se relacija koja mora biti zadovoljena bez specifikacije efektivne procedure za pronalaenje vrednosti uestvujuih promenljivih. Dakle, opisuje se ono ta se reava umesto kako se reava. Nasuprot tome, imperativno programiranje je fokusirano na to da opie kako se problem reava tj. na implementaciju algoritma. CP moemo posmatrati kao deklarativnu paradigmu programiranja, koja je kao takva suprotna imperativnoj, a bliska je logikoj. CP pristup se pokazao jako efikasnim u problemima planiraja (planning) rasporeivanja (scheduling and timetabling), ali i u problemima sleenja (sequencing), alokacije (allocation) i rasporeda rada posada u turnusu (rostering). Zapravo, mnogi problemi u stvarnom svetu mogu se predstaviti ogranienjima (Constraints), pri emu zadovoljenje (Satisfaction) tih ogranienja daje reenje za posmatrani problem (Problem).

CP optimizuje neku ciljnu funkciju pod logikim, aritmetikim ili funkcionalnim ogranienjima preko diskretnih ili intervalnih promenljivih ili trai dopustivo reenje za problem definisan logikim, aritmetikim ili funkcionalnim ogranienjima preko diskretnih ili intervalnih promenljivih. Ponekad CP nema zadatak da nae optimalno reenje, tj. da optimizira neku ciljnu funkciju, ve npr. da nae sva reenja postavljenog problema (npr. zadatak da se na ahovsku tablu postave kraljice da se ne tuku...)CP pristup se pokazao boljim od MP pristupa u sluajevima postojanja:

nelinearnih ogranienja i/ili nelinearne ciljne funkcije,

uslovnih ogranienja (If-then-else),

ogranienja koja se nameu na intervale ili izmeu intervala,

logikih ogranienja.

Imperativno programiranje vs. deklarativno programiranje

Davno je uoeno da se mnogi realni problemi mogu predstaviti MP i/ili CP modelima. Meutim, to samo po sebi ne znai i lakou reavanja istih. Veliki realni problemi mogu biti reeni samo primenom odgovarajuih raunarskih programa.

MP i CP modeli mogu biti imlementirani i u tipinim imperativnim jezicima kao to su Visual Basic, C++, Java ili Object Pascal. Meutim, korienje specijalizovanih jezika i/ili softverskih alata za modeliranje znaajno skrauje vreme razvoja ovakvih aplikacija ("Bilo mi je potrebno samo pet dana da ... izgradim model za koji sam ranije troio tri meseca", M. uur, Sabre Research Group).

Najpoznatiiji jezici za MP su: AMPL, MPL, GAMS, OPL, LINDO, MS Project, a za CP: CHIP , Oz, ECLiPSe, OPL, B-Prolog, Mozart,

Dakle, OPL (Optimization Programming Language) podrava i matematiko programiranje i programiranje ogranienja! To je deklarativni jezik koji se pojavio se krajem XX veka.Prednost korienja deklarativnog nad imperativnim programiranjem ilustrovaemo sledeim primerom: neka je zadatak da se odredi najmanji prirodan broj x i prirodni brojevi a, b, c, d za koje vai: x = a3 + b3 = c3 + d3 i {a,b}{c,d}. (Reenje: x = 1729, {a,b}= {9,10}, {c,d} = {12,1}) (Modifikovani primer 20, str. 118, Osnovi programiranja, sa reenim zadacima u Visual Basic-u, S. Mladenovi, S. Jankovi i A. Uzelac, Saobraajni fakultet, Beograd, 2010., III izdanje).Reenje ovog zadatka je predstavljeno sledeim kodom u Visual Basicu:

x = 1

Do

For a = 1 To Int(x ^ (1 / 3)) + 1

For b = 1 To Int(x ^ (1 / 3)) + 1

If x = a ^ 3 + b ^ 3 Then

For c = 1 To Int(x ^ (1 / 3)) + 1

For d =1 To Int(x ^ (1 / 3))+ 1

If x = c ^ 3 + d ^ 3 And a c

And a d Then GoTo 10

Next d

Next c

End If

Next b

Next a

x = x + 1

Loop While TrueReenje istog zadatka u OPL-u ima sledei oblik:

minimize

x;

subject to {

x == a^3+b^3; x == c^3+d^3; a != c && a != d;

};

Ve na prvi pogled je jasno kakve su prednosti reavanja optimizacionih problema u deklarativnom jeziku u odnosu na imperativni!OPL, dakle, prua pogodan matematiki opis za optimizacione modele. Koristei podesnu sintaksu, OPL omoguava znatno jednostavniji i krai kod nego programski jezici opte namene, smanjujui napor i poboljavajui pouzdanost u razvoju aplikacija, njihovoj nadogradnji i odravanju. Mona sintaksa koju ovaj jezik poseduje, podrava sve izraze potrebne za modeliranje i reavanje problema matematikog programiranja i programiranja ogranienja.

Veina praktinih aplikacija zahteva vie od samog reavanja modela, ak i kada se optimizaciona aplikacija posmatra izolovano u odnosu na informacioni sistem. Tipino, ovakve aplikacije zahtevaju reavanje nekoliko varijanti modela sa istim podacima, istog modela sa razliitim podacima, niza modela gde je reenje jednog modela ulaz u sledei, i slino. OPL Script je proceduralni, "skript" jezik za komponovanje i upravljanje optimizacionim modelima razvijenim u OPL-u.2. IBM ILOG optimizacioni paketILOG je meunarodna softverska kompanija, osnovana 1987. godine u Parizu. Jedan od prozvoda po kome je stekla popularnost je softverski alat za optimizaciju OPL Studio. 2009. godine ovu kompaniju je kupila kompanija IBM. IBM je od 2009. godine do danas pravio vie verzija softverskog paketa IBM ILOG CPLEX Optimization Studio, koje predstavljaju nadogradnju originalnog ILOG-ovg proizvoda OPL Studio. IBM ILOG CPLEX Optimization Studio (Optimization model development toolkit for mathematical and constraint programming) je alat za matematiko programiranje i programiranje ogranienja i njegova probna verzija dostupna je besplatno na lokaciji http://www-03.ibm.com/software/products/us/en/ibmilogcpleoptistud/. Korienje ovog softverskog alata je mogue na dva naina:1. Softverska komponenta IBM ILOG kompanije poznata pod nazivom ILOG Concert Technology podrava definisanje i modifikovanje MP/CP modela direktno iz C++, Java, C# ili Visual Basic koda. Takoe, softverska komponenta CPLEX Callable Library omoguava ugraivanje optimizacionih modela u C, Fortran i Python kod. Dakle, programer moe da razvija optimizacione modele i vri njihovu integraciju u komleksne softverske sisteme ne naputajui "svoje" jeziko okruenje. Biblioteke ILOG Concert Technology i CPLEX Callable Library omoguavaju programerima da efikasno ugrade IBM ILOG optimizaciju tehnologiju direktno u svoje aplikacije. Sveobuhvatan skup rutina, prisutan u ovim bibliotekama, omoguava definisanje, reavanje, analiziranje, postavljanje upita i kreiranje izvetaja za optimizacione probleme.2. Druga mogunost je korienje integrisanog razvojnog okruenja softverskog paketa IBM ILOG CPLEX Optimization Studio. Ovo integrisano razvojno okruenje (Integrated Development Environment IDE) omoguava nam da kreiramo i modifikujemo modele koristei jezik modeliranja OPL, da kombinujemo i upravljamo modelima koristei proceduralni jezik OPL Script, i da izvravamo modele uz pomo prisutnih optimizacionih maina (platformi) solvera IBM ILOG CPLEX-a ili IBM ILOG CP Optimizer-a. Takoe, okruenje prua podrku prikazivanju rezultata u tabelarnom i grafikom obliku. Ovaj prirunik opisuje korienje ovog softverskog alata na drugi od spomenutih naina.

Elementi IBM ILOG optimizacionog paketa

alat za razvoj modela: IBM ILOG OPL alat za razvoj aplikacija: IBM ILOG Optimization Decision Manager (ODM)

optimizacione maine - solveri:

IBM ILOG CPLEX - za matematiko programiranje (MP)

IBM ILOG CP Optimizer - za programiranje ogranienja (CP)

Slika 1. Prikaz interakcija u okviru IBM ILOG optimizacionog paketa

IBM ILOG CPLEX Optimization Studio slui za razvoj i podeavanje optimizacionih modela, testiranje i otklanjanje greaka u njima, kao i za njihovo izvravanje. Glavne karakteristike integrisanog razvojnog okruenja su: omoguava kreiranje modela upotrebom jednostavnog deklarativnog jezika OPL-a (u daljem tekstu OPL modela); razvijeni OPL model moe izvravati jedan od 2 prisutna solvera - IBM ILOG CPLEX i IBM ILOG CP Optimizer. Podrazumevani solver je IBM ILOG CPLEX. Ukoliko zelimo da pokrenemo drugi solver u OPL modelu mora biti prisutana deklaraciaja: using CP; OPL model se moe koristiti samostalno ili kao deo ODM aplikacije. U okviru ovog kursa emo se ograniiti na samostalno izvravanje OPL modela unutar razvojnog okruenja; razvojno okruenje sadri skriptni jezik (IBM ILOG Script) za upravljanje OPL modelima. Zapravo, puna snaga OPL modela biva iskorienja uz pomo OPL Script jezika jer on nudi namensku podrku visokog nivoa za kompleksne aplikacije.Slika 2. Uloge u razvoju aplikacijeKako OPL predstavlja alat za izradu optimizacionih modela, obino ga koriste eksperti operacionih istraivanja ili drugi korisnici koji sarauju sa njima, npr.

programeri koji obavljaju integraciju podataka i integraciju sa ciljnim razvojnim okruenjem; donosioci odluka koju izraavaju poslovne zahteve i zahteve konkretnih aplikacija, koji su uglavanom i njeni kranji korisnici; ODM predstavlja orkuenje koje koriste poslovni korisnici u analizi, ali i alat za razvoj aplikacija koji koriste eksperti operacionih istraivanja ili IT eksperti tokom razvoja prliagoenih aplikacija.Optimizacione tehnke u IBM ILOG optimizacionom paketuDostupne su sledee optimizacione tehnike :

Matematiko programiranje (MP), posebno

Linearno programiranje (LP)

Celobrojno programiranje (IP)

U praksi, postoje mnogi modeli koji zahtevaju celobrojne ili neke kontinualne upravljake promenljive, tako da je sve ea primena meovitog celobrojnog programiranja (MIP). Kvadratno programiranje (QP)

Programiranje ogranienja (CP), obino se koristi za:

Probleme rasporeivanja Odreene kombinatorne probleme koji nisu prilagoeni za MP.OPL model tipino sadri sledee logike celine: izbor solvera, deklarisanje i definisanje podataka, definisanje promenljivih odluivanja, definisanje ciljne funkcije i skupa ogranienja optimizacionog modela. U pojedinim sluajevima sadri i specifikaciju procedure pretraivanja i nain prikazivanja rezultata. OPL model moe sadrati naredbe IBM ILOG Script jezika za preprocesiranje, postprocesiranje i kontrolu toka. Tipian izgled OPL modela je prikazan u Primeru 1.Karakteristike modela koje moe da izvrava IBM ILOG CPLEX (MP)Funkcija ciljaUpravljake promenljive i tipovi podataka mogu biti...Ogranienja mogu biti...

linearna celobrojni

kontinualnilinearne nejednakosti (=, ==)logike relacije (&&, ||, !, !=)

kvadratna celobrojni

kontinualnilinearne ili kvadratne nejednakosti (=, ==)

logike relacije (&&, ||, !, !=)

Ne mogu se svi problemi, u kojoj je funkcija cilja kvadratna reiti primenom OPL-a. Postoji mogunost postojanja matematikog modela bez deklarisane funkcije cilja (npr. nai sva postavljanja 8 kraljica na ahovskoj tabli da se nikoje dve ne napadaju!). U tom sluaju, OPL e jednostavno instancirati podatke u modelu bez njegovog reavanja.Karakteristike modela koje moe da izvrava IBM ILOG CP OptimizerFunkcija cilja...Upravljake promenljive mogu biti...Podacimogu biti ...Ogranienja mogu

da sadre...

moe ili ne mora postojati celobrojne, sa definisanim domenima intervalne (za rasporeivanje) celobrojni

realni aritmetike operacije, izraze i ogranienja

logike relacije (and, or, not, if-then)

posebna ogranienja (allDiferent, allMinDistance, inverse, lex, pack)

Detaljniji prikaz operatora koji mogu biti prisutni u MP i CP modelima bie dat u sledeim sekcijama.

Da bi prikazali logike celine OPL modela progledaemo sledei primer:

Primer 1: Posmatrajmo pakovanje 10 vrsta tereta ije su mase i dobiti od prevoza predstavljene u Tabeli 1. Pakovanje se vri na prevozno sredstvo nosivosti 35000 m. jed.

Tabela 1: Optimizacija pakovanja 10 vrsta robe Vrste robe Masa robe(m. jed.) Dobit od transporta (n. jed.)

C1400390

C230093

C325082

C420078

C517073

C614067

C710051

C86051

C94035

C102012

Matematiki model:

max

p.o.

/********************************************* * OPL model *********************************************/

//Kako je deklaraciaja: using CP pod komentarom, ovaj primer ce se //izvrsavati podrazumevanim IBM ILOG CPLEX solverom

//using CP;//Deklarisanje i definisanje podataka

//U ovom primeru deklarisana su dva celobrojna niza koja su pritom //inicijalizovana, i dve celobrojne promenljive pri cemu je nosivost //inicijalizovana na 35000 a prihod kao podrazumevana vrednost na 0

int dobit[1..10]=[390, 93, 82,78,73,67,51,51,35,12];int masa[1..10]=[400,300,250,200,170,140,100,60,40,20];int nosivost=35000;int prihod;

//Definisanje promenljivih odlucivanja

//Deklarisanje upravljackih promenljivih pocinje sluzbenom reci dvar;

//u ovom primeru je deklarisan celobrojni niz x od 10 elemenata koje//uzimaju vrednosti iz opsega [0,1000]dvar int x[1..10] in 0..1000;//Definisanje ciljne funkcije//Poinje sa kljunom reju minimize ili maximizemaximize

sum(i in 1..10)x[i]*dobit[i];//Formulisanje ogranicenja

//Ogranicenja se formuliu unutar vitiastih zagrada, kojima prethode //kljune rei subject to subject to {

(sum(i in 1..10) (x[i]*masa[i]))New>OPL Project. Otvara se New Project prozor.2. Vri se unos naziva projekta u polju Project Name.* Svaki projekat mora da ima jedinstven naziv. Ponavljanje naziva ve postojeeg projekta nije dozvoljeno, ak i kad se projekat uva na nakoj drugoj lokaciji.3. Koristei komandu Browse (desno od polja Project Location) za navigaciju, bira se direktorijum gde korisnik eli da sauva svoj projekat. Ukoliko postoji potreba, korienjem tastera Make Nev Folder, kreira se novi direktrorijum (folder).

* Ova lokacija predstavlja radni prostor (workspace).

4. U poslednjem polju Description moe se dodati opis. Ovaj opis se pojavljuje u OPL navigatoru projekata pored naziva projekta. To moe biti korisno za razlikovanje razliitih projekata sa slinim imenima i/ili svrhama.

5. ekiranjem polja Add a default Run Configuration, kreira se podrazumevana konfiguracija pokretanja.

* U svakom trenutku se moe kreirati konfiguracija pokretanja, izborom komande menija File>New>Run Configuration. Ukoliko postoji vie konfiguracija pokretanja u navigatoru projekata, kako bi se odreena konfiguracija postavila kao podrazumevana, neophodno je uraditi desni klik na nju i izabrati Set as Default. Pored podrazumevane konfiguracije pokretanja tada e u zagradi stajati odrednica default.

6. Za kreiranje modela u projektu, treba ekirati polje Create Model. Datoteka modela (.mod) e nakon toga biti kreirana.

* U svakom trenutku se moe kreirati datoteka modela, izborom komande menija File >New >Model.

7. Za podeavanje opcija za ovaj projekat, treba ekirati polje Create settings. Datoteka podeavanja (.ops ) e nakon toga biti kreirana.

* U svakom trenutku se moe kreirati datoteka podeavanja, izborom komande menijaFile >New >Settings.

8. Za kreiranje datoteke podataka, terba ekirati polje Create Data. Ovim e datoteka inicijalizacije podataka (.dat) biti kreirana.

* U svakom trenutku se moe kreirati datoteka podataka, izborom komande menija File >New >Data.

9. Pritiskom na Finish projekat e biti sauvan na prethodno odreenoj lokaciji.

Importovanje postojeeg projekta u navigator OPL projekata

Proces importovanja odvija se u sledeim koracima:1. Iz glavnog menija, treba izabrati File>Import, ili desnim klikom u navigatoru OPL projekatai izabrati stavku Import.

2. Izborom Existing OPL 6.X projects u podmeniju prikazuje se arobnjak importovanja.

3. arobnjak importovanja nudi dve mogunosti za izbor lokacije projekta:

Select root directory ukazuje na direktorijum gde se nalazi projekat. eljeni direktorijum se moe izabrati korienjem komande Browse. Select archive file ukazuje na upakovanu arhivu, kao to je .zip ili .rar datoteka koji sadri fajlove projekta. Sadraj arhive ce biti importovan u navigator OPL projekata bez potrebe otpakovanja (unarchive).

U arobnjaku importovanja, OPL projekti izabranog direktorijuma (ili arhive) koji trenutno ne postoje u radnom prostoru (workspace) su navedeni u prikazu Projects .

4. Svi projekti koje treba da se importuju treba da budu ekirani.

5. Polje Copy projects into workspace predstavlja:

Ukoliko je ekirano, projekat e se kopirati sa trenutne lokacije u radni prostor (workspace). Sve modifikacije koje se naprave na projektu, odrazie se samo na kopiju koja se nalazi u radnom prostoru, bez menjanja projekta koji se nalazi na izvornoj lokaciji.

Ukoliko ovo polje nije ekirano, sve nainjene promene e se odraziti na projekat koji se nalazi na izvornoj lokaciji, jer projekat nije kopiran u radni prostor.

6. Klikom na Finish zavrava se importovanje. Projekat je importovan u navigator OPL projekata i spreman je za rad.Navigator OPL projekata

Editovanje i uvanje datoteka u projektima

Prozor za editovanje prikazuje razne sadraje, u zavisnosti od toga ta korisnik izabere.

Tekst editor se pojavljuje sa:

sadrajem datoteke modela, duplim klikom na datoteku (.mod) koja se nalazi u navigatoru OPL projekata,

sadrajem datoteke podataka, duplim klikom na datoteku (.dat) koja se nalazi u navigatoru OPL projekata,

editorom podeavanja, duplim klikom na datoteku podeavanja (.ops),

specijalizovanim ODM editorima, ukoliko korisnik ima instaliran IBM ILOG ODM, duplim klikom na jednu od datoteka u oblasti ODM aplikacija projekta.

Duplim klikom na ime datoteke u navigatoru OPL projekata datoteka se otvara za editovanje. Viestruki editori mogu biti odjednom otvoreni u prozoru za editovanje. Postoji mogunost pozicioniranja na eljeni prozor kretanjem napred - nazad izmeu otvorenih prozora, klikom na kartice (tabove) prozora koji su vidljivi u prozoru za editovanje.

Istovremeno se moe prikazati vie od jednog editora klikom na karticu nekog skrivenog prozora kojeg korisnik eli da prikae. Razliiti editori mogu menjati svoju veliinu, ali se ne mogu pomerati iz centralnog okvira okruenja.

Datoteka sa kojom se radi se moe sauvati korienjem komande File > Save koja se nalazi u okviru glavnog menija. Ova komanda je dostupna samo kada je datoteka modifikovana.

Da bi korisnik sauvao sve modifikovane datoteke iz navigatora OPL projekata (u svim otvorenim projektima ), koristi komandu File>Save All.

OPL tekst editor

Datoteke .mod i .dat pojavljuju se u tekst editoru OPL-a. Tekst editor ima sledece karakteristike: Postojanje vie tabova omogucava menjanje vie od jedne datoteke istovremeno. Vie dokumenata se moe imenovati u okviru prozora za editovanje. Sintaksno bojenje: sintaksne kategorije razliitih vrsta datoteka koje se mogu otvoriti (npr. model, podaci) su obojene razliito, prema vrsti. ema boja se moe menjati. Viestruki nivoi komandi: Undo i Redo mogu ponititi i ponoviti sve nastale modifikacije bez ogranienja. Automatsko uvlaenje: blokovi, oivieni vitiastim zagradama { } su automatski uvueni. Uvlaenje se moe povecati ili smanjiti postavljanjem eljene veliine tabulacije. Prepoznavanje zagrada: pri kucanju ], } ili ), automatski se oznaava otvorena zagrada na koju se zatvorena zagrada odnosi. U datotekama podataka (.dat), se takoe uparuju. Simboli margine: editor poseduje levu marginu koja moe sadrati simbole, kao to su: crveni krug sa znakom "X" koji ukazuje na greku, plavi krug koji ukazuje na taku prekida (u modu otklanjanja greaka debugging mode), plavi krug sa strelicom koji ukazuje da je OPL stao kod trenutne take prekida (u modu otklanjanje greaka), bela strelica koja pokazuje trenutnu lokaciju tokom otklanjanja greaka.

Ponovno osveavanje: ukoliko se eksternim editorom izmeni datoteka, korisnik treba ponovo da uita fajl im editor okruenja povrati fokus. Prilagoavanje: moe se izvriti podeavanje opcija kako bi se editor prilagodio potrebama korisnika; izborom Window>Preferences i klikom ili na Editors u kategoriji General, ili na Colors u OPL kategoriji. Kontrola verzije: OPL IDE prua mogunost kontrole verzija datoteke, opcija pod nazivom Local History omogucava praenje i uporeivanje razliitih verzija datoteke tokom njenog editovanja u projektu. Na primer, ukoliko se datoteka modela izmeni nekoliko puta, sve verzije te datoteke su i dalje na raspolaganju. Korienjem komandi Compare With i Replace With mogu se porediti razliite verzije datoteka ili vratiti prethodne verzije. Editor podeavanja projekta

Razliita podeavanja svakog projekta (na primer, MP, jezike ili optimizacione opcije) se mogu obaviti korienjem datoteke podeavanja. Datoteka podeavanja (sa ekstenzijom .ops) je posebna datoteka koja se nalazi u okviru projekta. Moguce je dodati vie datoteka podeavanja jednom projektu i primeniti razliite datoteke podeavanja na razliite konfiguracije. Ovo prua fleksibilnost u konfigurisanju modela i odreivanju kako reiti razliite probleme.

Kako bismo kreirali novu datoteku podeavanja, treba kliknuti desnim tasterom mia bilo gde u navigatoru OPL projekata i izabrati New> Settings iz kontekst menija.

Takoe, moe se kreirati datoteka podeavanja koristeci komandu File>New>Settings iz glavnog menija.

Za ureivanje datoteka podeavanja, treba kliknuti dvaput u na izabranu .ops datoteku u navigatoru OPL projekata. Prikazae se prozor za ureivanje koji ima oblik prikazan na slici koja sledi.

Datoteka podeavanja

Za izmenu opcija u datoteci podeavanja potrebno je:

1.Izabrati stavku koju treba izmeniti u navigacionom stablu na levoj strani prozora.

2.Promeniti podeavanja u poljima na desnoj strani. Promene polja ukljuuju:

izbor stavke iz liste,

popunjavanje tekstualnog polja,

selektovanje ili deselektovanje.

3. Sa desne strane svakog polja, mogu se primetiti sledee ikonice:

postavljanjem kursora iznad ikonice dokumenta vidi se iskaue objanjenje polja i dostupnih opcija, klikom na zakrivljenu strelicu, podeavanje za to polje se vraaju na podrazumevanu (default) vrednost, crveni znak uzvika sa leve strane pre naziva polja, ukazuje na polje kojem je promenjena podrazumevana vrednost.

4. Birajuci komandu File>Save iz glavnog menija uvaju se izvrene promene. Klikom na X u kartici .ops datoteke zatvara se prozor. Pre zatvaranja prozora pojavie se opcija za potvrdu uvanja izvrenih promena.

Upravljanje projektima

Upravljanje projektima podrazumeva izvoenje sledecih operacija nad projektima: aktiviranje jednog od projekta prisutnih u navigatoru OPL projekata,

otvoranje ili zatvoranje projekata,

dodavanje projektu datoteka modela, podataka ili podeavanja,

brisanje datoteka modela, podataka ili podeavanja iz projekta,

kreiranje ili uklanjanje jedne ili vie konfiguracija pokretanja projekta,

kreiranje kopije projekta,

brisanje projekata.

Aktiviranje projektaAktivan projekat je onaj koji je trenutno izabran u navigatoru OPL projekata. Nije potrebna akcija kako bi se promenio aktivan projekat ve samo treba kliknuti na naziv drugog projekta ili neki od fajlova unutar foldera tog projekta.

Zatvaranje ili otvaranje projekta

Projekti mogu biti otvoreni ili zatvoreni. Kada je projekat zatvoren, zanemaren je od strane OPL-a, ali njegovi resursi se i dalje nalaze na lokalnoj datoteci sistema. Ovim se smanjuje vreme potrebno za otvaranje projekata kada se za tim ukae potreba.

Da bi zatvorili trenutno otvoreni projekat, treba kliknuti desnim tasterom mia na ime projekta i odabrati opciju Close project iz kontekst menija. Znak strelice ispred naziv projekta nestaje, ali projekat ostaje i dalje vidljiv u navigatoru OPL projekata.

Da bi ponovo otvorili projekat, treba kliknuti desnim tasterom mia na ime projekta i odabrati iz kontekst menija stavku Open project.

Dodavanje postojeih datoteka u projekat

Postoji mogunost dodavanja postojecih datoteka u projekat i to se vri njihovim kopiranjem u izabrani projekat. Dodavanje je mogue izvriti na dva naina:I nain

1. U navigatoru OPL projekata, treba izabrati projekat u koji elimo da uvezemo (importujemo) datoteku. Ovo je opcioni korak, postoji mogunost kasnijeg odabira u prozoru importovanja.

2. U glavnom meniju, selektovanjem komande File>Copy Files to Project otvara se prozor importovanja.

3. U prozoru Import, prikazuje se izvorni direktorijum za datoteke u okviru polja From directory kom se moe pristupiti korienjem tastera Browse.

4. Odabirom datoteke ili datoteka koje korisnik eli da doda, one se prikazuju u obliku liste. Postoje tasteri za filtriranje liste i pomo pri izboru svih ili nijedne datoteke.

5. Ukoliko je prethodno izabran projekat koji se uvozi, polje Into Folder e biti automatski popunjeno. Meutim, moe se koristiti taster Browse za odabir jednog od foldera projekta koji se nalazi u okviru navigatora OPL projekata.

6. U poslednjem koraku se vri izbor ponuenih opcija, nakon ega treba pritisniti taster Finish. Ovim korakom, izabrane datoteke su kopirane u projekat i spremne su da budu otvorene u editoru.

II nain

1.Otvaranjem Windows Explorer prozora treba doi do direktorijuma gde se nalazi datoteka (datoteke) koju korisnik eli da doda.

2. Prevlaenjem datoteke u navigator OPL projekata i oputanjem levog tastera mia, datoteka (datoteke) se prebacuje u eljeni folder projekta. Datoteka (datoteke) je kopirana u projekat i spremna za otvaranje u editoru. Obe metode omoguavaju kopiranje datoteke u projekat, tako da sve izmene e se odraziti samo na kopiju koja se nalazi u folderu OPL projekta, a ne i na originalnoj datoteci.

Brisanje datoteke iz projekta

Pri uklanjanju datoteke iz projekta, ona se brie iz foldera projekta. Ova operacija se ne moe ponititi, a sve promene koje su izvrene u datoteci nee biti sauvane.

Da bi obrisali datoteke iz projekta treba da:

1. U navigatoru OPL projekata, treba kliknuti desnim tasterom mia na datoteku koju korisnik eli da obrie iz projekta.

2. Izabrati opciju Delete iz otvorenog kontekst menija.

3. Datoteka je uklonjena iz projekta i izbrisana iz foldera projekta iz sistemske datoteke. Kada se obrie datoteka koja je oznaena konfiguracijom pokretanja, ukljuujuci konfiguraciju pokretanja u drugom projektu, sve reference ka toj datoteci ce biti takoe izbrisane u svim konfiguracijama koje su bile referencirane.

Rad sa konfiguracijama pokretanja (Run configurations)

U OPL okruenju, konfiguracija pokretanja predstavlja nain upravljanja modelom, podacima i datotekom podeavanja u okviru projekta. U osnovi, konfiguracija pokretanja predstavlja varijaciju datog projekta pri njegovom izvravanju i testiranju. Konfiguracija pokretanja kombinuje dototeku modela i nijednu, jednu ili vie datoteka podatka koje se razlikuju u pogledu sadraja i/ili podeavanja, originalnog modela i podataka projekta, a odnose se na isti matematiki problem. Ona, takoe, moe da sadri datoteke podeavanja koje su specifine za run konfiguraciju .

Moe se definisati onoliko konfiguracija pokretanja koliko je korisniku potrebno u datom projektu. Praktino, konfiguracije pokretanja se pojavljuju kao podnivoi u stablu projekata. Kada se kreira projekat, podrazumevana konfiguracija pokretanja sadri samo datoteku modela. Ona se moe proiriti dodavanjem jedne ili vie datoteka podataka i/ili jedne ili vie datoteka podeavanja.

Dodavanje datoteka u konfiguraciju pokretanja podrazumeva sledei postupak:

1. Datoteka koju korisnik eli da doda u konfiguraciju pokretanja mora vec da postoji u projektu i biti prikazana u navigatoru OPL projekata. Ukoliko ne postoji, prvo je treba dodati projekatu.

2. Prevlaenjem eljene datoteke, ona e biti dodata u podrazumevanu (deafault) konfiguraciju pokretanja (Configuration1 ukoliko se ne preimenuje). Konfiguracija pokretanja se moe preimenovati desnim klikom na naziv konfiguracije pokretanja, opcija Rename.

3. Postupak se ponovlja za svaku datoteku koju korisnik eli da doda u konfiguraciju pokretanja.

Ukoliko je sluajno prebaena pogrena datoteka ili je prebaena na pogreno mesto, ona se u svakom trenutku se moe obrisati: pritiskom desnog tastera mia i odabirom komande Delete, nakon ega treba potvrditi akciju. Ovim je obrisana datoteka iz konfiguracije pokretanja ali ne i sa hard diska.

Kreiranje nove konfiguracije pokretanja:

1.desni klik na folder Run Configutations u izabranom projektu,2.odabir opcije New Run Configuration iz kontekst menija. Nova konfiguracija pokretanja sa nazivom Configuration2, Configuration3, ... e biti dodata,3.kreirana konfiguracija pokretanja moe se (opciono) preimenovati na prethodno objanjen nain.

Postavljanje konfiguracije pokretanja kao podrazumevane:

1.desni klik na konfiguraciju pokretanja koju elimo da postavimo kao podrazumevanu,

2.odabir Set as default opcije iz otvorenog kontekst menija. Izabrana konfiguracija pokretanja tada postaje podrazumevana konfiguracija pokretanja.

Pozivanje datoteka u konfiguraciji pokretanja

Kada se izvrava konfiguracija pokretanja, redosled pozivanja datoteka podataka i/ili datoteka podeavanja koje su u meusobnom odnosu je vaan. Neki podaci u jednoj .dat datoteci mogu zavisiti od podataka iz druge .dat datoteke; pogrean redosled pozivanja moe izazvati greku pri izvravanju. Iz tog razloga, mogua je promena redosleda referenciranja datoteka unutar konfiguracije pokretanja.

Za odreivanje redosleda datoteka u konfiguraciji pokretanja potrebno je:

1.desni klik na naziv konfiguracije pokretanja i odabir komande Properties iz kontekst menija; nakon toga e se pojaviti prozor za podeavanje svojstava konfiguracije pokretanja,2.korienjem tastera Up (gore) i Down (dole) moe se promeniti redosled datoteka podeavanja i datoteka podataka. Takoe, iz ovog prozora se mogu dodati ili izbrisati reference datoteka u konfiguraciji pokretanja,3.klikom na OK zatvara se prozor svojstava. Datoteke u navigatoru OPL projekata su tada preureene.

Kopiranje projekta

Postojei projekat se moe kopirati i predstavljati osnovu nekog novog projekta. Ne moe se jednostavno napraviti kopija originalnog foldera projekta u sistemskoj datoteci, koja e zatim biti otvorena u OPL-u; ak iako preimenujemo modele i datoteke podataka u folderu koji je kopija, kopirani projekat e imati isti naziv kao i originalni projekt.

Da bi kopirali projekat u navigatoru OPL projekata potrebno je:

1.u navigatoru OPL projekata, otvoriti projekat koji treba da se iskopira,

2.desni klik na naziv projekta, nakon ega treba izabrati opciju Copy iz kontekst menija ili aktivirati tastaturnu komandu + C .

3.desni klik, opcija Paste iz kontekst menija ili + V.

4.u iskauem prozoru koji se pojavio, treba dati naziv projekta koji e se razlikovati od originalnog imena projekta i od drugih naziva projekata koji su trenutno otvoreniu OPL-u. Zatim treba kliknuti na dugme OK. Tada se novi projekat pojavljuje u navigatoru OPL projekata.

Brisanje projekta

Ukoliko korisnik trenutno ne radi sa projektom, moe ga ukloniti iz navigatora OPL projekata. Postoji mogucnost da se to uradi bez njegovog brisanja iz sistemske datoteke.

Za uklanjanje projekta iz navigatora OPL projekata potrebno je:

1.desni klik na naziv projekta i stavka Delete iz kontekst menija. Pojavljuje se iskaui prozor koji pita korisnika da li eli da izbrie projekat iz sistemske datoteka ili ne.

2.Dostupne su dve opcije:

Izborom opcije Also delete contents ... projekat se brie u celosti. Projekat ce biti kompletno izbrisan, i kasnije se ne moe vratiti korienjem komandi Undo ili Import>Existing Projects Into Workspace.

Izborom opcije Do not delete contents (podrazumevana) projekat e biti uklonjen iz navigatora OPL projekata, ali nee biti izbrisan iz sistemske datoteke. Projekat je i dalje prisutan u sistemskoj datoteci i moe biti ponovo otvoren koricenjem komandi menija Import>Existing Projects Into Workspace.

Pretraiva problema (Problem browser)

Prikazi pretraivaa problema

OPL okruenje poseduje pretraiva problema koji omogucava da korisnik vidi dubinsku strukturu modela i podataka. Kada se prvi put uita projekat, prozor pretraivaa problema je prazan, bez ikakvih podataka. Automatski se popunjava kada se pokrene model. Takoe moe se popuniti klikom na jednu od opcija tastera Browse koji se nalazi u tulbaru izvrenja. U ovom sluaju, vrednosti upravljakih promenljivih i drugih objekata koji se ocenjuju tokom reavanja nee biti prikazane.

Pretraiva problema se moe koristiti i za:

kretanje kroz datoteke modela prikazane u tekst editoru (izabrani objekat u pretraivau problema e biti istaknut u tekst editoru),

ispitivanje reenja problema i prikazivanje dodatnih pogleda na njih nakon izvravanja modela, ispitivanje strukture modela bez njegovog izvravanja.

Pretraiva problema omogucava vizuelizaciju svih stavki modela po kategorijama:

strukture podataka,

upravljake promenljive i izrazi,

ogranienja,

post-obrada.

Pozicioniranjem kursora na izvornu datoteku biramo stavku u okviru pretraivaa problema. Definicija i vrednosti stavke se prikazuju u vidu tabele u okviru prozora za editovanje nakon duplog levog klika ili desnog klika.U zavisnosti od vrste problema i njegovih struktura, jedan ili vie parametara bie prikazani u tabelarno u pretraivau problema, kao to se moe videti na sledeoj slici.

Tabelarni prikaz u pretraivau problema

Prozor Outline - pregled podataka, upravljakih promenljivih, ogranienja...

Ovaj prozor prua razliite poglede u zavisnosti ta je otvoreno u tekst editoru:

Kada je datoteka .mod otvorena u radnom prostoru, prikazan je prozor Model outline.

Kada je otvorena datoteka podeavanja .ops u radnom prostoru, prikazan je prozor podeavanja (Settings outline).

Kada je otvorena .dat datoteka u radnom prostoru, prozor outline prikazuje spisak podataka sadranih u ovoj datoteci.

Na primer, prozor strukture modela prikazuje strukturu modela u obliku stabla. Za svaki konstitutivni element modela (podatak, upravljaka promenljiva, ogranienje), ukazuje se na broj elemenata tog tipa u modelu. Za prikazivanje strukture modela, treba dva puta kliknuti na datoteku .mod u okviru stabla projekta.Prilikom ureivanja datoteke podeavanja .ops, prozor podeavanja se automatski prikazuje.

Na slici koja sledi grafiki je prikazano poreenje pogleda pretraivaa problema (prozor Problem browser) i strukture modela (Model outline ) za isti problem.

Poreenje prozora pretraivaa problema (Problem browser) i prozora strukture modela (Model Outline)

Reavanje modela i otklanjanje greaka (debugging)

OPL okruenje oslanja se na CPLEX i CP Optimizer solvere (platforme) za reavanje problema. Ono prikazuje rezultate solvera u raznim izlaznim prozorima. Da bi se lake otklonile greke, okruenje dozvoljava da se ubace take prekida (breakpoints) koje pomau da se ispita stanje modela tokom razliitih faza reavanja i ispravljanja greaka.

Taster pokretanja (Run)

Namena tastera Run u tulbaru izvrenja zavisi od njegove prethodne namene istorije pokretanja run history.

Ukoliko nema modela kojim bi se moglo rukovoditi tj. pokrenuti njihovo izvrenje, klikom na taster Run prikazae se greka.

Ukoliko je pokretanje uspeno, ono se dodaje u listu koja je vidljiva klikom na strelicu sa desne strane Run tastera; na slici koja sledi prikazano je 6 modela koji se nalaze u istoriji pokretanja:

Kada je ova lista nije prazana, klikom na dugme Run pokree se poslednja pokrenuta konfiguracija pokretanja u listi, bez obzira na to koji je projekat izabran u navigatoru OPL projekata.

Podrazumevano (default) ponaanje tastera Run se moe promeniti (podesti).

Moe se primetiti da nije mogue jednim klikom na taster Run jednostavno selektovati i pokrenuti podrazumevanu konfiguraciju pokretanja projekta iz navigatora OPL projekata.

Pokretaki kontekst meniji

Kontekst meniji se mogu koristiti za pokretanje reavanja projekata direktno iz navigatora OPL projekata.

Koraci pri pokretanju projekta iz navigatora OPL projekata:

I nain:

1. kliknuti desnim tasterom mia na folder projekta, ili na bilo koji resurs u folderu projekta osim na pojedinanu konfiguraciju pokretanja. Pojavie se kotekst meni.

2. izabrati opciju Run, a zatim odabrati jednu od dve opcije:

odabir podrazumevane konfiguracije pokretanja (Default Run Configuration) - ova opcija pokrece konfiguraciju pokretanja koja je trenutno postavljena kao podrazumevana za trenutni projekat.

odabir jedne od konfiguracija pokretanja prikazanih u listi. Svaka od konfiguracija pokretanja moe biti odabrana za pokretanje, nezavisno od toga da li je postavljena kao podrazumevana ili ne.

II nain:

1. desni klik na konfiguraciju pokretanja koju korisnik eli da koristi za reavanje. Otvorie se kontekst meni.

2. u otvorenom kontekst meniju izabrati opciju Run This to e startovati izabranu konfiguraciju pokretanja.

Pronalazenje reenja

Na slici koja sledi prikazani su koraci u izvravanju modela.

Moe se primetiti da su nazivi kartica koje nisu otvarane podebljani.

Greke

Postoje etiri razloga zato solveri OPL-a ne mogu da pronau reenje modela:

sintaksne greke - na primer, korisnik zaboravi ' ; ' nakon instrukcije,

semantike greke - na primer, ime promenljive pogreno napisano, inicijalizovana vrednost se ne podudara sa deklaracijom,

greke pri pokretanju - na primer, spisak liste inicijalizacija je predugaak,

neizvodljivost - na primer, dva ogranienja su protivrena.

U sluaju sintakse ili semantike greke, prozor tekst editora istie izvornu liniju koda gde se greka nalazi, dinamiki pratei editovanje koda od strane korisnika.

Greke pri pokretanju se prijavljuju nakon pokretanja nekog modela. U kartici Problems izlaznog prozora, prikazani su detalji o nastalim grekama. Nakon ispravljanja greke, model se ponovo moe pokrenuti. U sluaju neizvodljivosti, kartica Conflicts identifikuje ogranienja koja su u konfliktu, dok kartica Relaxations predlae relaksaciju (poputanje) ogranienja kako bi se pronalo dopustivo reenje.

Otklanjanje greaka (Debugging)

OPL okruenje ima tri razliita pogleda za otklanjanje greaka:

pogled otklanjanja greaka (Debug view,)

pogled promenljive (Variable view), pogled take prekida (Breakpoint view).Kada model sadri glavne ili izvrne blokove skriptnog jezika, tada se mogu podesiti take prekida (breakpoints) unutar njih - levim dvoklikom u okviru leve margine sive povrine. Pojavljuje se plava taka koja ukazuje na lokaciju take prekida.

Kada se ubaci taka prekida u glavni ili izvri blok skripta, moe se koristiti komanda Debug koja se nalazi na izvrnom tulbaru kako bi se zaustavilo izvrenje kod navedene take prekida. Slike koje slede prikazuje funkcije i komande Debug view, Variable view i Breakpoint view tulbara

Komande Debug view tulbara

Komande Variable view tulbara

Komande Breakpoint view tulbara

4. Konstrukcije OPL jezika

Stuktura OPL modela

OPL je deklarativni jezik, koji kao takav ne zahteva pisanje procedura pri izgradnji modela. Umesto toga, jednostavno treba deklarisati podatke, upravljake promenljive, ciljeve i ogranienja, nakon ega e OPL putem odgovarajueg solvera reiti model.Azbuku OPL-a ine: slova engleskog alfabeta, cifre dekadnog brojnog sistema, specijalni znaci (=, , +, , *, /,\, ; ,: , (, ),{,}, itd.), izvedeni simboli (kljune rei, neki operatori) i negrafiki simboli (razmak, tabulacija, novi red). OPL spada u tzv. case-sensitive programske jezike, tj. pravi razliku izmeu velikih i malih slova.

U ovom delu e biti prikazano kako se piu OPL modeli korienjem sintkakse OPL-a, koja ukljuuje raspoloive strukture podataka i operatore.OPL model je obino strukturiran u sledeem redosledu: Izbor solvera, Deklaracija podataka, Upravljake promenljive, Funkcija cilja, Ogranienja.Izbor solvera

Sledea dva solvera su dostupna u OPL-u:

1. CPLEX za probleme matematikog programiranja (MP),2. CP Optimizer za probleme programiranja ogranienja (CP), posebno:

probleme rasporeivanja

odreene kombinatorne probleme koji nisu pogodni za matematiko programiranje.Podrazumevani solver koji se koristi u OPL-u je CPLEX. Za korienje solvera CP Optimizer, u modelu treba napisati sledei kod:

using CP;

Takoe, moe se eksplicitno naglasiti korienje CPLEX solvera navoenjem

using CPLEX;

Ukoliko se koriste kljune rei programiranja ogranienja u modelu, bez prethodnog navoenja CP solvera, OPL e prikazati sintaksne greke. Vrste upravljakih promenljivih i ogranienja zavise od izbora solvera; zato je veoma vano izabrati odgovarajui solver za reavanje konkretnog problema. Deklarisanje podatakaKada se vri deklarisanje podatka, neophodno je odrediti:

ime podataka, tip podatka:

celobrojni (OPL kljuna re int), realni (OPL kljuna re float), znakovni (OPL kljuna re string), strukturu podataka; podatak moe biti prost - skalar, ili sloen kao to je: opseg, skup, niz ili torka.

Primer jednostvne deklaracije podatka je:

float JedinicniProfit=;

gde je:

float kljuna re u OPL-u koja se koristi za deklarisanje realnih podataka ili upravljakih promenljivih; JedinicniProfit je u ovom sluaju ime podatka koji je po strukturi skalar. Strukture podataka kao to su skupovi, nizovi i torke se oznaavaju posebnom sintkasom, koja e biti u daljem detaljno razmatrana. Sve deklaracije podataka zavravaju se sa ...; osim ako su podaci inicijalizovani u istoj liniji.

Podaci mogu biti inicijalizovani u datotekama modela (datoteka .mod) ili podataka (datoteka .dat); isto tako, mogu biti uitani iz tabela i baza podataka. Podaci (najee rezultati) se mogu izvoziti iz OPL-a u Excel tabelu ili povezanu bazu podataka. Podatak se moe instancirati direktno kao ulazni podatak ili moe biti izraunat u datoteci modela. Izraunati podaci se ponekad odnose na promenljive ali se razlikuju od upravljakih promenljivih ili skriptnih promenljivih.Upravljake promenljive

Kada se vri deklarisanje upravljakih promenljivih, neophodno je odrediti:

ime promenljive, tip promenljive: celobrojni (OPL kljuna re int), realan (OPL kljuna re float, samo za MP), logiki (OPL kljuna re boolean), intervalni (OPL kljuna re interval, samo za CP), sekvencijalni (OPL kljuna re sequence, samo za CP), strukturu podatka; upravljaka promenljiva moe biti skalar, opseg, skup, niz ili torka, opcionalno moemo odrediti domen, koji predstavlja skup moguih vrednosti koju moe da uzme promenljiva.

Primer jednostavne deklaracije upravljake promenljive:

dvar float+ proizvodnja in 0..maxKapacitet;

Kljuna re dvar se korsti pri deklarisanju upravljakih promenljivih (decision variables), opciononi znak + je oznaka koja ukazuje da promenljiva moe uzeti samo nenegativne vrednosti, proizvodnja je naziv upravljake promenljive, dok 0..maxKapacitet definie domen promenljive koji ukljuuje vrednosti u opsegu od 0 do maksimalnog kapaciteta (maxKapacitet predstavalja ranije definisan podatak).Znak + omoguava krau notaciju: dvar float+ proizvodnja; je isto to i: dvar float proizvodnja in 0..infinity;Slino: dvar int+ x; je ekvivalentno sa:

dvar int x in o..maxint;gde maxint predstavlja kljunu re za najveu moguu vrednost podataka koji je tipa integer.

Deklaracija logike upravljake promenljive ima oblik:dvar boolean x; Ova deklaracija je ekvivalentna je sa:dvar int x in 0..1;

Izrazi odluivanjaZa pisanje sloenijih izraza na kompaktan nain koriste se izrazi upravljakih promenljivih. Primer jednostavnog izraza odluivanja:

dexpr float+ profit= proizvodnja * JedinicniProfit;

Kljuna re dexpr se koristi za deklarisanje izraza odluivanja, profit je ime ovog konkretnog izraza. Ovaj izraz definie profit koji je jednak proizvodu obima proizvoidnje i profitu po jedinici proizvoda. Koristei izraze odluivanja menjamo broj promenljivih i ogranienja u vreme izvravanja i moemo uticati na vreme pronalaenja reenja i zauzee memorijskog prostora.Funkcija cilja

Pri definisanju funkcije cilja, prvo treba odrediti da li je u pitanju problem minimizacije ili maksimizacije, kao i izraz koji treba da se optimizuje. Primer jednostavnog deklarisanja funkcije cilja:maximize profit;

Kljuna re maximize se koristi kod problema maksimizacije, dok se kod problema minimizacije koristi minimize. Profit je izraz odluivanja koji u ovom sluaju treba da se maksimizira. Izraz funkcije cilja moe biti veoma sloen, u zavisnosti od konkretnog problema. Alternativno, moe se izostaviti definisanje izraza odluivanja profit. Tada bi funkcija cilja bila zapisana na sledei nain:

Maximize proizvodnja*JedinicniProfit;

Ukoliko se OPL model koristi kao deo neke ODM aplikacije, propruuje se da se funkcija cilja sastoji od izraza odluivanja ili zbira izraza odluivanja, jer izrazi odluivanja u funkciji cilja u OPL-u odgovaraju ciljevima u ODM-u. Ciljna funkcija mora biti definisana pre skupa ogranienja, u suprotnom e biti prijavljenja greka. OgranienjaOgranienja u OPL-u se piu u bloku koji se otvara sa subject to { ili constraints { , a zatvara sa }. Primer jednostavnog bloka ogranienja je blok koji sadri jedno ogranienje:

Subject to {

proizvodnjaOgranicenje: proizvodnja