Gamybinio cecho modelis

Sukursime nedidelį praktinį kompiuterinį modelį – gamybinį cechą, kuriame iš kelių komplektuojančių dalių yra surenkamas gaminys, pavyzdžiui, skalbimo mašina.

Šį modelį paleisti ir eksperimentuoti galite paspaudę paveikslėlį žemiau.
r_7_11modelis

Nors šis kompiuterinis modelis atrodo gana sudėtingas, jį sukurti nėra taip sunku, kaip gali pasirodyti iš pirmo žvilgsnio.


Kompiuterinio modeliavimo programoje „AnyLogic“ pasinaudosime joje esančia įmonių elementų biblioteka (Enterprise Library), iš kurios galime pasirinkti reikiamus elementus – pavyzdžiui, konvejerį, objektų šaltinį, išsišakojimo ir sujungimo elementus, ir, juos įkeldami į modelį bei sujungdami reikiama tvarka, sukurti gamybinio cecho modelį.

Kiek vėliau mes jį gerokai patobulinsime, šį modelį sujungdami su mažmenininko, pardavinėjančio šios gamyklos gaminius bei rinkos, kurioje veikia gamintojas ir mažmenininkas, modeliais.

Taigi, pasirenkame, kad kursime naują modelį, pavadintą Rinkos_modelis.
Į modelio langą įkelkime elementą „Šaltinis“ (Source), jis generuos vieną iš gaminio dalių – skalbimo mašinos korpusus. Pavadinkime  jį korpusų šaltiniu.

r_1_1

Po to įkelkime eilės elementą (Quene). Jis naudojamas surikiuoti korpusus į eilę prieš tai, kai jie bus perkelti ant konvejerio.  Kiti reikiami elementai – konvejeris (Conveyor), modelyje jis vaizduos konvejerį, transportuojantį korpusus, bei objektų pašalinimo elementą Sink. Jis paprastai yra paskutinis srauto diagramos elementas, ir reiškia, kad jo valdomas objektas užbaigė save egzistenciją modelyje – pavyzdžiui, produktas buvo nupirktas, gaminys paliko sandėlį ir pan.

r_1_2

Šių elementų įėjimo ir išėjimo portus nuosekliai sujunkime: tuomet korpusai, sukurti jų šaltinio, pirma pateks į eilę, po to į konvejerį, ir galiausiai bus pašalinti.

Portai sujungiami dukart pele paspaudus vieno elemento portą ir po to pele vieną kartą paspaudus kito elemento portą.

r_1_3

Dabar jau galima modelį paleisti ir pažiūrėti jo veikimą.modelis

r_1_41

Dabar pridėsime grafikos ir animacijos elementus, vaizdžiai iliustruojančius cecho išplanavimą ir objektų judėjimą jame.

Į kompiuterinį modelį įkelsime paveikslėlį (iš Prezentacijos elementų bibliotekos) bei parinksime cecho plano paveikslėlį  – tai gali būti, pavyzdžiui, iš AutoCad eksportuotas vaizdas, nuskanuotas planas, ar tiesiog grafiniu redaktoriumi nupiešta schema.

r_2_1

Šioje schemoje reikia nurodyti, kur kokie skalbimo mašinos komponentai turi būti vaizduojami ir kaip jie turi judėti: tam stačiakampiais reikia pažymėti ir atitinkamai pavadinti zonas, o linijomis ar polilinijomis – trasas, kuriomis jie turi judėti.

Įkelkime į modelio korpusų sandėlio zoną stačiakampį ir pavadinkime jį korpusų sandėliu.

r_2_2

Nubrėžkime poliliniją – ji turi eiti pagal konvejerį, ir korpusai modelyje judės šia linija.

r_2_3

Pasirinkę elementą Korpusų eilė, nurodykime, kad jo talpa – maksimali galima (ją galima keisti elemento parametrų skirtuke), o sugeneruoti korpusai turi būti vaizduojami ką tik įvestame stačiakampyje – korpusų sandėlyje, ir išdėstomi atsitiktine tvarka nurodytame stačiakampyje (animacijos tipas – Bag).

