Kon-15.4199 Konepajojen tuotannonohjaus: ILOG CPLEX Studion käyttö 22.1.2016
Harjoituksessa 1. Varmistetaan että kaikilla on pari! Ilmoittautukaa oodissa etukäteen! 2. Tutustutaan ensimmäiseen tehtävään 3. Luodaan Ilog CPLEX Studio ohjelmalla OPL-projekti ja haetaan Aikataulutus-harjoituksen mod ja dat tiedostot siihen. 4. Tutkitaan mod ja dat tiedostojen rakennetta. Laitetaan puolen tunnin (1800s) laskentarajoite ops-tiedostoon 5. Ajetaan alkuperäinen malli, tutkitaan ohjelman tulosteita 6. Lisätään excel-luku ja kirjoitus. Luetaan harjoitustyön tiimikohtaiset datat. 7. Muokataan alkuperäistä mallia siten, että se toimii FIFOperiaatteella 8. Prosessointiajat ja eräpäivät kopioidaan edelleen exceliin ja esitellään miten Gantt-kaavion piirto toimii. (DEMO)
Harjoituksen tehtävä 4:n Koneen tuotantolinja, jossa työt voivat ohittaa toisensa. 10 tilausta, joilla eräpäivät Tehtävässä aikataulutetaan tilaukset siten, että töiden myöhästymiä minimoidaan Tehtävänanto mycoursesista
Projektin luominen 1. Käynnistä ILOG CPLEX studio ohjelma all programs, IBM ILOG, Cplex optimization studio CPLEX studio IDE 1. Luo uusi projekti: File New OPL Project ja valitse 1. Projektin nimi ja polku ( Aikataulutus ) 2. Luo samalla Configuration,Model, Data, Settings osiot projektiin rastittamalla ne
Mod tiedosto MOD-tiedosto sisältää optimointimallin. Sen rakenne on seuraava: 1. Parametrit: Parametrien tyypit: boolean(binaariluku 0/1), int(kokonaisluku), Float - (desimaaliluku). Dvar tyypin edessä kertoo että muuttuja on päätösmuuttuja. Jos tätä ei ole on kyseessä parametri, jonka arvo pitää asettaa ohjelmalle (esim. int A=1;). arvon kohdalla kertoo, että parametrin arvo haetaan datatiedostosta (Esim. int A= ;). Dvar muuttujien tyypin eteen voi lisätä +:n, joka rajoittaa muuttujan einegatiiviseksi. Parametrit ja muuttujat voi määritellä taulukoiksi lisäämällä nimen jälkeen [1..Taulukonkoko]. Taulukot voivat olla moniulotteisia, esim. kaksiulotteinen X*Y kokonainen taulukko A määritellään lauseella A[1..Y][1..X]. Yksittäiseen taulukon alkioon (x,y) voi määrittelyn jälkeen viitata komennolla A[x][y].
Mod tiedosto(2) 2. Tavoitefunktio: minimointi Minimize [Lauseke] tai maksimointi maximize [Lauseke] 3. Rajoitukset: Alkavat subject to { kohdan jälkeen, loppuvat viimeisen } merkin jälkeen Forall(i in 1 I) lausekkeella voi luoda samalla kertaa useampia rajoituksia käymällä esim. muuttujan kaikki arvot lävitse. <=, >=, == komennoilla asetetaan suurempi-kuin, pienempi-kuin ja yhtäsuuruus rajoitteita Lausekkeissa voi käyttää mm. seuraavanlaisia käskyjä +, -, * max(i in 1 I) A[i] min(i in 1 I) A[i] sum(i in 1..I) A[i] ; Lopettaa rivin // komennolla voi kommentoida rivin pois käytöstä
Dat tiedosto Dat-tiedosto sisältää datat mod-tiedostossa oleviin parametreihin Jos mod-tiedostossa on esimerkiksi parametri Int A[1 4]= ; Niin dat-tiedostossa pitää olla vastaavasti sen arvot A=[2,1,3,5]; Tiedostoon voi luoda luku ja kirjoitustoiminnot exceliin. Yhteys exceliin esimerkki.xlsx luodaan komennolla: SheetConnection sheet("esimerkki.xlsx");. Excelin täytyy tällöin olla projektin hakemistossa Luku: A from SheetRead(sheet, A1:A4 ) ; Kirjoitus: A to SheetWrite(sheet, C1:D5 ); Ohjelma osaa automaattisesti tunnistaa taulukon asennon jos taulukon sarakkeiden ja rivien määrä ei ole sama. Excel-tiedosto ei voi olla auki samaan aikaan kun ohjelma kirjoittaa tuloksia siihen.
Ilog CPLEX-ympäristö Optimointimallin saa käynnistettyä OPLprojects kohdasta hiiren oikealla napilla ja valitsemalla Run default Run Configuration Mahdolliset virheet tulevat tämän jälkeen näkyviin problem kohtaan Jos ratkaisin käynnistyy, näkyy statistics ruudussa tietoja laskennan edistymisestä. Ratkaisut tulevät näkyviin Solutions - kohtaan.
Mitä CPLEX tekee kun se ratkaisee mallin? CPLEX etsii ja antaa tulokseksi ratkaisun, joka on optimaalinen eli paras mahdollinen tavoitefunktion näkökulmasta siten että rajoitteet ovat voimassa. CPLEX käyttää ratkaisemiseen mm. seuraavia menetelmiä: Normaalit lineaariset mallit ratkaistaan Simplex- tai sisäpistemenetelmällä(engl. inner point method ) Kokonaislukurajoituksiin käytetään branch-and-bound idealla toimivia ratkaisua. Varsinainen ratkaisin on kaupallisen CPLEX-ohjelman ydin ja sen vuoksia kaikkia ohjelman käyttämiä menetelmiä ei ole kerrottu julkisuuteen. Sisäisesti CPLEX varmistaa myös, että ratkaisu on varmasti optimaalinen. Jos laskenta kestää kauan, todistukseen liittyvät arvot näkyvät statistics ruudussa. Esim. minimoitaessa arvot ovat seuraavat: Yläraja (Upper bound): kuvaa sitä löytynyttä ratkaisua, jolla on pienin tavoitefunktion arvo Alaraja(Lower bound): kuvaa sitä tavoitefunktion arvoa, jota pienempia ratkaisuja ei ole olemassa. Kun nämä rajat kohtaavat, on optimaalinen tulos löytynyt Yllä mainitut asiat eivät kuulu varsinaisesti kurssiin sisältöön. Niistä löytyy kuitenkin paljon materiaalia kirjallisuudesta ja internetistä.
Gantt-kaavio Excel gantt-kaavioiden luomiseen löytyy mycoursesista (harjoitustyöt->muu materiaali)
Lisäohjeita Löytyy mycourses:n Muu materiaali - kohdasta