AnyLogic: Gamybininkas ir mažmenininkas rinkoje (tęsinys)

Įkelsime šalies paveiksliuką, kuris, analogiškai kaip ir gamyklos ar sandėlio piktogramos, vaizduos rinką. Tai yra rinkos aktyvus objektas turės šią su juo susietą piktogramą (reikia pažymėti, kat tai „Icon“ tipo paveikiukas), kurią bus galima įkelti į kitą aktyvų objektą.

Taip pat įkelsime kintamąjį „Collection variable“, pavadinę jį laukiantys_gaminio – jame bus kaupiama vatotojų, laukiančių gaminio, eilė.

r_8_4

Pridėsime du portus ir du elementus – šaltinio (Source) bei  pašalinimo (Sink) ir juos sujungsime. Per portą užsakymai_išeinantys bus siunčiami duomenys į kitus modelio objektą – užsakymai į mažmenininko modelį,  o per portą gaminiai_ateinantys – informacija apie į rinką išsiųstus gaminius. Gavus gaminį, laukiančių potencialių vartotojų eilė sumažinama vienetu: kodo eilutė if (! laukiantys_gaminio.isEmpty()) laukiantys_gaminio.removeFirst().receive(„Pasiimkite užsakymą“); reiškia:

jei kintamasis laukiantys_gaminio yra tuščias, nieko neįvyksta, jei jame yra laukiančių vartotojų, pirmasis eilėje yra pašalinamas ir jam išsiunčiama žinutė „Pasiimkite užsakymą“.

r_8_9

Kiek pakeisime vartotojo elgesio logiką: jeigu apsisprendus pirkti jis ilgiau nei per dvi savaites nesulaukia savo užsakymo, jis nutaria gaminio nebepirkti.  Įkelsime papildomą būseną Nori_įsigyti, kurioje pabuvęs ilgiau nei dvi savaites, vartotojas vėl grįš į potencialaus vartotojo būseną.

r_8_10

O perėjimas (Transition) Pirkti perkels asmenį iš būsenos Nori įsigyti į Vartotojo būseną, kurioje jis išbus visą gaminio tarnavimo laiką, o po to vėl virs potencialiu vartotoju.

Dar būseną Nori_įsigyti papildysime tokiomis eilutėmis:

r_8_12

Žmogaus paveiksliukas, vaizduojantis rinkos dalyvius, bus nuspalvintas geltona spalva, kai tik potencialus vartotojas atsidurs šioje būsenoje;

Šaltinio elementui Rinkos objekte bus sukurtas vienas užsakymas;

Kintamajam laukiantys_gaminio į eilę bus pridėtas šis vartotojas. „This“ reiškia šis – tai yra modelis pats atskirs, kuris vartotojas nori įsigyti gaminį, jis ir bus pridėtas į eilę. Jei modelyje yra keli tūkstančiai ar net milijonai agentų, kiekvienam iš jų „sukasi“ tokia būsenų diagrama.

O laukę dvi savaites, bet taip ir nesulaukę savo užsakymo yra pašalinami iš eilės.

r_8_13

Kiek pakeisime mažmenininko modelį, kad jis gautų potencialių vartotojų, norinčių įsigyti skalbimo mašiną, užsakymus, ir juos įvykdytų – išsiųstų iš sandėlio.

Du portus – „užsakymai_ateinantys“ ir „gaminiai_išeinantys“ įkelsime į sandėlio piktogramą, ir pirmąjį sujungsime su elementu Match, pavadintu  „suderinti_su_užsakymu“ (jį įdedame vietoj elemento „saugojimas“). Jis suderins du srautus – gaminių ir užsakymų : gaminys bus išsiunčiamas tik tada, kai yra užsakymas, po to užsakymas panaikinamas elemente „pašalinimas“.

r_8_141

Portą „gaminiai_išeinantys“ sujungsime su elementu „gaminys_palieka_saugyklą“.

Į bendrą modelį įkelsime rinkos aktyvų objektą, lange atsiras jo piktograma –  šalies paveiksliukas, ir sujungsime mažmenininko ir rinkos portus: dabar užsakymai ateis mažmenininkui, o gaminiai – iš mažmenininko į rinką. Visos trys dalys taps susietos ir veiks kartu.

r_8_15

Dabar galime paleisti šį kompiuterinį modelį. Jo veikimo greitį reikia padidinti (iki x128-512), nes jame vykstantys procesai yra gana lėti, valandų eilės gamybininko ir mažmenininko dalyse, o rinkoje – dienų ir savaičių eilės.

modelisŠį modelį galima interaktyviai valdyti, pavyzdžiui, nuėjus į gamybinio cecho modelį, sustabdyti gamybą (parinkus konvejerio greitį lygų 0) ir po to rinkos modelyje pažiūrėti, kokie vyksta pokyčiai – mažmenininkui išpardavus atsargas, vis daugiau vartotojų bus laukimo būsenoje (jie bus nuspalvinti geltona spalva), o po nustatyto laukimo laiko vėl grįš į potencialaus vartotojo būseną.

rinka8

Nors modelis tapo gana sudėtingu, tačiau jis yra sudarytas iš trijų pagrindinių vieno hierarchinio lygmens loginių dalių – gamybininko, mažmenininko ir rinkos, kurias atskirai galima valdyti ar keisti jų veikimo logiką, pridėti papildomus elementus, parametrų valdiklius, keisti jų tarpusavio sąsajas ir kt.