r_2_4

Elementui Korpusų konvejeris nustatykime, kad korpusai turi judėti polilinija, pavadinta konvejeris.

Paspaudus Ctrl+Tarpas, reikiamą elementą galima pasirinkti ir iš atsivėrusio kompiuterinio modelio elementų sąrašo, nebūtina jo prisiminti ir įvesti klaviatūra.

r_2_51

Dabar, paspaudus paveikslėlį žemiau, vėl galima paleisti modelį, ir pažiūrėti, kaip jis veikia ir kas pasikeitė. Modelis atsidarys kitame naršyklės lange (ar, priklausomai nuo naršyklės nustatymų, kitame naršyklės skirtuke).

Korpusai ims atsirasti sandėlio zonoje, po to pereis į konvejerį ir ims juo judėti. modelis

r_2_6


Gamybinio cecho modelis (tęsinys)

Dabar modeliui pridėsime dar kelis elementus: durelių šaltinį, dureles nukreipsime į surinkimo liniją, kur jos bus sumontuojamos į korpusus, taip pat pakeisime modelio elementų parametrus: konvejerio ilgį, greitį, atstumą tarp juo transportuojamų dalių ir kt.

Į modelį įkėlę ovalą, pavadinkime jį korpusai surinkimui – jis žymės zoną, kur nuo konvejerio paklius korpusai, prieš patekdami į surinkimo liniją. Taip pat jo dinaminėse savybėse nurodykime, kad šis objektas modelio veikimo metu bus nematomas.

r_3_1

Kaip ir korpusų sandėlio atveju, stačiakampiu pažymėkime ir zoną – durelių sandėlį, kurioje  bus kaupiamos skalbimo mašinos durelių atsargos.

r_3_2

Įkėlę į modelį dar du ovalus, jais pažymėkime atitinkamai zonas, kur prieš surinkimą bus talpinamos durelės bei jau surinka skalbimo mašina.

r_3_3

Pridėkime kintamąjį, kuris nurodys, kokio dydžio  (pikseliais) modelyje bus vaizduojami objektai. Pavadinkime jį metru, ir nustatykime pradinę reikšmę, lygią 10: dešimt  pikselių modelyje atitiks 1 metrą. Nepažymėjus „Show at run time“, modelio veikimo metu šis kintamasis nebus rodomas, kadangi jis yra tik pagalbinis.

r_3_4

Kol kas modelyje korpusai rodomi kaip nedideli skrituliukai. Norint atskirti gaminio skirtingus elementus, galima nurodyti, kokios jie turėtų būti formos. Tą dabar ir padarysime: nurodysime, kokios formos turėtų būti korpusas, durelės, ir kaip turėtų atrodyti jau surinktas gaminys.

r_3_5

Geltoną stačiakampį pavadinkime korpusu, raudoną ovalą – durelėmis, o šiuos du objektus kartu – gaminiu.

Surinktą iš korpuso ir durelių skalbimo mašimą – gaminį -reikia sujungti į grupę. Tai padaroma taip: išrinkus šiuos du objektus, reikia paspausti dešiniu pelės mygtuku ir pasirinkti „Sukurti grupę“, o jai suteikti pavadinimą – gaminys.

r_3_6

Korpuso šaltinio parametrus pakeiskime, nurodydami, kad animacijai turi būti naudojamas ką tik įvestas elementas – geltonas stačiakampis, pavadintas korpusu, ir kad modelio veikimo metu jis gali būti sukamas.

Konvejerio parametruose nurodykime, kad jo ilgis lygus polilinijos ilgiui, atstumas tarp transportuojamų komponentų 2 * metras (metras – modelyje esantis kintamasis), greitis – 0.1 metrų per sekundę.

Pastaba: second(), minute(), hour(), day(), week() yra standartiniai modeliavimo aplinkos kintamieji.

