include 'basic.h'; include 'utils.h'; include 'stat.h'; export type stockentry := [prodid: str, amt: num, id: num]; export type stockdb := $stockentry; export type avs := $[prodid: str, avg: real]; export mydb := {[prodid:'bike',amt:1000],[prodid:'moto',amt:100], [prodid:'tv',amt:3000],[prodid:'radio',amt:300]} : stockdb; export query[ s : str, db : stockdb ] := if $[t:db|t@prodid=s]={} then 0 else pick($[t:db|t@prodid=s])@amt fi : num; export query2[ n : num, st : stockdb ] := $[t:st|t@amt>,1:<<36,9> --GIC>,2:<<11,9>>],TOid:207],[ID:94,LSYMBOLS:{[],[]},PATH:[0:<<36,22>>,1:<<36,31 --GIC>>,2:<<22,31>>],TOid:128],[ID:134,LSYMBOLS:{[],[]},PATH:[0:<<35,20>>,1:<<8, --GIC20>>,2:<<8,48>>],TOid:210]},KIND:1] [ID:20,XPERC:38,YPERC:125,NAME:[ID:64,N --GICAME:'shop_in'],PARENT:{19},KIND:-2] channel shop_out : stockentry, --GI [ID:22,X:36,Y:46,LINES:{[ID:79,LSYMBOLS:{[],[]},PATH:[0:<<40,47>>,1:<<52,47 --GIC>>,2:<<52,41>>],TOid:84]},KIND:1] [ID:23,XPERC:38,YPERC:125,NAME:[ID:65,NAM --GICE:'shop_out'],PARENT:{22},KIND:-2] Supplier( in dist_out, out dist_in ), --GI [ID:48,X:82,Y:33,LINES:{[ID:85,LSYMBOLS:{[],[]},PATH:[0:<<83,33>>,1:<<83,11 --GIC>>,2:<<74,11>>],TOid:68]},KIND:0] [ID:49,XPERC:44,YPERC:125,NAME:[ID:66,NAM --GICE:'Supplier'],PARENT:{48},KIND:-2] Main_Distr_center:Distr_center( in shop_out, dist_in, out shop_in, dist_out ), --GI [ID:84,X:51,Y:33,LINES:{[ID:88,LSYMBOLS:{[],[]},PATH:[0:<<52,33>>,1:<<52,21 --GIC>>,2:<<39,21>>],TOid:19],[ID:92,LSYMBOLS:{[],[]},PATH:[0:<<58,41>>,1:<<58,5 --GIC1>>,2:<<71,51>>],TOid:71]},KIND:0] [ID:141,XPERC:50,YPERC:125,NAME:[ID:67,N --GICAME:'Main_Distr_center'],PARENT:{84},KIND:-2] channel dist_in : stockentry, --GI [ID:68,X:70,Y:8,LINES:{[ID:83,LSYMBOLS:{[],[]},PATH:[0:<<71,12>>,1:<<71,34> --GIC>,2:<<59,34>>],TOid:84]},KIND:1] [ID:69,XPERC:50,YPERC:125,NAME:[ID:70,NAME --GIC:'dist_in'],PARENT:{68},KIND:-2] channel dist_out : stockentry, --GI [ID:71,X:71,Y:50,LINES:{[ID:77,LSYMBOLS:{[],[]},PATH:[0:<<74,50>>,1:<<74,40 --GIC>>,2:<<82,40>>],TOid:48]},KIND:1] [ID:72,XPERC:38,YPERC:125,NAME:[ID:73,NAM --GICE:'dist_out'],PARENT:{71},KIND:-2] Shop_2( in shop_in, out shop_out ), --GI [ID:128,X:14,Y:30,LINES:{[ID:102,LSYMBOLS:{[],[]},PATH:[0:<<21,38>>,1:<<21, --GIC47>>,2:<<36,47>>],TOid:22]},KIND:0] [ID:130,XPERC:44,YPERC:125,NAME:[ID:90, --GICNAME:'Shop_2'],PARENT:{128},KIND:-2] Shop_3( in shop_in, out shop_out ), --GI [ID:210,X:1,Y:48,LINES:{[ID:140,LSYMBOLS:{[],[]},PATH:[0:<<9,49>>,1:<<36,49 --GIC>>],TOid:22]},KIND:0] [ID:147,XPERC:44,YPERC:125,NAME:[ID:91,NAME:'Shop_3'] --GIC,PARENT:{210},KIND:-2] Shop_1( in shop_in, out shop_out ) --GI [ID:207,SELWIN:[PLANE:{<<0,[NAME:'plane 0']>>,<<1,[NAME:'plane 1']>>,<<2,[N --GICAME:'plane 2']>>,<<3,[NAME:'plane 3']>>,<<4,[NAME:'plane 4']>>,<<5,[NAME:'p --GIClane 5']>>,<<6,[NAME:'plane 6']>>,<<7,[NAME:'plane 7']>>,<<8,[NAME:'plane 8 --GIC']>>,<<9,[NAME:'plane 9']>>},SIZE:6],X:3,Y:2,LINES:{[ID:105,LSYMBOLS:{[],[] --GIC},PATH:[0:<<10,10>>,1:<<10,48>>,2:<<36,48>>],TOid:22]},KIND:0] [ID:111,XPER --GICC:44,YPERC:125,NAME:[ID:93,NAME:'Shop_1'],PARENT:{207},KIND:-2] ; proc monitor[ out whord : stockentry, store realstock : stockdb, custstock : stockdb, waitingstock : stockdb ] := skip ; proc custserv[ in custord : stockentry, delivered : stockentry, out custdeliv : stockentry, store realstock : stockdb, custstock : stockdb ] := if query(custord@prodid,realstock)>,<<1,[NAME:'plane 1']>>,<<2,[N --GICAME:'plane 2']>>,<<3,[NAME:'plane 3']>>,<<4,[NAME:'plane 4']>>,<<5,[NAME:'p --GIClane 5']>>,<<6,[NAME:'plane 6']>>,<<7,[NAME:'plane 7']>>,<<8,[NAME:'plane 8 --GIC']>>,<<9,[NAME:'plane 9']>>},SIZE:6],X:57,Y:30,KIND:4] [ID:12,XPERC:50,YPER --GICC:125,NAME:[ID:28,NAME:'stockentry'],PARENT:{11},KIND:-2] := mk_order( in intern, out intern, stockentry, store random ), --GI [ID:0,X:34,Y:27,LINES:{[ID:19,LSYMBOLS:{[],[]},PATH:[0:<<37,27>>,1:<<37,21> --GIC>],TOid:7],[ID:23,LSYMBOLS:{[],[]},PATH:[0:<<42,32>>,1:<<57,32>>],TOid:11]} --GIC,KIND:6] [ID:1,XPERC:44,YPERC:125,NAME:[ID:22,NAME:'mk_order'],PARENT:{0},K --GICIND:-2] store random : real in system, --GI [ID:3,X:10,Y:21,LINES:{[ID:27,LSYMBOLS:{[DIR:0],[],[DIR:0],[]},PATH:[0:<<18 --GIC,28>>,1:<<34,28>>],TOid:0]},KIND:2] [ID:4,XPERC:44,YPERC:125,NAME:[ID:24,NA --GICME:'random'],PARENT:{3},KIND:-2] channel intern : real init 1.0 --GI [ID:7,X:35,Y:17,LINES:{[ID:15,LSYMBOLS:{[],[]},PATH:[0:<<38,21>>,1:<<38,27> --GIC>],TOid:0]},KIND:1] [ID:8,XPERC:38,YPERC:125,NAME:[ID:26,NAME:'intern'],PAR --GICENT:{7},KIND:-2] ; proc mk_order[ in intern : real, out intern : real, stockentry : stockentry, store random : real ] := intern <- intern delay nexp(2.0,random), stockentry <- f(random) ; export f[ r : real ] := if r < 1/4.0 then [prodid:'tv',amt:1,id:0] else if r < 2/4.0 then [prodid:'bike',amt:1,id:0] else if r < 3/4.0 then [prodid:'moto',amt:1,id:0] else [prodid:'radio',amt:1,id:0] fi fi fi : stockentry; export update_min[ db : stockdb, entry : stockentry ] := [prodid:entry@prodid,amt:query(entry@prodid,db)-entry@amt,id:entry@id] ins $[t:db|t@prodid!=entry@prodid] : stockdb; export sys Distr_center[ in cust_ord : stockentry, supp_del : stockentry, out cust_del : stockentry, supp_ord : stockentry ] --GIH [ID:0,X:15,Y:5,XSIZE:8,YSIZE:8,LINES:{[ID:47,LSYMBOLS:{[],[]},PATH:[0:<<17 --GIC,9>>,1:<<17,17>>],TOid:9]},KIND:3] [ID:1,XPERC:50,YPERC:125,NAME:[ID:93,NAM --GICE:'cust_ord'],PARENT:{0},KIND:-2] --GIH [ID:36,X:58,Y:79,LINES:{[ID:35,LSYMBOLS:{[],[]},PATH:[0:<<60,79>>,1:<<60,6 --GIC0>>],TOid:30]},KIND:3] [ID:37,XPERC:50,YPERC:125,NAME:[ID:105,NAME:'supp_de --GICl'],PARENT:{36},KIND:-2] --GIH [ID:5,X:66,Y:8,KIND:4] [ID:6,XPERC:50,YPERC:125,NAME:[ID:106,NAME:'cust_de --GICl'],PARENT:{5},KIND:-2] --GIH [ID:33,X:17,Y:79,KIND:4] [ID:34,XPERC:50,YPERC:125,NAME:[ID:107,NAME:'supp --GIC_ord'],PARENT:{33},KIND:-2] := cust_order( in cust_ord, out order, store virtual_stock ), --GI [ID:9,X:13,Y:17,LINES:{[ID:51,LSYMBOLS:{[],[]},PATH:[0:<<21,22>>,1:<<40,22> --GIC>],TOid:41]},KIND:6] [ID:10,XPERC:44,YPERC:125,NAME:[ID:81,NAME:'cust_order --GIC'],PARENT:{9},KIND:-2] cust_delivery( in order, out cust_del, upd_monitor, store real_stock ), --GI [ID:12,X:62,Y:18,LINES:{[ID:46,LSYMBOLS:{[],[]},PATH:[0:<<68,18>>,1:<<68,12 --GIC>>],TOid:5],[ID:52,LSYMBOLS:{[],[]},PATH:[0:<<66,26>>,1:<<66,35>>],TOid:88] --GIC},KIND:6] [ID:13,XPERC:44,YPERC:125,NAME:[ID:82,NAME:'cust_delivery'],PAREN --GICT:{12},KIND:-2] store virtual_stock : stockdb init {[prodid:'bike',amt:220],[prodid:'moto',amt:200], [prodid:'tv',amt:220],[prodid:'radio',amt:200]}, --GI [ID:19,X:24,Y:33,LINES:{[ID:55,LSYMBOLS:{[DIR:0],[],[DIR:0],[]},PATH:[0:<<2 --GIC5,33>>,1:<<25,24>>,2:<<21,24>>],TOid:9],[ID:76,LSYMBOLS:{[DIR:0],[],[DIR:0] --GIC,[]},PATH:[0:<<25,41>>,1:<<25,55>>,2:<<21,55>>],TOid:27]},KIND:2] [ID:20,XP --GICERC:50,YPERC:125,NAME:[ID:83,NAME:'virtual_stock'],PARENT:{19},KIND:-2] store real_stock : stockdb init {[prodid:'bike',amt:220],[prodid:'moto',amt:200], [prodid:'tv',amt:220],[prodid:'radio',amt:200]}, --GI [ID:22,X:46,Y:33,LINES:{[ID:95,LSYMBOLS:{[DIR:0],[],[DIR:0],[]},PATH:[0:<<5 --GIC3,33>>,1:<<53,25>>,2:<<62,25>>],TOid:12],[ID:114,LSYMBOLS:{[DIR:0],[],[DIR: --GIC0],[]},PATH:[0:<<53,41>>,1:<<53,53>>,2:<<56,53>>],TOid:30]},KIND:2] [ID:23, --GICXPERC:44,YPERC:125,NAME:[ID:84,NAME:'real_stock'],PARENT:{22},KIND:-2] supplier_order( out supp_ord, store virtual_stock ), --GI [ID:27,X:13,Y:54,LINES:{[ID:72,LSYMBOLS:{[],[]},PATH:[0:<<19,62>>,1:<<19,79 --GIC>>],TOid:33]},KIND:6] [ID:28,XPERC:50,YPERC:125,NAME:[ID:85,NAME:'supplier_ --GICorder'],PARENT:{27},KIND:-2] supplier_delivery( in supp_del, out upd_monitor, store real_stock ), --GI [ID:30,X:56,Y:52,LINES:{[ID:43,LSYMBOLS:{[],[]},PATH:[0:<<63,52>>,1:<<63,38 --GIC>>,2:<<64,38>>],TOid:88]},KIND:6] [ID:31,XPERC:50,YPERC:125,NAME:[ID:86,NAM --GICE:'supplier_delivery'],PARENT:{30},KIND:-2] channel order : stockentry, --GI [ID:41,X:40,Y:20,LINES:{[ID:7,LSYMBOLS:{[],[]},PATH:[0:<<44,22>>,1:<<62,22> --GIC>],TOid:12]},KIND:1] [ID:42,XPERC:50,YPERC:125,NAME:[ID:87,NAME:'order'],PA --GICRENT:{41},KIND:-2] channel upd_monitor : stockdb, --GI [ID:88,X:64,Y:35,LINES:{[ID:139,LSYMBOLS:{[],[]},PATH:[0:<<68,37>>,1:<<78,3 --GIC7>>],TOid:135]},KIND:1] [ID:91,XPERC:50,YPERC:125,NAME:[ID:108,NAME:'upd_mo --GICnitor'],PARENT:{88},KIND:-2] Dist_monitor( in upd_monitor ) --GI [ID:135,SELWIN:[PLANE:{<<0,[NAME:'plane 0']>>,<<1,[NAME:'plane 1']>>,<<2,[N --GICAME:'plane 2']>>,<<3,[NAME:'plane 3']>>,<<4,[NAME:'plane 4']>>,<<5,[NAME:'p --GIClane 5']>>,<<6,[NAME:'plane 6']>>,<<7,[NAME:'plane 7']>>,<<8,[NAME:'plane 8 --GIC']>>,<<9,[NAME:'plane 9']>>},SIZE:6],X:78,Y:33,KIND:0] [ID:136,XPERC:50,YPE --GICRC:125,NAME:[ID:109,NAME:'Dist_monitor'],PARENT:{135},KIND:-2] ; export sys Distr_center3[ in cust_ord : stockentry, supp_del : stockentry, out cust_del : stockentry, supp_ord : stockentry ] --GIH [ID:0,X:15,Y:5,XSIZE:8,YSIZE:8,LINES:{[ID:47,LSYMBOLS:{[],[]},PATH:[0:<<17 --GIC,9>>,1:<<17,17>>],TOid:9]},KIND:3] [ID:1,XPERC:50,YPERC:125,NAME:[ID:87,NAM --GICE:'cust_ord'],PARENT:{0},KIND:-2] --GIH [ID:36,X:58,Y:79,LINES:{[ID:48,LSYMBOLS:{[]},PATH:[0:<<60,79>>,1:<<60,62>> --GIC],TOid:90]},KIND:3] [ID:37,XPERC:50,YPERC:125,NAME:[ID:89,NAME:'supp_del'], --GICPARENT:{36},KIND:-2] --GIH [ID:5,X:66,Y:8,KIND:4] [ID:6,XPERC:50,YPERC:125,NAME:[ID:95,NAME:'cust_del --GIC'],PARENT:{5},KIND:-2] --GIH [ID:33,X:17,Y:79,KIND:4] [ID:34,XPERC:50,YPERC:125,NAME:[ID:97,NAME:'supp_ --GICord'],PARENT:{33},KIND:-2] := cust_order( in cust_ord, out order, store virtual_stock ), --GI [ID:9,X:13,Y:17,LINES:{[ID:51,LSYMBOLS:{[],[]},PATH:[0:<<21,22>>,1:<<40,22> --GIC>],TOid:41]},KIND:6] [ID:10,XPERC:44,YPERC:125,NAME:[ID:124,NAME:'cust_orde --GICr'],PARENT:{9},KIND:-2] cust_delivery( in order, out cust_del, upd_monitor, store real_stock ), --GI [ID:12,X:62,Y:18,LINES:{[ID:39,LSYMBOLS:{[],[]},PATH:[0:<<68,18>>,1:<<68,12 --GIC>>],TOid:5],[ID:46,LSYMBOLS:{[],[]},PATH:[0:<<67,26>>,1:<<67,39>>],TOid:85] --GIC},KIND:6] [ID:13,XPERC:44,YPERC:125,NAME:[ID:125,NAME:'cust_delivery'],PARE --GICNT:{12},KIND:-2] store virtual_stock : stockdb init {[prodid:'bike',amt:50],[prodid:'moto',amt:60], [prodid:'tv',amt:50],[prodid:'radio',amt:60]}, --GI [ID:19,X:24,Y:33,LINES:{[ID:43,LSYMBOLS:{[DIR:0],[],[DIR:0],[]},PATH:[0:<<2 --GIC5,41>>,1:<<25,55>>,2:<<21,55>>],TOid:93],[ID:55,LSYMBOLS:{[DIR:0],[],[DIR:0 --GIC],[]},PATH:[0:<<25,33>>,1:<<25,24>>,2:<<21,24>>],TOid:9]},KIND:2] [ID:20,XP --GICERC:50,YPERC:125,NAME:[ID:72,NAME:'virtual_stock'],PARENT:{19},KIND:-2] store real_stock : stockdb init {[prodid:'bike',amt:50],[prodid:'moto',amt:60], [prodid:'tv',amt:50],[prodid:'radio',amt:60]}, --GI [ID:22,X:46,Y:33,LINES:{[ID:101,LSYMBOLS:{[DIR:0],[]},PATH:[0:<<53,41>>,1:< --GIC<53,55>>,2:<<56,55>>],TOid:90],[ID:92,LSYMBOLS:{[DIR:0],[],[DIR:0],[]},PATH --GIC:[0:<<53,33>>,1:<<53,25>>,2:<<62,25>>],TOid:12]},KIND:2] [ID:23,XPERC:44,YP --GICERC:125,NAME:[ID:75,NAME:'real_stock'],PARENT:{22},KIND:-2] channel order : stockentry, --GI [ID:41,X:40,Y:20,LINES:{[ID:7,LSYMBOLS:{[],[]},PATH:[0:<<44,22>>,1:<<62,22> --GIC>],TOid:12]},KIND:1] [ID:42,XPERC:50,YPERC:125,NAME:[ID:77,NAME:'order'],PA --GICRENT:{41},KIND:-2] supplier_delivery3( in supp_del, out upd_monitor, store real_stock ), --GI [ID:90,X:56,Y:54,LINES:{[ID:53,LSYMBOLS:{[]},PATH:[0:<<63,54>>,1:<<63,42>>, --GIC2:<<65,42>>],TOid:85]},KIND:6] [ID:91,XPERC:44,YPERC:125,NAME:[ID:126,NAME: --GIC'supplier_delivery3'],PARENT:{90},KIND:-2] supplier_order3( out supp_ord, store virtual_stock ), --GI [ID:93,X:13,Y:54,LINES:{[ID:35,LSYMBOLS:{[],[]},PATH:[0:<<19,62>>,1:<<19,79 --GIC>>],TOid:33]},KIND:6] [ID:94,XPERC:44,YPERC:125,NAME:[ID:127,NAME:'supplier --GIC_order3'],PARENT:{93},KIND:-2] channel upd_monitor : stockdb, --GI [ID:85,X:65,Y:39,LINES:{[ID:119,LSYMBOLS:{[]},PATH:[0:<<69,41>>,1:<<75,41>> --GIC],TOid:105]},KIND:1] [ID:86,XPERC:50,YPERC:125,NAME:[ID:98,NAME:'upd_monito --GICr'],PARENT:{85},KIND:-2] Dist_monitor( in upd_monitor ) --GI [ID:105,SELWIN:[PLANE:{<<0,[NAME:'plane 0']>>,<<1,[NAME:'plane 1']>>,<<2,[N --GICAME:'plane 2']>>,<<3,[NAME:'plane 3']>>,<<4,[NAME:'plane 4']>>,<<5,[NAME:'p --GIClane 5']>>,<<6,[NAME:'plane 6']>>,<<7,[NAME:'plane 7']>>,<<8,[NAME:'plane 8 --GIC']>>,<<9,[NAME:'plane 9']>>},SIZE:6],X:75,Y:37,KIND:0] [ID:106,XPERC:50,YPE --GICRC:125,NAME:[ID:128,NAME:'Dist_monitor'],PARENT:{105},KIND:-2] ; export sys Distr_center2[ in cust_ord : stockentry, supp_del : stockentry, out cust_del : stockentry, supp_ord : stockentry ] --GIH [ID:0,X:15,Y:5,XSIZE:8,YSIZE:8,LINES:{[ID:47,LSYMBOLS:{[],[]},PATH:[0:<<17 --GIC,9>>,1:<<17,17>>],TOid:9]},KIND:3] [ID:1,XPERC:50,YPERC:125,NAME:[ID:88,NAM --GICE:'cust_ord'],PARENT:{0},KIND:-2] --GIH [ID:36,X:58,Y:79,LINES:{[ID:48,LSYMBOLS:{[]},PATH:[0:<<60,79>>,1:<<60,60>> --GIC],TOid:93]},KIND:3] [ID:37,XPERC:50,YPERC:125,NAME:[ID:90,NAME:'supp_del'], --GICPARENT:{36},KIND:-2] --GIH [ID:5,X:66,Y:8,KIND:4] [ID:6,XPERC:50,YPERC:125,NAME:[ID:95,NAME:'cust_del --GIC'],PARENT:{5},KIND:-2] --GIH [ID:33,X:17,Y:79,KIND:4] [ID:34,XPERC:50,YPERC:125,NAME:[ID:96,NAME:'supp_ --GICord'],PARENT:{33},KIND:-2] := cust_order( in cust_ord, out order, store virtual_stock ), --GI [ID:9,X:13,Y:17,LINES:{[ID:51,LSYMBOLS:{[],[]},PATH:[0:<<21,22>>,1:<<40,22> --GIC>],TOid:41]},KIND:6] [ID:10,XPERC:44,YPERC:125,NAME:[ID:125,NAME:'cust_orde --GICr'],PARENT:{9},KIND:-2] cust_delivery( in order, out cust_del, upd_monitor, store real_stock ), --GI [ID:12,X:62,Y:18,LINES:{[ID:39,LSYMBOLS:{[],[]},PATH:[0:<<68,18>>,1:<<68,12 --GIC>>],TOid:5],[ID:46,LSYMBOLS:{[],[]},PATH:[0:<<65,26>>,1:<<65,37>>],TOid:86] --GIC},KIND:6] [ID:13,XPERC:44,YPERC:125,NAME:[ID:126,NAME:'cust_delivery'],PARE --GICNT:{12},KIND:-2] store virtual_stock : stockdb init {[prodid:'bike',amt:50],[prodid:'moto',amt:60], [prodid:'tv',amt:50],[prodid:'radio',amt:60]}, --GI [ID:19,X:24,Y:33,LINES:{[ID:43,LSYMBOLS:{[DIR:0],[],[DIR:0],[]},PATH:[0:<<2 --GIC5,41>>,1:<<25,55>>,2:<<21,55>>],TOid:85],[ID:55,LSYMBOLS:{[DIR:0],[],[DIR:0 --GIC],[]},PATH:[0:<<25,33>>,1:<<25,24>>,2:<<21,24>>],TOid:9]},KIND:2] [ID:20,XP --GICERC:50,YPERC:125,NAME:[ID:80,NAME:'virtual_stock'],PARENT:{19},KIND:-2] store real_stock : stockdb init {[prodid:'bike',amt:50],[prodid:'moto',amt:60], [prodid:'tv',amt:50],[prodid:'radio',amt:60]}, --GI [ID:22,X:46,Y:33,LINES:{[ID:101,LSYMBOLS:{[DIR:0],[]},PATH:[0:<<53,41>>,1:< --GIC<53,53>>,2:<<56,53>>],TOid:93],[ID:92,LSYMBOLS:{[DIR:0],[],[DIR:0],[]},PATH --GIC:[0:<<53,33>>,1:<<53,25>>,2:<<62,25>>],TOid:12]},KIND:2] [ID:23,XPERC:44,YP --GICERC:125,NAME:[ID:81,NAME:'real_stock'],PARENT:{22},KIND:-2] channel order : stockentry, --GI [ID:41,X:40,Y:20,LINES:{[ID:7,LSYMBOLS:{[],[]},PATH:[0:<<44,22>>,1:<<62,22> --GIC>],TOid:12]},KIND:1] [ID:42,XPERC:50,YPERC:125,NAME:[ID:82,NAME:'order'],PA --GICRENT:{41},KIND:-2] supplier_order2( out supp_ord, store virtual_stock ), --GI [ID:85,X:13,Y:54,LINES:{[ID:35,LSYMBOLS:{[],[]},PATH:[0:<<19,62>>,1:<<19,79 --GIC>>],TOid:33]},KIND:6] [ID:91,XPERC:44,YPERC:125,NAME:[ID:127,NAME:'supplier --GIC_order2'],PARENT:{85},KIND:-2] supplier_delivery2( in supp_del, out upd_monitor, store real_stock ), --GI [ID:93,X:56,Y:52,LINES:{[ID:53,LSYMBOLS:{[]},PATH:[0:<<64,53>>,1:<<65,53>>, --GIC2:<<65,41>>],TOid:86]},KIND:6] [ID:94,XPERC:44,YPERC:125,NAME:[ID:128,NAME: --GIC'supplier_delivery2'],PARENT:{93},KIND:-2] channel upd_monitor : stockdb, --GI [ID:86,X:63,Y:37,LINES:{[ID:119,LSYMBOLS:{[]},PATH:[0:<<67,39>>,1:<<78,39>> --GIC],TOid:105]},KIND:1] [ID:87,XPERC:50,YPERC:125,NAME:[ID:98,NAME:'upd_monito --GICr'],PARENT:{86},KIND:-2] Dist_monitor( in upd_monitor ) --GI [ID:105,SELWIN:[PLANE:{<<0,[NAME:'plane 0']>>,<<1,[NAME:'plane 1']>>,<<2,[N --GICAME:'plane 2']>>,<<3,[NAME:'plane 3']>>,<<4,[NAME:'plane 4']>>,<<5,[NAME:'p --GIClane 5']>>,<<6,[NAME:'plane 6']>>,<<7,[NAME:'plane 7']>>,<<8,[NAME:'plane 8 --GIC']>>,<<9,[NAME:'plane 9']>>},SIZE:6],X:78,Y:35,KIND:0] [ID:106,XPERC:50,YPE --GICRC:125,NAME:[ID:129,NAME:'Dist_monitor'],PARENT:{105},KIND:-2] ; proc cust_order[ in cust_ord : stockentry, out order : stockentry, store virtual_stock : stockdb | pre query(cust_ord@prodid,virtual_stock)>0 ] := order <- cust_ord, virtual_stock <- update_min(virtual_stock,cust_ord) ; proc cust_delivery[ in order : stockentry, out cust_del : stockentry, upd_monitor : stockdb, store real_stock : stockdb | pre query(order@prodid,real_stock) >= order@amt ] := cust_del <- order, real_stock <- update_min(real_stock,order), upd_monitor <- update_min(real_stock,order) ; proc supplier_order[ out supp_ord : stockentry, store virtual_stock : stockdb | pre any[teszt:virtual_stock|teszt@amt<100] ] := supp_ord <- [prodid:(pick(query2(100,virtual_stock)))@prodid,amt:150,id:1], virtual_stock <- update(virtual_stock,[prodid:(pick(query2(100,virtual_stock)))@prodid,amt:150,id:1]) ; proc supplier_order3[ out supp_ord : stockentry, store virtual_stock : stockdb | pre any[teszt:virtual_stock|teszt@amt<30] ] := supp_ord <- [prodid:(pick(query2(30,virtual_stock)))@prodid,amt:50,id:3], virtual_stock <- update(virtual_stock,[prodid:(pick(query2(30,virtual_stock)))@prodid,amt:50,id:3]) ; proc supplier_order2[ out supp_ord : stockentry, store virtual_stock : stockdb | pre any[teszt:virtual_stock|teszt@amt<30] ] := supp_ord <- [prodid:(pick(query2(30,virtual_stock)))@prodid,amt:50,id:2], virtual_stock <- update(virtual_stock,[prodid:(pick(query2(30,virtual_stock)))@prodid,amt:50,id:2]) ; proc supplier_order1[ out supp_ord : stockentry, store virtual_stock : stockdb | pre any[teszt:virtual_stock|teszt@amt<30] ] := supp_ord <- [prodid:(pick(query2(30,virtual_stock)))@prodid,amt:50,id:1], virtual_stock <- update(virtual_stock,[prodid:(pick(query2(30,virtual_stock)))@prodid,amt:50,id:1]) ; proc supplier_delivery[ in supp_del : stockentry, out upd_monitor : stockdb, store real_stock : stockdb | pre supp_del@id = 1 ] := real_stock <- update(real_stock,supp_del), upd_monitor <- update(real_stock,supp_del) ; proc supplier_delivery3[ in supp_del : stockentry, out upd_monitor : stockdb, store real_stock : stockdb | pre supp_del@id = 3 ] := real_stock <- update(real_stock,supp_del), upd_monitor <- update(real_stock,supp_del) ; proc supplier_delivery2[ in supp_del : stockentry, out upd_monitor : stockdb, store real_stock : stockdb | pre supp_del@id = 2 ] := real_stock <- update(real_stock,supp_del), upd_monitor <- update(real_stock,supp_del) ; proc supplier_delivery1[ in supp_del : stockentry, out upd_monitor : stockdb, store real_stock : stockdb | pre supp_del@id = 1 ] := real_stock <- update(real_stock,supp_del), upd_monitor <- update(real_stock,supp_del) ; sys Supplier[ in supp_ord : stockentry, out supp_del : stockentry ] --GIH [ID:0,X:32,Y:4,LINES:{[ID:16,LSYMBOLS:{[],[]},PATH:[0:<<35,8>>,1:<<35,20>> --GIC],TOid:6]},KIND:3] [ID:1,XPERC:50,YPERC:125,NAME:[ID:26,NAME:'supp_ord'],PA --GICRENT:{0},KIND:-2] --GIH [ID:3,SELWIN:[PLANE:{<<0,[NAME:'plane 0']>>,<<1,[NAME:'plane 1']>>,<<2,[NA --GICME:'plane 2']>>,<<3,[NAME:'plane 3']>>,<<4,[NAME:'plane 4']>>,<<5,[NAME:'pl --GICane 5']>>,<<6,[NAME:'plane 6']>>,<<7,[NAME:'plane 7']>>,<<8,[NAME:'plane 8' --GIC]>>,<<9,[NAME:'plane 9']>>},SIZE:6],X:37,Y:44,XSIZE:-8,YSIZE:8,KIND:4] [ID: --GIC4,XPERC:38,YPERC:125,NAME:[ID:27,NAME:'supp_del'],PARENT:{3},KIND:-2] := suppl( in supp_ord, out supp_del, store random ), --GI [ID:6,X:31,Y:20,LINES:{[ID:20,LSYMBOLS:{[],[]},PATH:[0:<<35,28>>,1:<<35,44> --GIC>],TOid:3]},KIND:6] [ID:7,XPERC:50,YPERC:125,NAME:[ID:18,NAME:'suppl'],PARE --GICNT:{6},KIND:-2] store random : real in system --GI [ID:9,X:49,Y:19,LINES:{[ID:24,LSYMBOLS:{[DIR:0],[],[DIR:0],[]},PATH:[0:<<49 --GIC,24>>,1:<<39,24>>],TOid:6]},KIND:2] [ID:10,XPERC:44,YPERC:125,NAME:[ID:19,N --GICAME:'random'],PARENT:{9},KIND:-2] ; proc suppl[ in supp_ord : stockentry, out supp_del : stockentry, store random : real ] := supp_del<-supp_ord delay uniform(2.0*24.0,7.0*24.0,random) ; proc cust_out[ in cust_out : stockentry ] := skip ; sys shop[ in stockentry1 : stockentry, out stockentry2 : stockentry ] --GIH [ID:13,X:57,Y:20,LINES:{[ID:35,LSYMBOLS:{[],[]},PATH:[0:<<57,23>>,1:<<51,2 --GIC3>>],TOid:12]},KIND:3] [ID:14,XPERC:50,YPERC:125,NAME:[ID:44,NAME:'stockent --GICry1'],PARENT:{13},KIND:-2] --GIH [ID:17,SELWIN:[PLANE:{<<0,[NAME:'plane 0']>>,<<1,[NAME:'plane 1']>>,<<2,[N --GICAME:'plane 2']>>,<<3,[NAME:'plane 3']>>,<<4,[NAME:'plane 4']>>,<<5,[NAME:'p --GIClane 5']>>,<<6,[NAME:'plane 6']>>,<<7,[NAME:'plane 7']>>,<<8,[NAME:'plane 8 --GIC']>>,<<9,[NAME:'plane 9']>>},SIZE:6],X:57,Y:26,KIND:4] [ID:18,XPERC:50,YPER --GICC:125,NAME:[ID:46,NAME:'stockentry2'],PARENT:{17},KIND:-2] := customer( out stockentry ), --GI [ID:0,X:8,Y:20,LINES:{[ID:27,LSYMBOLS:{[],[]},PATH:[0:<<16,24>>,1:<<30,24>> --GIC],TOid:3]},KIND:0] [ID:1,XPERC:44,YPERC:125,NAME:[ID:38,NAME:'customer'],PA --GICRENT:{0},KIND:-2] channel stockentry : stockentry, --GI [ID:3,X:30,Y:22,LINES:{[ID:31,LSYMBOLS:{[],[]},PATH:[0:<<34,24>>,1:<<43,24> --GIC>],TOid:12]},KIND:1] [ID:4,XPERC:38,YPERC:125,NAME:[ID:40,NAME:'stockentry' --GIC],PARENT:{3},KIND:-2] Distr_center( in stockentry, stockentry1, out cust_out, stockentry2 ), --GI [ID:12,X:43,Y:20,LINES:{[ID:39,LSYMBOLS:{[],[]},PATH:[0:<<44,20>>,1:<<44,18 --GIC>>,2:<<34,18>>],TOid:15],[ID:45,LSYMBOLS:{[],[]},PATH:[0:<<51,27>>,1:<<57,2 --GIC7>>],TOid:17]},KIND:0] [ID:6,XPERC:50,YPERC:125,NAME:[ID:41,NAME:'Distr_cen --GICter'],PARENT:{12},KIND:-2] channel cust_out : stockentry, --GI [ID:15,X:30,Y:15,LINES:{[ID:49,LSYMBOLS:{[],[]},PATH:[0:<<31,15>>,1:<<31,14 --GIC>>,2:<<16,14>>],TOid:65]},KIND:1] [ID:8,XPERC:38,YPERC:125,NAME:[ID:42,NAME --GIC:'cust_out'],PARENT:{15},KIND:-2] cust_out( in cust_out ) --GI [ID:65,X:8,Y:8,KIND:6] [ID:10,XPERC:44,YPERC:125,NAME:[ID:43,NAME:'cust_out --GIC'],PARENT:{65},KIND:-2] ; sys Shop_2[ in shop_in : stockentry, out shop_out : stockentry ] --GIH [ID:10,X:98,Y:22,LINES:{[ID:27,LSYMBOLS:{[],[]},PATH:[0:<<98,25>>,1:<<53,2 --GIC5>>],TOid:9]},KIND:3] [ID:11,XPERC:50,YPERC:125,NAME:[ID:49,NAME:'shop_in'] --GIC,PARENT:{10},KIND:-2] --GIH [ID:13,SELWIN:[PLANE:{<<0,[NAME:'plane 0']>>,<<1,[NAME:'plane 1']>>,<<2,[N --GICAME:'plane 2']>>,<<3,[NAME:'plane 3']>>,<<4,[NAME:'plane 4']>>,<<5,[NAME:'p --GIClane 5']>>,<<6,[NAME:'plane 6']>>,<<7,[NAME:'plane 7']>>,<<8,[NAME:'plane 8 --GIC']>>,<<9,[NAME:'plane 9']>>},SIZE:6],X:98,Y:50,KIND:4] [ID:14,XPERC:38,YPER --GICC:125,NAME:[ID:50,NAME:'shop_out'],PARENT:{13},KIND:-2] := customer( out cust_in ), --GI [ID:112,X:8,Y:20,LINES:{[ID:23,LSYMBOLS:{[],[]},PATH:[0:<<16,24>>,1:<<30,24 --GIC>>],TOid:117]},KIND:0] [ID:0,XPERC:44,YPERC:125,NAME:[ID:40,NAME:'customer' --GIC],PARENT:{112},KIND:-2] channel cust_in : stockentry, --GI [ID:117,X:30,Y:22,LINES:{[ID:22,LSYMBOLS:{[],[]},PATH:[0:<<34,25>>,1:<<45,2 --GIC5>>],TOid:9]},KIND:1] [ID:2,XPERC:50,YPERC:125,NAME:[ID:44,NAME:'cust_in'], --GICPARENT:{117},KIND:-2] channel cust_out : stockentry, --GI [ID:125,X:30,Y:15,LINES:{[ID:47,LSYMBOLS:{[],[]},PATH:[0:<<31,15>>,1:<<31,1 --GIC4>>,2:<<16,14>>],TOid:128]},KIND:1] [ID:6,XPERC:38,YPERC:125,NAME:[ID:45,NA --GICME:'cust_out'],PARENT:{125},KIND:-2] cust_out( in cust_out ), --GI [ID:128,X:8,Y:8,KIND:6] [ID:8,XPERC:44,YPERC:125,NAME:[ID:46,NAME:'cust_out --GIC'],PARENT:{128},KIND:-2] Distr_center2( in cust_in, shop_in, out cust_out, shop_out ) --GI [ID:9,X:45,Y:21,LINES:{[ID:31,LSYMBOLS:{[],[]},PATH:[0:<<46,21>>,1:<<46,18> --GIC>,2:<<34,18>>],TOid:125],[ID:43,LSYMBOLS:{[],[]},PATH:[0:<<52,29>>,1:<<52,5 --GIC1>>,2:<<98,51>>],TOid:13]},KIND:0] [ID:15,XPERC:44,YPERC:125,NAME:[ID:48,NA --GICME:'Distr_center2'],PARENT:{9},KIND:-2] ; sys Shop_3[ in shop_in : stockentry, out shop_out : stockentry ] --GIH [ID:10,X:102,Y:40,LINES:{[ID:36,LSYMBOLS:{[],[]},PATH:[0:<<103,40>>,1:<<10 --GIC3,32>>,2:<<58,32>>],TOid:18]},KIND:3] [ID:11,XPERC:50,YPERC:125,NAME:[ID:53 --GIC,NAME:'shop_in'],PARENT:{10},KIND:-2] --GIH [ID:13,SELWIN:[PLANE:{<<0,[NAME:'plane 0']>>,<<1,[NAME:'plane 1']>>,<<2,[N --GICAME:'plane 2']>>,<<3,[NAME:'plane 3']>>,<<4,[NAME:'plane 4']>>,<<5,[NAME:'p --GIClane 5']>>,<<6,[NAME:'plane 6']>>,<<7,[NAME:'plane 7']>>,<<8,[NAME:'plane 8 --GIC']>>,<<9,[NAME:'plane 9']>>},SIZE:6],X:102,Y:68,KIND:4] [ID:14,XPERC:38,YPE --GICRC:125,NAME:[ID:54,NAME:'shop_out'],PARENT:{13},KIND:-2] := customer( out cust_in ), --GI [ID:132,X:8,Y:20,LINES:{[ID:23,LSYMBOLS:{[],[]},PATH:[0:<<16,24>>,1:<<30,24 --GIC>>],TOid:135]},KIND:0] [ID:0,XPERC:44,YPERC:125,NAME:[ID:46,NAME:'customer' --GIC],PARENT:{132},KIND:-2] channel cust_in : stockentry, --GI [ID:135,X:30,Y:22,LINES:{[ID:30,LSYMBOLS:{[],[]},PATH:[0:<<33,26>>,1:<<33,2 --GIC7>>,2:<<50,27>>],TOid:18]},KIND:1] [ID:2,XPERC:50,YPERC:125,NAME:[ID:47,NAM --GICE:'cust_in'],PARENT:{135},KIND:-2] channel cust_out : stockentry, --GI [ID:142,X:30,Y:15,LINES:{[ID:49,LSYMBOLS:{[],[]},PATH:[0:<<31,15>>,1:<<31,1 --GIC4>>,2:<<16,14>>],TOid:145]},KIND:1] [ID:6,XPERC:38,YPERC:125,NAME:[ID:50,NA --GICME:'cust_out'],PARENT:{142},KIND:-2] cust_out( in cust_out ), --GI [ID:145,X:8,Y:8,KIND:6] [ID:8,XPERC:44,YPERC:125,NAME:[ID:51,NAME:'cust_out --GIC'],PARENT:{145},KIND:-2] Distr_center3( in cust_in, shop_in, out cust_out, shop_out ) --GI [ID:18,X:50,Y:25,LINES:{[ID:42,LSYMBOLS:{[],[]},PATH:[0:<<51,25>>,1:<<51,18 --GIC>>,2:<<34,18>>],TOid:142],[ID:48,LSYMBOLS:{[],[]},PATH:[0:<<57,33>>,1:<<57, --GIC69>>,2:<<102,69>>],TOid:13]},KIND:0] [ID:27,XPERC:44,YPERC:125,NAME:[ID:52, --GICNAME:'Distr_center3'],PARENT:{18},KIND:-2] ; export sys Distr_center1[ in cust_ord : stockentry, supp_del : stockentry, out cust_del : stockentry, supp_ord : stockentry ] --GIH [ID:0,X:15,Y:5,XSIZE:8,YSIZE:8,LINES:{[ID:47,LSYMBOLS:{[],[]},PATH:[0:<<17 --GIC,9>>,1:<<17,17>>],TOid:9]},KIND:3] [ID:1,XPERC:50,YPERC:125,NAME:[ID:94,NAM --GICE:'cust_ord'],PARENT:{0},KIND:-2] --GIH [ID:36,X:58,Y:79,LINES:{[ID:30,LSYMBOLS:{[]},PATH:[0:<<60,79>>,1:<<60,60>> --GIC],TOid:35]},KIND:3] [ID:37,XPERC:50,YPERC:125,NAME:[ID:96,NAME:'supp_del'], --GICPARENT:{36},KIND:-2] --GIH [ID:5,X:66,Y:8,KIND:4] [ID:6,XPERC:50,YPERC:125,NAME:[ID:97,NAME:'cust_del --GIC'],PARENT:{5},KIND:-2] --GIH [ID:33,X:17,Y:79,KIND:4] [ID:34,XPERC:50,YPERC:125,NAME:[ID:98,NAME:'supp_ --GICord'],PARENT:{33},KIND:-2] := cust_order( in cust_ord, out order, store virtual_stock ), --GI [ID:9,X:13,Y:17,LINES:{[ID:51,LSYMBOLS:{[],[]},PATH:[0:<<21,22>>,1:<<40,22> --GIC>],TOid:41]},KIND:6] [ID:10,XPERC:44,YPERC:125,NAME:[ID:120,NAME:'cust_orde --GICr'],PARENT:{9},KIND:-2] cust_delivery( in order, out cust_del, upd_monitor, store real_stock ), --GI [ID:12,X:62,Y:18,LINES:{[ID:44,LSYMBOLS:{[],[]},PATH:[0:<<68,18>>,1:<<68,12 --GIC>>],TOid:5],[ID:95,LSYMBOLS:{[],[]},PATH:[0:<<68,26>>,1:<<68,38>>],TOid:53] --GIC},KIND:6] [ID:13,XPERC:44,YPERC:125,NAME:[ID:121,NAME:'cust_delivery'],PARE --GICNT:{12},KIND:-2] store virtual_stock : stockdb init {[prodid:'bike',amt:50],[prodid:'moto',amt:60], [prodid:'tv',amt:50],[prodid:'radio',amt:60]}, --GI [ID:19,X:24,Y:33,LINES:{[ID:55,LSYMBOLS:{[DIR:0],[],[DIR:0],[]},PATH:[0:<<2 --GIC5,33>>,1:<<25,24>>,2:<<21,24>>],TOid:9],[ID:56,LSYMBOLS:{[DIR:0],[],[DIR:0] --GIC,[]},PATH:[0:<<25,41>>,1:<<25,55>>,2:<<21,55>>],TOid:89]},KIND:2] [ID:20,XP --GICERC:50,YPERC:125,NAME:[ID:85,NAME:'virtual_stock'],PARENT:{19},KIND:-2] store real_stock : stockdb init {[prodid:'bike',amt:50],[prodid:'moto',amt:60], [prodid:'tv',amt:50],[prodid:'radio',amt:60]}, --GI [ID:22,X:46,Y:33,LINES:{[ID:103,LSYMBOLS:{[DIR:0],[]},PATH:[0:<<53,41>>,1:< --GIC<53,53>>,2:<<56,53>>],TOid:35],[ID:100,LSYMBOLS:{[DIR:0],[],[DIR:0],[]},PAT --GICH:[0:<<53,33>>,1:<<53,25>>,2:<<62,25>>],TOid:12]},KIND:2] [ID:23,XPERC:44,Y --GICPERC:125,NAME:[ID:86,NAME:'real_stock'],PARENT:{22},KIND:-2] channel order : stockentry, --GI [ID:41,X:40,Y:20,LINES:{[ID:7,LSYMBOLS:{[],[]},PATH:[0:<<44,22>>,1:<<62,22> --GIC>],TOid:12]},KIND:1] [ID:42,XPERC:50,YPERC:125,NAME:[ID:87,NAME:'order'],PA --GICRENT:{41},KIND:-2] supplier_order1( out supp_ord, store virtual_stock ), --GI [ID:89,X:13,Y:54,LINES:{[ID:29,LSYMBOLS:{[],[]},PATH:[0:<<19,62>>,1:<<19,79 --GIC>>],TOid:33]},KIND:6] [ID:91,XPERC:44,YPERC:125,NAME:[ID:122,NAME:'supplier --GIC_order1'],PARENT:{89},KIND:-2] supplier_delivery1( in supp_del, out upd_monitor, store real_stock ), --GI [ID:35,X:56,Y:52,LINES:{[ID:46,LSYMBOLS:{[]},PATH:[0:<<63,52>>,1:<<63,41>>, --GIC2:<<66,41>>],TOid:53]},KIND:6] [ID:38,XPERC:44,YPERC:125,NAME:[ID:123,NAME: --GIC'supplier_delivery1'],PARENT:{35},KIND:-2] channel upd_monitor : stockdb, --GI [ID:53,X:66,Y:38,LINES:{[ID:116,LSYMBOLS:{[]},PATH:[0:<<70,40>>,1:<<81,40>> --GIC],TOid:82]},KIND:1] [ID:88,XPERC:50,YPERC:125,NAME:[ID:99,NAME:'upd_monitor --GIC'],PARENT:{53},KIND:-2] Dist_monitor( in upd_monitor ) --GI [ID:82,SELWIN:[PLANE:{<<0,[NAME:'plane 0']>>,<<1,[NAME:'plane 1']>>,<<2,[NA --GICME:'plane 2']>>,<<3,[NAME:'plane 3']>>,<<4,[NAME:'plane 4']>>,<<5,[NAME:'pl --GICane 5']>>,<<6,[NAME:'plane 6']>>,<<7,[NAME:'plane 7']>>,<<8,[NAME:'plane 8' --GIC]>>,<<9,[NAME:'plane 9']>>},SIZE:6],X:81,Y:36,KIND:0] [ID:101,XPERC:50,YPER --GICC:125,NAME:[ID:124,NAME:'Dist_monitor'],PARENT:{82},KIND:-2] ; sys Shop_1[ in shop_in : stockentry, out shop_out : stockentry ] --GIH [ID:10,X:71,Y:29,LINES:{[ID:37,LSYMBOLS:{[],[]},PATH:[0:<<72,29>>,1:<<72,2 --GIC6>>,2:<<50,26>>],TOid:115]},KIND:3] [ID:11,XPERC:50,YPERC:125,NAME:[ID:45,N --GICAME:'shop_in'],PARENT:{10},KIND:-2] --GIH [ID:13,SELWIN:[PLANE:{<<0,[NAME:'plane 0']>>,<<1,[NAME:'plane 1']>>,<<2,[N --GICAME:'plane 2']>>,<<3,[NAME:'plane 3']>>,<<4,[NAME:'plane 4']>>,<<5,[NAME:'p --GIClane 5']>>,<<6,[NAME:'plane 6']>>,<<7,[NAME:'plane 7']>>,<<8,[NAME:'plane 8 --GIC']>>,<<9,[NAME:'plane 9']>>},SIZE:6],X:72,Y:57,KIND:4] [ID:14,XPERC:38,YPER --GICC:125,NAME:[ID:46,NAME:'shop_out'],PARENT:{13},KIND:-2] := customer( out cust_in ), --GI [ID:65,X:8,Y:20,LINES:{[ID:23,LSYMBOLS:{[],[]},PATH:[0:<<16,24>>,1:<<30,24> --GIC>],TOid:106]},KIND:0] [ID:0,XPERC:44,YPERC:125,NAME:[ID:39,NAME:'customer'] --GIC,PARENT:{65},KIND:-2] channel cust_in : stockentry, --GI [ID:106,X:30,Y:22,LINES:{[ID:33,LSYMBOLS:{[],[]},PATH:[0:<<34,23>>,1:<<42,2 --GIC3>>],TOid:115]},KIND:1] [ID:2,XPERC:50,YPERC:125,NAME:[ID:40,NAME:'cust_in' --GIC],PARENT:{106},KIND:-2] channel cust_out : stockentry, --GI [ID:109,X:30,Y:15,LINES:{[ID:27,LSYMBOLS:{[],[]},PATH:[0:<<31,15>>,1:<<31,1 --GIC4>>,2:<<16,14>>],TOid:112]},KIND:1] [ID:4,XPERC:38,YPERC:125,NAME:[ID:41,NA --GICME:'cust_out'],PARENT:{109},KIND:-2] cust_out( in cust_out ), --GI [ID:112,X:8,Y:8,KIND:6] [ID:6,XPERC:44,YPERC:125,NAME:[ID:42,NAME:'cust_out --GIC'],PARENT:{112},KIND:-2] Distr_center1( in cust_in, shop_in, out cust_out, shop_out ) --GI [ID:115,X:42,Y:19,LINES:{[ID:43,LSYMBOLS:{[],[]},PATH:[0:<<43,19>>,1:<<43,1 --GIC8>>,2:<<34,18>>],TOid:109],[ID:49,LSYMBOLS:{[],[]},PATH:[0:<<49,27>>,1:<<49 --GIC,58>>,2:<<72,58>>],TOid:13]},KIND:0] [ID:8,XPERC:44,YPERC:125,NAME:[ID:44,N --GICAME:'Distr_center1'],PARENT:{115},KIND:-2] ; export sys Dist_monitor[ in oldstock : stockdb ] --GIH [ID:0,X:11,Y:9,LINES:{[ID:21,LSYMBOLS:{[],[]},PATH:[0:<<14,13>>,1:<<14,23> --GIC>,2:<<32,23>>],TOid:16]},KIND:3] [ID:1,XPERC:50,YPERC:125,NAME:[ID:33,NAME: --GIC'oldstock'],PARENT:{0},KIND:-2] := store time : real in system, --GI [ID:4,X:42,Y:7,LINES:{[ID:35,LSYMBOLS:{[DIR:0],[],[DIR:0],[]},PATH:[0:<<43, --GIC15>>,1:<<43,23>>,2:<<40,23>>],TOid:16]},KIND:2] [ID:5,XPERC:44,YPERC:125,NA --GICME:[ID:34,NAME:'time'],PARENT:{4},KIND:-2] store last_upd_t : real init 0.0, --GI [ID:8,X:61,Y:25,LINES:{[ID:31,LSYMBOLS:{[DIR:0],[],[DIR:0],[]},PATH:[0:<<61 --GIC,26>>,1:<<40,26>>],TOid:16]},KIND:2] [ID:9,XPERC:44,YPERC:125,NAME:[ID:36,N --GICAME:'last_upd_t'],PARENT:{8},KIND:-2] store avarage_stock : avs init {[prodid:'bike',avg:0.0],[prodid:'moto',avg:0.0], [prodid:'tv',avg:0.0],[prodid:'radio',avg:0.0]}, --GI [ID:12,X:35,Y:37,LINES:{[ID:27,LSYMBOLS:{[DIR:0],[],[DIR:0],[]},PATH:[0:<<3 --GIC6,37>>,1:<<36,30>>],TOid:16]},KIND:2] [ID:13,XPERC:44,YPERC:125,NAME:[ID:37 --GIC,NAME:'avarage_stock'],PARENT:{12},KIND:-2] stm( in oldstock, store avarage_stock, last_upd_t, time ) --GI [ID:16,SELWIN:[PLANE:{<<0,[NAME:'plane 0']>>,<<1,[NAME:'plane 1']>>,<<2,[NA --GICME:'plane 2']>>,<<3,[NAME:'plane 3']>>,<<4,[NAME:'plane 4']>>,<<5,[NAME:'pl --GICane 5']>>,<<6,[NAME:'plane 6']>>,<<7,[NAME:'plane 7']>>,<<8,[NAME:'plane 8' --GIC]>>,<<9,[NAME:'plane 9']>>},SIZE:6],X:32,Y:22,KIND:6] [ID:17,XPERC:44,YPERC --GIC:125,NAME:[ID:38,NAME:'stm'],PARENT:{16},KIND:-2] ; proc stm[ in oldstock : stockdb, store avarage_stock : avs, last_upd_t : real, time : real | pre time > 0.0 ] := last_upd_t<-time, avarage_stock<-rng[x:avarage_stock|[prodid:x@prodid,avg:(x@avg*last_upd_t+(time-last_upd_t)* real(query(x@prodid,oldstock)))/time]] ; proc ttt[ in upd_monitor : stockdb ] := skip ;