AnyLogic: Mažmenininko modelis (tęsinys)

Dabar sumodeliuosime sandėlio atsargų papildymo procesą: nustatysime du atsargų lygius – apatinį, pavadinsime jį kintamuoju a,  ir viršutinį, A.

Kai tik gaminių kiekis taps mažesnis nei a (kiekis – tai gaminiai, esantys mažmenininko  saugykloje bei jau užsakyti ir esantys kelyje), bus sukuriamas skalbimo mašinų užsakymas, kuris papildys jų kiekį sandėlyje iki A.

m_3_11

Kintamojo „atsargos“ bei parametrų a ir A tipai nustatyti integer – sveikieji skaičiai, minimalus atsargų lygis – 20 vienetų, maksimalus – 60 vienetų, lygus saugyklos talpai.

Pasikeitus a ar A reikšmėms, bus įvykdoma funkcija „patikrinti_atsargas()“, kurią mes tuoj pat ir  įvesime.

Tam sukursime tokią diagramą: į modelį įkelsime būsenų diagramos objektą „Action Chart“ ir jį pavadinsime „patikrinti_atsargas“,

m_3_2

o ant jo uždėję sprendimo (Decision) objektą, įrašysime paaiškinantį komentarą bei sąlygą, kuriai esant teisingai, bus vykdoma veiksmų seka, nurodyta „true“ šakoje.

m_3_3

Sprendimo objektas yra vienas iš paprasčiausių būdų kurti algoritmo išsišakojimus – jis turi  du išėjimus: taip ir ne (true , false), į kuriuos pereina programa, priklausomai nuo jame užduotos sąlygos – jei ji įvykdyta (teisinga), bus vykdoma „true“ šakos algoritmas, jei neįvykdyta – „false“ šakos.

Papildysime šią diagramą dar dviem objektais – vietiniu kintamuoju „Local variable“, jį pavadinkime „užsak_kiekis“, tai yra gaminių kiekis, kurį reikia užsakyti, bei kodu „Code“. Kintamasis apskaičiuos, kiek skalbimo mašinų reikia užsakyti, jei tik atsargų kiekis sumažėjo žemiau nustatytos ribos: jo reikšmė lygi „A – atsargos“. Vadinai, įvykdžius šį užsakymą, mažmenininko atsargų kiekis bus padidintas iki 60.

Kodo objekte įrašysime programinį kodą, kuris turi būti įvykdytas: šaltinio elementas (pats pirmasis srauto diagramoje) sugeneruos  kintamojo „užsak_kiekis“ apskaičiuotą gaminių kiekį, ir tuo pačiu kiekiu bus padidintas kintamais  „atsargos“.  Užrašas  „atsargos += užsak_kiekis“ yra analogiškas  kodui  „atsargos = atsargos + užsak_kiekis“, tai yra naujas atsargų kiekis yra lygus senam atsargų kiekiui, plius užsakytam kiekiui.

m_3_4

Kad kompiuterinis modelis įvykdytų atsargų patikrinimo diagramą jau pačioje veikimo pradžioje, mažmenininko modelio pradiniame kode įrašysime kreipimąsį į šią funkciją.

m_3_5

Kad gaminiai – skalbimo mašinos – būtų šaltinio objekto kuriamos ne automatiškai, kaip iki šiol, o tik kuomet yra gautas užsakymas, pakeisime jo nustatymą „Arivals defined by“ į valdomą užsakymų diagramos (Manual (call inject() method) – funkcija „patikrinti_atsargas“ sukurs gaminių kiekį „užsak_kiekis“ , o veiksmai, skalbimo mašinai paliekant saugyklą, būtų tokie: atsargų kiekis sumažėja vienetu  („atsargos–“  yra analogiškas kodui „atsargos = atsargos – 1“) bei įvykdoma atsargų patikrinimo funkcija.

m_3_6