r_3_72

Dar modelyje trūksta elementų, kuriančių dureles bei sandėliuojančių jas nurodytoje vietoje – durelių sandėlyje.

Į modelį įkelsime dar vieną šaltinį (Source), pavadinkime jį durelių šaltiniu, ir nurodykime, kad jo sukurti objektai bus vaizduojami kaip raudoni rutuliukai – objektai, modelyje pavadinti durelėmis.

r_3_8

O eilės (Quene) objektas (pavadinkime jį durelių eilė) dės dureles į zoną, pavadintą durelių sandėliu.

r_3_9

Dabar įkelsime dar vieną elementą iš Įmonių bibliotekos – surinkėją (asembleris, Assembler). Jo paskirtis – sujungti objektus, kurie ateina į jo įėjimo portus. Kiekvienas objektas šiame elemente laukia, kol kitus portus pasieks nustatytas kitų reikiamų objektų kiekis, ir tik tuomet jo išėjime atsiranda naujas objektas.

Pavadinkime jį gaminio surinkimu, jo pirmą ir antrą įėjimo portus sujunkime su korpusų eilės ir durelių eilės išėjimo portais, išėjimo – su pašalinimu (Sink), ir nustatykime tokius parametrus:

Quantity1: 1; Quantity2: 1. Surinkėjas lauks, kol jo portuose bus po vieną korpusą ir dureles, tik tada jos bus surenkamos į vieną gaminį. Jei, pavyzdžiui, korpuso nebus, surinkimas sustos ir bus laukiama, kol jis bus pristatytas konvejeriu, ir tik tuomet surenkamas gaminys.

New entity animation shape: gaminys. Surinkus gaminį, surinkimo zonoje jis atsiras kaip bendras objektas – surinktas korpusas ir durelės gaminys.

Delay time: minute(). Surinkimo procesas trunka vieną minutę.

r_3_10

Kiti parametrai, kuriuos reikia nustatyti:

r_3_11

Jie nurodo, kad korpusai prieš surinkimą talpinami zonoje korpusai_surinkimui, durelės  –  zonoje durelės_surinkimui, o surinktas gaminys – zonoje surinkimas.

Dabar vėl galima paleisti ir pažiūrėti modelį. Skaičius prie surinkėjo (asemblerio) išėjimo porto nurodo, kiek iš viso skalbimo mašinų  buvo surinkta. modelis

r_3_12


 

Gamybinio cecho modelis (tęsinys)

Dar šiek tiek patobulinsime šį modelį – sukursime pakavimo zoną, kur gaminiai bus pristatomi konvejeriu ir sudedami į dėžes.
Tam sukursime dar kelias zonas: darbuotojų, konvejerio pabaigos, pakavimo, pakrovimo, bei poliliniją (pavadintą konvejeris1), kuria konvejeriu judės skalbimo mašinos.

r_4_1

Į modelį įkelkime paveikslėlį – dėžę:

r_4_2

Bei dar vieną konvejerį, įvedant atstumą  tarp transportuojamų objektų 1.2 * metras, greitį – 0,1 m/s, ir objektai turi būti perkeliami pagal poliliniją, pavadintą konvejeris1.

r_4_3

Dabar skalbimo mašinos konvejeriu judės į pakavimo zoną.modelis

r_4_4


 

Gamybinio cecho modelis (tęsinys)

Įterpsime dar vieną modelio elementą iš bibliotekos: servisą (Service). Jo paskirtis – sukaupti nurodytą objektų kiekį ir po vėlavimo  (arba užlaikymo, tai imituoja  gaminių surinkimo proceso trukmę) juos paleisti į sekantį modelio elementą.

r_5_1

Sekantis elementas – grupavimas (batch) – atliks grupavimą: tai skalbimo mašinų supakavimo į dėžes operacija.

r_5_2

Dabar vėl galima paleisti modelį ir pažiūrėti, kaip jis  veikia.modelis

