2003, VGTU, Lauras Čeponis, doktorantas
Dokumente aprašoma Flow-Shop optimizavimo uždavinio realizacija. Tai optimizavimo teorijos ir praktikos kurso praktinis darbas. Darbą atliko ir dokumentą paruošė Lauras Čeponis, VGTU doktorantas. Darbą priėmė prof. Jonas Mockus.
Flow-Shop priklauso tvarkarasčio optimizavino uždavinių klasei. Šiame uždavinyje reikia parinkti tokią vienodos sekos, tačiau skirtingos trukmės darbų eilės tvarką, kad bendras atlikimo laikas būtų trumpiausias. Uždavinį gerai iliustruoja siuvykla: vienoda užduočių seka yra dažymas, kirpimas, siuvimas lyginimas. Kadangi siuvami skirtingi drabužiai, tai darbų sekos yra skirtingos trukmės, todėl svarbu gerai išdėstyti darbus. Pavyzdžiui pradedame darbą nuo palto, nes jam reikia daugiausia darbo, o smulkesnius drabužius po jo.
Optimizavimo metu atliekama daug iteracijų, kurių metu ieškomas vis geresnis rezultatas. Flow-Shop uždavinyje vienos iteracijos metu optimizuojama gali būti dviem būdais:
Jei aprašytuose būduose griežtai laikomasi taisyklių, tai heuristikos vadinamos grynomis (angl. greedy). Jei taisyklė taikoma su tam tikra tikimybe, tai heuristikos vadinamos išsibarčiusiomis (angl. randomized). Pastaruoju atveju sprendimai daromi su tam tikra teisingumo tikimybe ri
Darbe yra naudojamas antrasis optimizavimo būdas, kai darbai pradedami dėti į tuščią seką, kol sekoje dalyvauja visi darbai.
Uždavinyje yra du svarbūs parametrai: Darbų skaičius ir Mašinų skaičius. Kiekvienam darbui atlikti reikia vienodos mašinų sekos. Tačiau mašinos atliekamas etapas gali skirtis įvairiuose darbuose. Šiame uždavinyje tikslo funkcija yra visų darbų pabaiga - reikia kuo greičiau atlikti visus darbus.
Kiekvienos iteracijos metu yra užpildoma visa darbų seka. Tai atliekama per tiek žingsnių, kiek yra darbų. Kiekvieno žingsnio metu yra suskaičiuojamos tų darbų heuristikos, kurios dar sekoje nepanaudotos. Šios heuristikos yra panaudojamos apskaičiuojant kiekvieno darbo panaudojimo tikimybę ri. Tuoment yra generuojamas atsitiktinis skaičius nuo 0.0 iki SUM(ri). Sekantis darbas yra parenkamas pagal tai, į kurios tikimybės reikšmių intervalą patenko tas atsitiktinis skaičius.
Apskaičiuojant darbų heuristikas ir panaudojimo tikimybes naudojamos ta formulės, kurios buvo pasirinktos darbų parametruose.
Kievienos iteracijos metu tikslo funkcijos reikšmė nėra įsimenama - kievienoje iteracijoje gautas tvarkaraštis yra palyginamas su geriausiu iki tol. Jei rezultatas geresnis, jis tampa geriausiu.
Pirmiausia reikia įsitikinti, kad kataloge yra tinkama failų išdėstymo struktūra. Pasirinktame kataloge turi būti pradinių kodų failai ( *.java ), paleidžiamasis failas FlowShop.htm ir kompiliavimo failas ( compile.bat arba compile.sh ). Tai pat tame kataloge turi būti katalogas FlowShop, o jame sukompiliuoti programos moduliai ( *.class ). Jei modulių nėra, juos reikia sukompiliuoti. Plačiau apie tai skaitykite Kompiliavimo instrukcijoje.
Programa paleidžiama kaip interneto naršyklės apletas. Tam reikia akyvuoti HTML failą FlowShop.htm arba iškviesti JAVA apletų aktyvavimo priemonę appletviewer FlowShop.htm.
Kompiliavimą atlieka komandiniai failai compile.bat (Windows OS) ir compile.sh (Unix OS). Juose abejuose reikia pakeisti kelia iki katalogo, kuriame guli pradiniai kodai (kintamasis WORKING_DIR) ir (jei reikia) nurodyti kelia iki kompiliatoriaus javac (kintamasis COMPILER).
Programa intuityviai nurodo atlikti keturis paruošiamuosius žingsnius:
Atlikus paruošiamuosius darbus spaudžiame mygtuką Calculate. Jei jis neaktyvus, tai reiškia, kad duomenys nuskaityti nesėkmingai.
Kai suskaičiuojami rezultatai, juos galima peržiurėti paspaudus mygtuka View Results. Analizes lango apačioje reikia pasirinkti bandymą ir bus pademonstruotas jo rezultatas. Galima padaryti iki 10 bandymų ir juos tada peržiurinėti analizės lange. Tokiu būdu programa leidžia ekspertui parinkti geriausius tikimybinės funkcijos r(hi) parametrus x[1], x[2], x[3].
Sukurta birželio 04, 2003