r_5_3


Gamybinio cecho modelis (tęsinys)

Gaminių sukaupimo ir supakavimo operacijoms reikia resursų – roboto surinkimui bei dviejų žmonių pakavimui. Juos ir sukursime modelyje, taip pat kaupsime darbuotojų užimtumo statistinę informaciją. Robotas taip pat ne visą laiką gali dirbti – jam reikia serviso, taip pat jis gali ir sugesti. Šias sąlygas irgi sukursime kompiuteriniame gamybinio cecho modelyje.

Į modelį įkelkime du žmogus paveiksliukus, vienam  parinkime raudoną spalvą, ir pavadinkime dirbančiu darbuotoju, kitam – juodą, ir pavadinkime laisvu darbuotoju.

r_6_1

Įveskime du resursų elementus (ResourcePool), vieną, pavadinę robotas, paskirkime surinkimo linijai, kitą, pavadinę darbuotojas – pakavimo linijai. Surinkimo ir pakavimo linijų parametruose taip pat reikia nurodyti, kad joms reikalingas resursų kiekis yra lygus vienetui (gali veikti, kai yra vienas veikiantis surinkimo robotas ir bent vienas darbuotojas).

r_6_21

Dar į modelį įkelsime grafiką, kuris rodys darbuotojų vidutinį užimtumą.

r_6_3

tatistinė užimtumo informacija yra kaupiama ir apskaičiuojama automatiškai, rezultatui gauti tereikia parinkti standartinę modeliavimo aplinkos funkciją – pavyzdžiui, užimtumo vidurkiui – .statsUtilization.mean(), jos pradžioje nurodant objekto pavadinimą.

Roboto būsenų diagrama valdys surinkimo robotą: jeigu jis bus sugedęs, gaminiai nebus surenkami ir nebus perduodami į konvejerį, transportuojantį surinktas skalbimo mašinas į pakavimo zoną.

r_6_4

Taigi, gamybinio cecho kompiuterinis modelis sukurtas. Jį paleisti galite paspaudę žemiau esantį paveikslėlį:modelis

r_6_5


Gamybinio cecho modelis (tęsinys)

Dabar jį galima nesunkiai išplėsti, pavyzdžiui, įkeliant dar vieną ar kelis konvejerius, transportuojančius sudedamąsias dalis į surinkimo cechą, pakeičiant išplanavimą, keičiant resursų – darbuotojų ar robotų skaičių, komplektuojančių komponentų pateikimo greitį ir t.t. bei analizuoti tokio cecho darbo efektyvumą, statistinius rodiklius.

Dar sukursime tokius modelio valdymo interaktyvius elementus: korpusų transportavimo konvejerio greičio keitimo slankiklį bei galimybę rankiniu būdu įjungti robotą, jei jis sugedo (dabar modelyje nustatyta, kad jis sustoja vidutiniškai kas 30 minučių, o aptarnavimo laikas trunka vidutiniškai 15 minučių) – tai galima padaryti, paspaudus mygtuką „Paleisti surinkimo robotą“, bei dar vieną grafiką, rodantį roboto vidutinį statistinį užimtumą.

Greičio valdymą galima sukurti, įkėlus vieną parametrą ir susiejus su juo slankiklį:

r_7_2

ir konvejerio nustatymuose nurodžius, kad jo greitis lygus šiam parametrui.

r_7_3

Rankinį roboto būsenos iš sugedusio į veikiantį perjungimą galima sukurti taip: įkėlus mygtuką, nustatyti, kad jis būtų aktyvus tik kai robotas neveikia, o jo paspaudimas vėl nustato roboto talpą, lygią 1 – t.y. jis ima veikti.

r_7_4

Ir tuomet įvyksta perėjimas, gražinantis robotą į pirmąją būseną:

r_7_5

Paleisti šį cecho modelį bei jį interaktyviai valdyti galite, paspaudę žemiau esantį paveikslėlį. modelis

r_7_11