; =============================================================== ; =========== CLOD Model of a Learning Organization ============ ; =============== based on March (1991) ========================= ; === with the purpose to analyze evaluation systems ============ ; ==========================2016-1017============================ ; ========================= Version 6 =========================== ; =============================================================== ; ==================================================================================== ; ============================= 0. DECLARATIONS ======================================= ; ===================================================================================== ; We declare that in my world there are three types of agents: ; CUSTOMERS, MEMBERS, LEADERS breed [customers customer] breed [members member] breed [leaders leader] ; the fourth type, the ELITE, is a subgroup of MEMBERS ; We declare main attributes of Agents customers-own [requisites] ; list of characteristics of external environment members-own [ ;......................... CRISP MEMBERS ......................... beliefs ;............vector of beliefs with values between {-1;0;1}. m-score ;............member's score that measure the agreements and the disagreements between orientation vectors and the customer’s requisites. m-knowledge ;........member's Knowledge that is the proportion of customer’s requisites correctly represented in the beliefs of leader and on average in members’ beliefs. superior-score ;.....binary variable that is True if the m-score > l-score; False otherwise disagreement-with-leader ;........vector filled with 1 if ith member's beliefs is different from ith leader's beliefs, 0 otherwise. ;......................... FUZZY MEMBERS ......................... lv ;.........................vector of left value of the dual truth model rv ;.........................vector of right value of the dual truth model n ;.........................number to fill the vector of beliefs orientation_m ;.........................member's orientation vector intention_m ;.........................vector for updating fuzzy beliefs pol;.........................complementary vector of member's orientation ] leaders-own [ ;......................... CRISP LEADER ......................... l-beliefs l-score l-knowledge ;......................... FUZZY LEADER ......................... lv_l ;.........................vector of left value of the dual truth model rv_l ;.........................vector of right value of the dual truth model t ;.........................number to fill the vector of beliefs orientation_l ;.........................leader's orientation vector intention_l ;.........................vector for updating fuzzy beliefs ] ; We declare main attributes of my world globals [ ;........................."#dimensions" of external environment and beliefs defined in interface ;......................... "#members# of organization defined in the interface elite ;.........................subgroup of members with score higher than leader elite-maj-bel ;.........................majority beliefs of elite sum-disagreements ;.........................total disagreent between members and leader ;......................... global variables for statistics and plots ......................... %mean-m-score %mean-m-knowledge %l-score %l-knowledge %mean-e-knowledge %mean-e-score ;......................... fuzzy Global orientation_e term_set ] ; We declare attributes of my virtual landscape patches-own [ elevation ] ; ===================================================================================== ;=====================================CRISP_SECTION==================================== ; ===================================================================================== ; ===================================================================================== ; ========================== 1. CREATE THE WORLD (SETUP procedure) ==================== ; ===================================================================================== to setup_crisp ca if fuzzy [ setup_fuzzy stop] ; ------------------------ 1.1 create landscape ----------------------------------- draw-landscape ; ------------------------- 1.2. CREATE AGENTS -------------------------------------- ; ---------------------------and set the initial conditions-------------------------- ; ------------------------ The external environment (CUSTOMER) ---------------------- ;--------------------------------inizialized to -1 or 1------------------------------ create-customers 1 [ set size 4 set shape "person" set color green set requisites n-values #dimensions [2 * (random 2) - 1] ] ; -------------------------- The organization members (MEMBERS) --------------------- ; ---------------------------inizialized with random values -1, 0, +1 --------------- create-ordered-members #members [ set superior-score false set size 2 set color blue + 2 set shape "person" set beliefs n-values #dimensions [(random 3) - 1] ] ; ------------------------- The organization LEADER (LEADER) ------------------------ ;---------------------- inizialized with random values -1, 0, +1--------------------- create-leaders 1 [ set shape "person" set color yellow set size 4 set l-beliefs n-values #dimensions [(random 3) - 1]] ; ----------------------- Initial settings of GLOBAL VARIABLES ---------------------- set elite-maj-bel n-values #dimensions [0] ; ------------- 1.3 Settings of Score and Knowledge of Agents -------------- ; ------------------------ 1.3.1.Score and Knowledge Members ----------------------- calc-members-knowledge calc-members-score ; ------------------------ 1.3.2.Score and Knowledge Leader ----------------------- calc-leaders-knowledge calc-leaders-score ; ------------------------ 1.4. Setting elite-beliefs ------------------------ calc-elite-majority-beliefs ; ------------------ 1.5. Create a graphical representation ------------- drawing ; ------------------ 1.6. Make statistics ----------------------------------------- update-my-stats reset-ticks end ; ===================================================================================== ; ============================== 2. DEFINE BEHAVIOURS (GO procedure) =================== ; ===================================================================================== to go_crisp if fuzzy [ go_fuzzy stop] wait 0.1 ; ---------------------------- 2.0 Select New Elite ---------------------------- calc-elite-majority-beliefs ; --------------------------- 2.1 DO TURBULENCE -------------------------------- let w #max-ticks - turbulence_span if (turbulence?) [ ask customers [ set requisites map [? -> ifelse-value (turbulence-degree > random-float 100) [ifelse-value (? = 1) [-1] [1]] [?]] requisites ]] ; --------------------------- 2.2 DO TURNOVER -------------------------------- if (turnover = "YES") [do_turnover] ; --------------------------- 2.3 LEARNING SEQUENCE -------------------------------- ; ...... Update Leader Beliefs -> Update Leader Scores -> Update Members Beliefs -> ; ...... -> Update Members Score -> Select New Elite ; ---------------------------------------------------------------------------------- ; ------------------------- 2.3.1 Update Leader knowledge and score ------------------ calc-leaders-knowledge calc-leaders-score ; ---------------------------- 2.3.2 Update Members knowledge and score ---------------- calc-members-knowledge calc-members-score ; -------------------------- 2.3.3 Update Leader Beliefs ------------------------ draw-leader ask leaders [ set l-beliefs (map [[?1 ?2] -> update-l-beliefs ?1 ?2] l-beliefs elite-maj-bel) ] ; ---------------------------- 2.3.4 Update Members Beliefs ------------------------ draw-members ask leaders [ ask members [ set beliefs (map [[?1 ?2] -> update-m-beliefs ?1 ?2] beliefs [l-beliefs] of myself)] ] ; --------------------------- 2.4 DO STATISTICS AND PLOTS ----------------------------- ; --------------------------- 2.4.1 Update Statistics ---------------------------- update-my-stats ; ---------------------------- 2.4.2 Update Plots --------------------------------- update-my-plot ;------------------------------- 2.5. DEFINE STOPPING CONDITIONS --------------------- ;; ------------- 2.5.1 Stop if there is complete alignement between leader and members------- if eq-stop[ ask leaders [ ask members [set disagreement-with-leader sum (map [[?1 ?2] -> disagreement ?1 ?2] beliefs [l-beliefs] of myself)] ] set sum-disagreements sum (sentence[disagreement-with-leader] of members) if (sum-disagreements = 0) [stop] if turnover = "YES after equilibrium" [set turnover "YES" ]] ;; ------------- 2.5.2 Stop in any case after #max-ticks units ------------------------ if ticks > #max-ticks [ set turnover "NO" stop ] ;-------------------------------------------------------------------------------------- tick end ; ===================================================================================== ; ============================= 3. SPECIFY RULES FOR ACTIONS ========================== ; ===================================================================================== ; ========================= 3.1 EVALUATION ACTIONS ================================== ; -------------------------------- 3.1.1 EVALUATE MEMBERS ---------------------------- ; -------------------------- Absolute evaluation made by the Customer---------------- ; ABSOLUTE EVALUATION: the KNOWLEDGE, as sum of agreements between beliefs and requisites ---- ; --- Note that the belief "I don't know" is evalutated as a disagreement --- ; --- This evaluation tell us the amount of effective knowledge of agents --- to calc-members-knowledge ask customers [ ask members [ set m-knowledge sum (map [[?1 ?2] -> ifelse-value (?1 = ?2) [1] [0]] [requisites] of myself (beliefs)) ]] end ; -------------------------- Valuation made by an Evaluator chosen by the Researcher) -------- ;-------------------------- the SCORE as a result of a procedure of evaluation by an Evaluator -- to calc-members-score ;.; if (Evaluator = "Customer") [ ; --- In this case: the Evaluator is the Customer. ; --- This assumption is not realistic. We must test different evaluation systems ; ----Score is computed as follows: Agreement = +1, Disagreement = -1, "I don't Know" = 0 ask customers [ ask members [ set m-score sum (map [[?1 ?2] -> ?1 * ?2] [requisites] of myself (beliefs))] ] ;.; if (Evaluator = "Leader") [ ; --- In this case: the Evaluator is the Leader. ; --- This assumption is not more realistic because ; ----Score is computed as follows: Agreement = +1, Disagreement = -1, "I don't Know" = 0 ;.; ask leader [ ask members [ ;.; set m-score sum (map [?1 * ?2] [l-beliefs] of myself (beliefs))]] ;.; ] end ; ------------------------------- 3.2 EVALUATE THE LEADER --------------------------------- ; ----------------------------3.2.1 Absolute evaluation made by the Customer_____________ ; ABSOLUTE EVALUATION: the KNOWLEDGE, as sum of agreements between beliefs and requisites ---- ; --- Note that the belief "I don't know" is evalutated as a disagreement --- ; --- This evaluation tell us the amount of effective knowledge of agents --- to calc-leaders-knowledge ask customers [ ask leaders [ set l-knowledge sum (map [[?1 ?2] -> ifelse-value (?1 = ?2) [1] [0]] [requisites] of myself (l-beliefs)) ] ] end ;.........................3.2.2 Procedural evaluation made by an Evaluator (DEFINED BY the Researcher)-------- ; PROCEDURAL EVALUATION: the SCORE as a result of a procedure of evaluation by an Evaluator --- ; --- In this case: the Evaluator is the Customer. --- ; Score is computed as follows:Agreement = +1, Disagreement = -1, "I don't Know" = 0 --- to calc-leaders-score ask customers [ ask leaders [ set l-score sum (map [[?1 ?2] -> ?1 * ?2] [requisites] of myself (l-beliefs)) ]] end ; ---------------------------------- 3.3. SELECT THE ELITE ---------------------------------- ; ------------------------ 3.3.1 set members belonging to the elite -------------------------- to calc-elite-majority-beliefs set elite [ ] ask leaders [ ask members [ set superior-score false set color blue + 2 if (m-score >= ([l-score] of myself)) [set superior-score true set color red ] ]] set elite members with [superior-score] ; -------------------------- 3.3.2 set elite dominant beliefs --------------------------- let beliefs-sums n-values #dimensions [0] ask elite [ set beliefs-sums (map [[?1 ?2] -> ?1 + ?2] beliefs-sums beliefs) let bsize (map [? -> abs ?] beliefs-sums) set elite-maj-bel (map [[?1 ?2] -> ifelse-value (?1 = 0) [0] [?1 / ?2]] beliefs-sums bsize) ] end ; -------------------------- 3.4. BELIEFS'S UPGRADING RULES -------------------------- ; ----------------------------- 3.4.1 Upgrade LEADER beliefs according to LISTENING ABILITY --------------------------- to-report update-l-beliefs [LB EMB] if LB = EMB [report LB] if EMB = 0 [report LB] if (leader-listening-ability% > random-float 100) [report EMB] report LB end ; --------------- 3.4.2 Upgrade MEMBERS Beliefs according to CONFORMITY DEGREE ----- to-report update-m-beliefs [MB LB] if MB = LB [report MB] if LB = 0 [report MB] if (members-conformity-degree% > random-float 100) [report LB] report MB end ; ===================================================================================== ; ================================== 4 STOPPING ACTIONS =============================== ; ===================================================================================== to-report disagreement [MB LB] ifelse MB = LB [report 0] [report 1] end ; ===================================================================================== ; ===================================== 5 DO_TURNOVER ================================= ; ===================================================================================== to do_turnover ask members [ if (turnover-intensity > random-float 100) [ if (turnover-frequency-prob > random-float 100) [ set beliefs n-values #dimensions [(random 3) - 1] set color white ]] ] end ; ===================================================================================== ; =================================== 6. DRAWING ACTIONS ============================== ; ===================================================================================== ; ------------------------------- 6.1 draw landscape --------------------------------- to draw-landscape ifelse (landscape = "circles") [draw-landscape-circles] [ draw-landscape-elevation ] end ; ............................... 6.1.1 draw landscape cicles ....................... to draw-landscape-circles let radius [5 10 15 20 25 30] crt 1 [set color red foreach radius [? -> setxy 0 ? facexy 0 0 lt 90 pd repeat 360 [fd (pi * ? / 180) rt 1] pu ] die ] end ; -------------------------- 6.1.2 draw landscape elevation-------------------------- to draw-landscape-elevation ask patches [ set elevation 30 - distancexy 0 0 set pcolor scale-color brown elevation 1 30 ] end ; ----------------------------- 6.2 draw agents ----------------------------- to drawing draw-members draw-leader end ; -------------------------- 6.2.1 draw members -------------------------- to draw-members ask members [setxy 0 0 fd (#dimensions - m-knowledge) ] end ; -------------------------- 6.2.2 draw leader -------------------------- to draw-leader ask leaders [ setxy 0 (#dimensions - l-knowledge) ] end ; ===================================================================================== ; ================================ 7. STATS AND PLOT ACTIONS ========================== ; ===================================================================================== ; ---------------------------- 7.1 Update Statistics ------------------------ to update-my-stats set %mean-m-score ((mean [m-score] of members / #dimensions) * 100) set %mean-m-knowledge ((mean [m-knowledge] of members / #dimensions) * 100) set %l-score ((mean [l-score] of leaders / #dimensions) * 100) set %l-knowledge ((mean [l-knowledge] of leaders / #dimensions) * 100) set %mean-e-knowledge ifelse-value (count elite = 0) [0] [ ((mean [m-knowledge] of elite / #dimensions) * 100) ] set %mean-e-score ifelse-value (count elite = 0) [0] [ ((mean [m-score] of elite / #dimensions) * 100) ] end ; ------------------------------- 7.2 Update Plots ---------------------------- ; ---------------------------------7.2.1 First Plot : Knowledge Evolution------ to update-my-plot set-current-plot "Knowledge Evolution" set-current-plot-pen "Leader" plotxy ticks %l-knowledge set-current-plot-pen "Members" plotxy ticks %mean-m-knowledge set-current-plot-pen "Elite" plotxy ticks %mean-e-knowledge ; ---------------------------------7.2.2 Second Plot: Score Evolution --------- set-current-plot "Score Evolution" set-current-plot-pen "Leader" plotxy ticks %l-score set-current-plot-pen "Members" plotxy ticks %mean-m-score set-current-plot-pen "Elite" plotxy ticks %mean-e-score end ;------------------------------------------------------------------------------- ;------------------------------------------------------------------------------- ;------------------------------------------------------------------------------- ; ============================================================================== ; ================================= END CRISP MODE ============================= ; ============================================================================== ;------------------------------------------------------------------------------- ;------------------------------------------------------------------------------- ;------------------------------------------------------------------------------- ; ============================================================================== ; ================================= FUZZY MODE ================================= ; ============================================================================== ; ===================================================================================== ; ============================ 8. CREATE THE WORLD (SETUP procedure) ================== ; ===================================================================================== to setup_fuzzy ca if fuzzy = "false" [setup_crisp stop] ;------------------------8.1 Defyne the Term set for each Cardinality------------------ if cardinality = 3[ set term_set [1 0.6 0.4] ] if cardinality = 5[ set term_set [1 0.71 0.57 0.43 0.29] ] if cardinality = 7[ set term_set [1 0.78 0.67 0.56 0.44 0.33 0.22] ] ; ------------------------ 8.2 create landscape ----------------------------------- draw-landscape ; ------------------------- 8.3. CREATE AGENTS -------------------------------- ; --------------------and set the initial conditions-------------------------- ; ------------------------ The external environment (CUSTOMER) ---------------------- ;--------------------------------inizialized to -1 or 1------------------------------ create-customers 1 [ set size 4 set shape "person" set color green set requisites n-values #dimensions [2 * (random 2) - 1] ] ; -------------------------- The organization members (MEMBERS) --------------------- ; ---------------------------inizialized with random values -1, 0, +1 --------------- create-ordered-members #members [ set superior-score false set size 2 set color blue + 2 set shape "person" set lv [] set rv [] vector vector_r set orientation_m (map [[?1 ?2] -> ifelse-value (?1 > ?2) [-1][ifelse-value (?1 < ?2)[1][ifelse-value (?1 = ?2)[0][0]]]] lv rv) ] ; ------------------------- The organization LEADER (LEADER) ------------------------ ;---------------------- inizialized with random values -1, 0, +1--------------------- create-leaders 1 [ set shape "person" set color yellow set size 4 set lv_l [] set rv_l [] vector_l vector_rl set orientation_l (map [[?1 ?2] -> ifelse-value (?1 > ?2) [-1][ifelse-value (?1 < ?2)[1][0]]] lv_l rv_l) ] ; ----------------------- Initial settings of GLOBAL VARIABLES ---------------------- set orientation_e n-values #dimensions [0] ; ------------- 8.4 Settings of Score and Knowledge of Agents -------------- ; ------------------------ 8.4.1.Score and Knowledge Members ----------------------- calc-members-knowledge_fuzzy calc-members-score_fuzzy ; ------------------------ 8.4.2.Score and Knowledge Leader ----------------------- calc-leaders-knowledge_fuzzy calc-leaders-score_fuzzy ; ------------------------ 8.4.3 Setting elite and their beliefs ------------------------ set elite [ ] ask leaders [ ask members [ set superior-score false set color blue + 2 if (m-score >= ([l-score] of myself)) [set superior-score true set color red ] ]] set elite members with [superior-score] ask elite[ set orientation_e n-values #dimensions [0] let a (map [[?1 ?2] -> ?1 + ?2] orientation_m orientation_e) set orientation_e (map [[?1] -> ifelse-value (?1 > 0)[1][ifelse-value (?1 < 0)[-1][0]]] a) ] ; ---------------------- 8.5. Create a graphical representation ---------------------- drawing ; ---------------------- 8.6 Make statistics ----------------------------------------- update-my-stats ; ---------------------- 8.7 Update Leader Beliefs ----------------------------------- ask leaders [ set orientation_l (map [[?1 ?2] -> ifelse-value (?1 > ?2) [-1][ifelse-value (?1 < ?2)[1][0]]] lv_l rv_l) set intention_l (map [[?1 ?2] -> ifelse-value (?1 = -1)[verso-sx ?2][ifelse-value (?1 = 1)[verso-dx ?2][?2]]] orientation_e lv_l) set lv_l (map [[?1 ?2 ?3 ?4] -> update-l-beliefs-fuzzy ?1 ?2 ?3 ?4 ] lv_l orientation_l orientation_e intention_l) vector_rl ] reset-ticks end ; ===================================================================================== ; ============================ 9. CREATE FUZZY BELIEFS VECTORS ======================== ; ===================================================================================== ; ---------------------- 9.1 MEMBERS VECTORS ---------------------- to vector while [n < #dimensions] [ if cardinality = 3 [ set lv lput (one-of (term_set)) lv set n n + 1] if cardinality = 5 [ set lv lput (one-of (term_set)) lv set n n + 1 ] if cardinality = 7 [ set lv lput (one-of (term_set)) lv set n n + 1 ]] end to vector_r if cardinality = 3[ set rv (map [?1 -> ifelse-value (?1 = 1) [0.4] [ifelse-value (?1 = 0.6) [0.6] [1]]] lv)] if cardinality = 5[ set rv (map [?1 -> ifelse-value (?1 = 1) [0.29] [ifelse-value (?1 = 0.71) [0.43] [ifelse-value (?1 = 0.57) [0.57] [ifelse-value (?1 = 0.43) [0.71] [1]]]]] lv)] if cardinality = 7[ set rv (map [?1 -> ifelse-value (?1 = 1) [0.22] [ifelse-value (?1 = 0.78) [0.33] [ifelse-value (?1 = 0.67) [0.44] [ifelse-value (?1 = 0.56) [0.56] [ifelse-value (?1 = 0.44) [0.67] [ifelse-value (?1 = 0.33) [0.78] [1]]]]]]] lv)] end ; ---------------------- 9.2 LEADER VECTORS ---------------------- to vector_l while [t < #dimensions] [ if cardinality = 3 [ set lv_l lput (one-of (term_set)) lv_l set t t + 1] if cardinality = 5 [ set lv_l lput (one-of (term_set)) lv_l set t t + 1 ] if cardinality = 7 [ set lv_l lput (one-of (term_set)) lv_l set t t + 1 ]] end to vector_rl if cardinality = 3[ set rv_l (map [?1 -> ifelse-value (?1 = 1) [0.4] [ifelse-value (?1 = 0.6) [0.6] [1]]] lv_l)] if cardinality = 5[ set rv_l (map [?1 -> ifelse-value (?1 = 1) [0.29] [ifelse-value (?1 = 0.71) [0.43] [ifelse-value (?1 = 0.57) [0.57] [ifelse-value (?1 = 0.43) [0.71] [1]]]]] lv_l)] if cardinality = 7[ set rv_l (map [?1 -> ifelse-value (?1 = 1) [0.22] [ifelse-value (?1 = 0.78) [0.33] [ifelse-value (?1 = 0.67) [0.44] [ifelse-value (?1 = 0.56) [0.56] [ifelse-value (?1 = 0.44) [0.67] [ifelse-value (?1 = 0.33) [0.78] [1]]]]]]] lv_l)] end ; ===================================================================================== ; ============================== 10. DEFINE BEHAVIOURS (GO procedure) ================= ; ===================================================================================== to go_fuzzy if fuzzy = "false" [go_crisp stop] ; ---------------------------- 10.0 Select New Elite ---------------------------- calc-elite-majority-beliefs_fuzzy ; --------------------------- 10.1 DO TURBULENCE -------------------------------- if turbulence? [ ask customers [ set requisites map [? -> ifelse-value (turbulence-degree > random-float 100) [ifelse-value (? = 1) [-1] [1]] [?]] requisites ]] ; --------------------------- 10.2 DO TURNOVER -------------------------------- if (turnover = "YES") [do_turnover_fuzzy] ; --------------------------- 10.3 LEARNING SEQUENCE -------------------------------- ; ...... Update Leader Beliefs -> Update Leader Scores -> Update Members Beliefs -> ; ...... -> Update Members Score -> Select New Elite ; ---------------------------------------------------------------------------------- ; ------------------------- 10.3.1 Update Leader knowledge and score ------------------ calc-leaders-knowledge_fuzzy calc-leaders-score_fuzzy ; ---------------------------- 10.3.2 Update Members knowledge and score ---------------- calc-members-knowledge_fuzzy calc-members-score_fuzzy ; -------------------------- 10.3.3 Update Leader Beliefs ------------------------ draw-leader ask leaders [ set orientation_l (map [[?1 ?2] -> ifelse-value (?1 > ?2) [-1][ifelse-value (?1 < ?2)[1][0]]] lv_l rv_l) set intention_l (map [[?1 ?2] -> ifelse-value (?1 = -1)[verso-sx ?2][ifelse-value (?1 = 1)[verso-dx ?2][?2]]] orientation_e lv_l) set lv_l (map [[?1 ?2 ?3 ?4] -> update-l-beliefs-fuzzy ?1 ?2 ?3 ?4 ] lv_l orientation_l orientation_e intention_l) vector_rl ] ; ---------------------------- 10.3.4 Update Members Beliefs ------------------------ draw-members ask leaders [ ask members [ set orientation_m (map [[?1 ?2] -> ifelse-value (?1 > ?2) [-1][ifelse-value (?1 < ?2)[1][ifelse-value (?1 = ?2)[0][0]]]] lv rv) set intention_m (map [[?1 ?2] -> ifelse-value (?1 = -1)[verso-sx ?2][ifelse-value (?1 = 1)[verso-dx ?2][?2]]] [orientation_l] of myself lv) set lv (map [[?1 ?2 ?3 ?4] -> update-m-beliefs-fuzzy ?1 ?2 ?3 ?4] lv orientation_m [orientation_l] of myself intention_m) vector_r ] ] ; --------------------------- 10.4 DO STATISTICS AND PLOTS ----------------------------- ; --------------------------- 10.4.1 Update Statistics ---------------------------- update-my-stats ; ---------------------------- 10.4.2 Update Plots --------------------------------- update-my-plot ;------------------------------- 10.5 DEFINE STOPPING CONDITIONS --------------------- ; ---------- 10.5.1 Stop if there is complete alignement between leader and members------- if eq-stop[ ask leaders [ ask members [set disagreement-with-leader sum (map [[?1 ?2] -> disagreement ?1 ?2] orientation_m [orientation_l] of myself) ] ] set sum-disagreements sum (sentence[disagreement-with-leader] of members) if (sum-disagreements = 0) [stop] if turnover = "YES after equilibrium" [set turnover "YES" ]] ; ------------- 10.5.2 Stop in any case after #max-ticks units ------------------------ if ticks > #max-ticks [ set turnover "NO" stop ] ;-------------------------------------------------------------------------------------- tick end ; ===================================================================================== ; ================================ 11. SPECIFY RULES FOR ACTIONS ====================== ; ===================================================================================== ; ========================= 11.1 EVALUATION ACTIONS ================================== ; -------------------------------- 11.1.1 EVALUATE MEMBERS ---------------------------- ; -------------------------- Absolute evaluation made by the Customer---------------- ; ABSOLUTE EVALUATION: the KNOWLEDGE, as sum of agreements between beliefs and requisites ---- ; --- Note that the belief "I don't know" is evalutated as a disagreement --- ; --- This evaluation tell us the amount of effective knowledge of agents --- to calc-members-knowledge_fuzzy ask customers[ ask members[ set m-knowledge sum (map [[?1 ?2] -> ifelse-value (?1 = ?2) [1] [0]] [requisites] of myself (orientation_m))]] end to calc-members-score_fuzzy ask customers[ ask members[ set m-score sum (map [[?1 ?2] -> ?1 * ?2] [requisites] of myself (orientation_m))]] end ; ------------------------------- 11.1.2 EVALUATE THE LEADER --------------------------------- ; ---------------------------- Absolute evaluation made by the Customer_____________ ; ABSOLUTE EVALUATION: the KNOWLEDGE, as sum of agreements between beliefs and requisites ---- ; --- Note that the belief "I don't know" is evalutated as a disagreement --- ; --- This evaluation tell us the amount of effective knowledge of agents --- to calc-leaders-knowledge_fuzzy ask customers[ ask leaders [ set l-knowledge sum (map [[?1 ?2] -> ifelse-value (?1 = ?2) [1] [0]] [requisites] of myself (orientation_l)) ] ] end to calc-leaders-score_fuzzy ask customers[ ask leaders [ set l-score sum (map [[?1 ?2] -> ?1 * ?2] [requisites] of myself (orientation_l))]] end ; ---------------------------------- 11.2 SELECT THE ELITE ---------------------------------- ; ------------------------ 11.1.1 set members belonging to the elite -------------------------- to calc-elite-majority-beliefs_fuzzy set elite [ ] ask leaders [ ask members [ set superior-score false set color blue + 2 if (m-score >= ([l-score] of myself)) [set superior-score true set color red ] ]] ; -------------------------- 11.1.2 set elite dominant beliefs --------------------------- set elite members with [superior-score] ask elite[ set orientation_e n-values #dimensions [0] let a (map [[?1 ?2] -> ?1 + ?2] orientation_m orientation_e) set orientation_e (map [?1 -> ifelse-value (?1 > 0)[1][ifelse-value (?1 < 0)[-1][0]]] a) ] end ; ===================================================================================== ; ==================================== 12. DO TURNOVER ================================ ; ===================================================================================== to do_turnover_fuzzy ask members [ if (turnover-intensity > random-float 100) [ vector vector_r set color white ]] end ; ===================================================================================== ; ============================ 13. BELIEFS'S UPGRADING RULES ========================== ; ===================================================================================== to-report update-l-beliefs-fuzzy [LB POL_L POL_E inte] if (POL_E = POL_L) [report LB] if (POL_E = 0) [report LB] if leader-listening-ability% > random-float 100 [report inte] report LB end to-report update-m-beliefs-fuzzy [MB POL_M POL_L inte] ifelse ((POL_M = POL_L) or (POL_L = 0)) [report MB][ if (members-conformity-degree% > random-float 100)[ report inte]] report MB end to-report verso-sx [x] let r position x term_set ifelse r != false[ ifelse x = first term_set [report x] [report item (r - 1) term_set]][] report x end to-report verso-dx [x] let r position x term_set ifelse r != false[ ifelse x = last term_set [report x] [report item (r + 1) term_set]][] report x end @#$#@#$#@ GRAPHICS-WINDOW 467 18 993 545 -1 -1 8.222222222222221 1 10 1 1 1 0 1 1 1 -31 31 -31 31 0 0 1 ticks 30.0 BUTTON 137 496 209 529 NIL setup_crisp NIL 1 T OBSERVER NIL NIL NIL NIL 1 CHOOSER 29 195 121 240 landscape landscape "circles" "elevation" 0 SLIDER 29 265 198 298 leader-listening-ability% leader-listening-ability% 0 100 90.0 1 1 NIL HORIZONTAL BUTTON 138 531 200 564 NIL go_crisp T 1 T OBSERVER NIL NIL NIL NIL 1 SLIDER 29 301 228 334 members-conformity-degree% members-conformity-degree% 0 100 10.0 1 1 NIL HORIZONTAL BUTTON 137 566 224 599 go once_crisp go_crisp NIL 1 T OBSERVER NIL NIL NIL NIL 1 PLOT 1038 31 1394 231 Knowledge Evolution Time (ticks) % Knowledge 0.0 1.0 0.0 100.0 true true "" "" PENS "Leader" 1.0 0 -16777216 true "" "" "Members" 1.0 0 -10649926 true "" "" "Elite" 1.0 0 -2674135 true "" "" TEXTBOX 1038 561 1188 593 Knowledge \naverage % 13 0.0 1 PLOT 1039 233 1394 399 Score Evolution Time (ticks) Score % 0.0 1.0 0.0 1.0 true true "" "" PENS "Leader" 1.0 0 -16777216 true "" "" "Members" 1.0 0 -10649926 true "" "" "Elite" 1.0 0 -2674135 true "" "" "ambiguity" 1.0 0 -8630108 true "" "" MONITOR 1114 557 1184 602 Members %mean-m-knowledge 1 1 11 MONITOR 1201 558 1258 603 Elite %mean-e-knowledge 1 1 11 MONITOR 1272 558 1329 603 Leader %l-knowledge 1 1 11 TEXTBOX 1041 618 1191 650 Score \naverage % 13 0.0 1 MONITOR 1114 612 1184 657 Members %mean-m-score 1 1 11 MONITOR 1201 613 1260 658 Elite %mean-e-score 1 1 11 MONITOR 1274 612 1331 657 Leader %l-score 1 1 11 MONITOR 1348 558 1405 603 ticks ticks 0 1 11 MONITOR 1349 612 1406 657 elite % ((count elite) / (count members)) * 100 2 1 11 SLIDER 28 55 200 88 #dimensions #dimensions 0 30 30.0 1 1 NIL HORIZONTAL SLIDER 255 60 389 93 #members #members 0 50 50.0 1 1 NIL HORIZONTAL SLIDER 28 125 159 158 turbulence-degree turbulence-degree 0 100 0.0 1 1 NIL HORIZONTAL SWITCH 29 90 159 123 turbulence? turbulence? 1 1 -1000 TEXTBOX 1039 10 1253 48 PLOTS AND MONITORS 15 14.0 1 INPUTBOX 139 364 218 424 #max-ticks 200.0 1 0 Number SWITCH 28 364 134 397 eq-stop eq-stop 0 1 -1000 CHOOSER 254 242 392 287 Evaluator Evaluator "Customer" "Leader" 0 PLOT 1039 400 1395 550 % Elite NIL NIL 0.0 10.0 0.0 10.0 true false "" "" PENS "default" 1.0 0 -16777216 true "" "plot ((count elite) / (count members)) * 100" CHOOSER 255 96 390 141 turnover turnover "NO" "YES" "YES after equilibrium" 0 SLIDER 255 143 391 176 turnover-intensity turnover-intensity 0 100 0.0 1 1 NIL HORIZONTAL SLIDER 255 179 430 212 turnover-frequency-prob turnover-frequency-prob 0 100 0.0 1 1 NIL HORIZONTAL BUTTON 272 531 336 564 go_fuzzy go_fuzzy T 1 T OBSERVER NIL NIL NIL NIL 1 BUTTON 263 494 369 529 setup_fuzzy setup_fuzzy NIL 1 T OBSERVER NIL NIL NIL NIL 1 SWITCH 256 315 359 348 Fuzzy Fuzzy 1 1 -1000 CHOOSER 272 372 410 417 Cardinality Cardinality 3 5 7 2 BUTTON 251 566 337 599 go once_fuzzy go_fuzzy NIL 1 T OBSERVER NIL NIL NIL NIL 1 SLIDER 28 160 160 193 turbulence_span turbulence_span 0 #max-ticks 0.0 1 1 NIL HORIZONTAL TEXTBOX 235 32 258 439 |\n|\n|\n|\n|\n|\n|\n|\n|\n|\n|\n|\n|\n|\n|\n|\n|\n|\n|\n|\n|\n|\n|\n|\n|\n|\n|\n|\n|\n|\n|\n|\n|\n|\n|\n|\n|\n|\n|\n| 13 14.0 1 TEXTBOX 234 463 250 618 |\n|\n|\n|\n|\n|\n 21 0.0 1 TEXTBOX 134 449 407 481 7) Choose CRISP or FUZZY modality 11 0.0 1 TEXTBOX 161 471 198 489 CRISP 11 105.0 1 TEXTBOX 282 470 330 488 FUZZY 11 13.0 1 TEXTBOX 138 463 349 490 --------- 40 0.0 1 TEXTBOX 29 39 249 67 1) Set the Environmental Parameters 11 0.0 1 TEXTBOX 249 40 474 68 4) Set the Organizational Parameters 11 0.0 1 TEXTBOX 252 220 402 238 5) Choose the Evaluator 11 0.0 1 TEXTBOX 252 294 454 322 6) Choose Crisp or Fuzzy modality 11 0.0 1 TEXTBOX 268 351 418 369 6.1) Set Fuzzy Parameters 11 0.0 1 TEXTBOX 190 12 340 30 SETTING PHASE 11 0.0 1 TEXTBOX 8 10 456 33 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 20 14.0 1 TEXTBOX 31 247 204 275 2) Set the Learning Parameters 11 0.0 1 TEXTBOX 32 343 206 371 3) Choose the Stop Condition 11 0.0 1 TEXTBOX 1 419 456 447 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 20 14.0 1 TEXTBOX 449 29 464 440 |\n|\n|\n|\n|\n|\n|\n|\n|\n|\n|\n|\n|\n|\n|\n|\n|\n|\n|\n|\n|\n|\n|\n|\n|\n|\n|\n|\n|\n|\n|\n|\n|\n|\n|\n|\n|\n|\n|\n| 13 14.0 1 TEXTBOX 3 29 18 442 |\n|\n|\n|\n|\n|\n|\n|\n|\n|\n|\n|\n|\n|\n|\n|\n|\n|\n|\n|\n|\n|\n|\n|\n|\n|\n|\n|\n|\n|\n|\n|\n|\n|\n|\n|\n|\n|\n|\n| 13 14.0 1 @#$#@#$#@ ## WHAT IS IT? CLOD (Computational Laboratory of Organizational Design) is a virtual laboratory of organizational design based on the March model on exploration and exploitation in organizational learning (1991) . The object of this work is verify in which environmental conditions a cognitive system capable of managing vague descriptions of reality is more effective than a formal system which instead provides precise descriptions. The hypothesis, certainly not original, is that under conditions of high turbulence, a vague description of the environment allowed by natural language gives rise to more effective performance than a precise description. The contribution of the laboratory would be twofold: firstly, the cellular automata model of March is transposed in an agent-based environment and then extended to be used as a virtual lab supporting organizational design; secondly, a fuzzy version of the model is proposed in order to analyse, through generative experiments, the differences between crispy and fuzzy organizational learning approaches to environmental complexity. ## HOW IT WORKS In the CLOD the main agents are the environment and the organization. The external environment is an unique agent, called "customer". While the organization is represented as a hierarchy of three levels. At the bottom, there is a class of agents called “members”. At the second layer, there is a subset of best performers among members, called “Elite”. Finally, at the top layer, there is the “leader”. The leader is responsible to deliver the organizational answer to the customer, who expresses her/his needs through a string of 30 binomial choices (YES/NOT), randomlly assigned by 1 and -1. Both members (Elite included) and the leader represent their beliefs about customer’s requisites through a string of 30 elements. In particular, beliefs of organizational actors could be each equal to 1, -1 or 0. Where, the value 0 in one of the dimensions of the vector representing an organizational actor means that she/he is not able to express any belief on the corresponding dimension of the customer representative vector. The objective of the organization in the CLOD is the achievement of the maximum level of agreement between customer's needs and the answer the organization produces to meet customer requisites. In this kind of framework, the performances of the organization are evaluated by the customer and are measured in terms of fitness between the vector of customer's needs and the vector representing the answer of the organization (the vector of leader's beliefs). In order to figure out the customers needs two types of mechanisms partially resume the learning mechanisms of March’s model, contribute to spread the knowledge throughout the organization. On the one hand, there is a top-down learning based upon the principle of conformity: the knowledge of each member of the organization is compared with that of the leader; members beliefs change according to those of the leader with a probability called Members-conformity-degree%. At the same time, best performing members (valuated on a Score defyned later) are selected as belonging to the Elite. Just Elite members can interacts with the leader through an additional learning mechanism: the disagreement between beliefs of the majority of the Elite and those of the leader leads to a modification of the latter with a different probability named Leader-listening-ability%. According to the March’s model, if leader differs from the Elite view on a single dimension, the probability that it will be unchanged is (1-(Leader-listening-ability% )/100)k , where k (k > 0) is the number of members (within the Elite) that share the leader beliefs minus the number who do not. The probability that the beliefs of leader (on any particular dimension) will be adjusted to conform to the majority beliefs of the Elite depends not only on his ability to listen, but also on the level of agreement among the Elite members. Over time, the leader affects the beliefs of its organizational members, even while the leader itself is being affected by the beliefs of those members. Through these two mechanisms, the leaders and the members become more homogenous and converge over time to a stable equilibrium. The organizational performances are evaluated depends on the agreement between members or leader beliefs and customer’s requisites. All members and the leader are aware of their overall fitness represented in term of Score. The Score is given by the number of beliefs that match customer’s requisites minus the number of disagreements, normalized on the number of dimensions. A different concept is that of Knowledge. The Knowledge is measured at any time as the proportion of customer’s requisites correctly represented in the beliefs of leader and on average in members’ beliefs. Neither the members nor the leader have any information of customers' requisites. In this context, both leader and the members can reproduce false beliefs in their processes of exploration and exploitation. Therefore, the Score produces an assessment of performances that takes into account both accordance and disagreements of beliefs with customer’s requisites; the Knowledge is an external performance measure and has been conceived as normalized Hamming’s distance between beliefs of members and of the leader from customer’s requests. Moreover, the model provides that the environment could be characterized by a certain level of turbulence, which is implemented as the probability of changes of customer's needs, happening according to a probability named turbulence-degree. The turbulence represents the complexity of the environment, in terms of intensity of surprises coming from technology, regulations, and markets. The turbulence is modeled through a change of the customer requisites that happens according to a probability named turbulence-degree. Additionally, it is possible to define the frequency of turbulence and the life span of this phenomenon: two parameters are introduced named respectively Turbulence_span and Stability_span, corresponding to two sliders in the NetLogo interface.The Turbulence_span is expressed in number of ticks and represents the length of the period in which the customer vector could be affected by the turbulence. Conversely, the Stability_span represents the number of time periods in which the external environment can be considered stable. By setting the values of Turbulence_span and of Stability_span, it is possible to define the frequency of periods of turbulence and their impact in terms of time. Furthermore, the complexity of external environment is taken into account. In our proposal, the number of dimensions characterizing the customer’s needs is a parameter that can be modified through a slider in the lab interface. Increasing the size of customer requirements’ vector simulates a more demanding market. Accordingly, the increase in customer dimensions implies a corresponding increase in the number of leader and members vector dimensions. ## HOW TO USE IT The interface of CLOD lab consists of buttons, sliders, choosers and other output displays elements. Each of these elements permits to start a procedure or to set the value of a variable in order to define specific experimental sets. On the center of the user interface there is a window in which the “world” of the model is made visible. The simulation environment is represented by concentric circles of different radius (growing radius implies gradually decreasing in knowledge of members and of the leader). At the center of these circles there is the customer whose position is stable during simulation time. At the set-up each agent (members and leader) is located in the space at a certain distance from the center according to its level of knowledge. Once the simulation is started, learning and organizational processes allow members and leader to learn and change their beliefs seeking to move closer to customer requirements. To start the simulation, therefore, it is necessary to define ininterface: 1) environmental parameters 2) learning parameters 3) choose the simulation stop conditions 4) organizational parameters 5) choose the evaluator 6) choose the extension Finally throught the buttons of Setup and Go the simulation runs. According to the March model the simulation ends when an equilibrium is reached (all members and the leader share the same belief with respect to each dimension (March, 1991)). In the CLOD it is also possible to set a maximum number of ticks as a stop condition. ## THE FUZZY EXTENTION In the Fuzzy extention: 1. The concept of stratified organization on three levels remains unchanged in this extension. There is a group of organizational members, one leader and one sub-group of members called Elite. 2. There is a customer to which it is assigned a vector with the same characteristics described for the Crisp CLOD Laboratory. 3. Members estimate the reality dimensions through fuzzy beliefs represented through the dual truth model (for an extensive presentation of the dual truth model see Iandoli and Zollo, 2008). Each member tries to forecast which is the value of each dimension of the customer’s requisites vector (Requisites(i)). The jth member’s guesses are represented by dual fuzzy beliefs (lvij, rvij) where lvij and rvij are computed as follows.: lvij = (c + 2 – p)/(c + 2) rvij = (p + 1) / (c + 2) where c is the cardinality of the term set, p is the position of the term in the term set starting from the lowest term. So to the jth member is computationally represented by two arrays LVj and RVj , of length #dimensions, containing, respectively, the left and the right values of the truth couples. This is the major difference between the fuzzy extension of CLOD and the crisp one. In the crisp CLOD model, as in March, members’ guesses are represented by binary beliefs, i.e. an agent bets that the ith event will either occur or not. In the fuzzy extension, the guess about the occurrence of the ith event can be described by sentences like “I am pretty confident that the event will occur” or “I am not very sure this event will occur”, etc. At each tick, members can modify their beliefs about customers’ requisites through the conformity process (learning form the leader with probability equal to the member-conformity-degree%, except when the label “I don’t know” appears ) as we describe at point 9. 4. Also the leader is represented by a couple of two vectors of #dimensions elements lv_l and rv_l, containing, respectively, the left and the right values of the truth couples. This leader will represent the organizational knowledge about the customer and will be determined by aggregating the beliefs of the members as described below; 5. We define for each member and for the leader a new vector called respectively orientation_m and orientation_l. These vectors define the orientation of members’ and leader’s beliefs. This is one of main conceptual and computational differences of the present extension of the March’s model and that proposed in the paper of Iandoli et al of 2009. In particular, considering the jth member, if his left value on the ith element of the customer vector is lvij > rvij (lvij < rvij ), the ith element of orientation vector of the member will be -1 (1). Only when lvij = rvij ,the ith element of the orientation vector will be 0. 6. Orientation vectors are used to compute the scores of the members and of the leader. In fact, the scores are calculated taking into account the agreements and the disagreements between orientation vectors and the customer’s requisites vector. This mechanism is used to model the aggregation of preferences and beliefs of the agents and represents an additional important improvement of the previous fuzzy extension of Iandoli et al. (2009). 7. Furthermore, members' orientation vectors are used to calculate the majority of elite's beliefs. In fact, to build the majority vector of the elite beliefs, the fuzzy code uses the orientation vectors of the members by counting the majority of 1 or -1 inside them for each dimension. This means that the majority concept is not based on a close convergence about a belief (represented by a truth couple), but instead on the same orientation (left or right) on that belief. This mechanism can be conceived as a sort of voting mechanism. 8. The values of truth couples depend on the cardinality of the chosen term set. The cardinality indicates the degree of precision with which the agents express their judgments (increasing cardinality corresponds to fine grained belief). 9. The learning mechanisms of members and leader have been also amended with respect to the crisp and to the previous fuzzy version. Assuming a disagreement between leader's orientation vector and a member's orientation vector on the ith dimension, the latter will change its dimension with probability member-conformity-degree%. The member will change its couple values (lvij , rvij) moving towards his closest fuzzy function in the direction of leader orientation. The same happens when the leader learns from the Elite. This mechanism implies that learning itself is slow and gradual and that, while agents move in the direction of a new orientation, they continue in maintaining their differences in perceiving external reality. 10. The equilibrium is reached and the simulation stops when the orientation vectors of members and of the leader are characterized by the same values. @#$#@#$#@ default true 0 Polygon -7500403 true true 150 5 40 250 150 205 260 250 airplane true 0 Polygon -7500403 true true 150 0 135 15 120 60 120 105 15 165 15 195 120 180 135 240 105 270 120 285 150 270 180 285 210 270 165 240 180 180 285 195 285 165 180 105 180 60 165 15 arrow true 0 Polygon -7500403 true true 150 0 0 150 105 150 105 293 195 293 195 150 300 150 box false 0 Polygon -7500403 true true 150 285 285 225 285 75 150 135 Polygon -7500403 true true 150 135 15 75 150 15 285 75 Polygon -7500403 true true 15 75 15 225 150 285 150 135 Line -16777216 false 150 285 150 135 Line -16777216 false 150 135 15 75 Line -16777216 false 150 135 285 75 bug true 0 Circle -7500403 true true 96 182 108 Circle -7500403 true true 110 127 80 Circle -7500403 true true 110 75 80 Line -7500403 true 150 100 80 30 Line -7500403 true 150 100 220 30 butterfly true 0 Polygon -7500403 true true 150 165 209 199 225 225 225 255 195 270 165 255 150 240 Polygon -7500403 true true 150 165 89 198 75 225 75 255 105 270 135 255 150 240 Polygon -7500403 true true 139 148 100 105 55 90 25 90 10 105 10 135 25 180 40 195 85 194 139 163 Polygon -7500403 true true 162 150 200 105 245 90 275 90 290 105 290 135 275 180 260 195 215 195 162 165 Polygon -16777216 true false 150 255 135 225 120 150 135 120 150 105 165 120 180 150 165 225 Circle -16777216 true false 135 90 30 Line -16777216 false 150 105 195 60 Line -16777216 false 150 105 105 60 car false 0 Polygon -7500403 true true 300 180 279 164 261 144 240 135 226 132 213 106 203 84 185 63 159 50 135 50 75 60 0 150 0 165 0 225 300 225 300 180 Circle -16777216 true false 180 180 90 Circle -16777216 true false 30 180 90 Polygon -16777216 true false 162 80 132 78 134 135 209 135 194 105 189 96 180 89 Circle -7500403 true true 47 195 58 Circle -7500403 true true 195 195 58 circle false 0 Circle -7500403 true true 0 0 300 circle 2 false 0 Circle -7500403 true true 0 0 300 Circle -16777216 true false 30 30 240 cow false 0 Polygon -7500403 true true 200 193 197 249 179 249 177 196 166 187 140 189 93 191 78 179 72 211 49 209 48 181 37 149 25 120 25 89 45 72 103 84 179 75 198 76 252 64 272 81 293 103 285 121 255 121 242 118 224 167 Polygon -7500403 true true 73 210 86 251 62 249 48 208 Polygon -7500403 true true 25 114 16 195 9 204 23 213 25 200 39 123 cylinder false 0 Circle -7500403 true true 0 0 300 dot false 0 Circle -7500403 true true 90 90 120 face happy false 0 Circle -7500403 true true 8 8 285 Circle -16777216 true false 60 75 60 Circle -16777216 true false 180 75 60 Polygon -16777216 true false 150 255 90 239 62 213 47 191 67 179 90 203 109 218 150 225 192 218 210 203 227 181 251 194 236 217 212 240 face neutral false 0 Circle -7500403 true true 8 7 285 Circle -16777216 true false 60 75 60 Circle -16777216 true false 180 75 60 Rectangle -16777216 true false 60 195 240 225 face sad false 0 Circle -7500403 true true 8 8 285 Circle -16777216 true false 60 75 60 Circle -16777216 true false 180 75 60 Polygon -16777216 true false 150 168 90 184 62 210 47 232 67 244 90 220 109 205 150 198 192 205 210 220 227 242 251 229 236 206 212 183 fish false 0 Polygon -1 true false 44 131 21 87 15 86 0 120 15 150 0 180 13 214 20 212 45 166 Polygon -1 true false 135 195 119 235 95 218 76 210 46 204 60 165 Polygon -1 true false 75 45 83 77 71 103 86 114 166 78 135 60 Polygon -7500403 true true 30 136 151 77 226 81 280 119 292 146 292 160 287 170 270 195 195 210 151 212 30 166 Circle -16777216 true false 215 106 30 flag false 0 Rectangle -7500403 true true 60 15 75 300 Polygon -7500403 true true 90 150 270 90 90 30 Line -7500403 true 75 135 90 135 Line -7500403 true 75 45 90 45 flower false 0 Polygon -10899396 true false 135 120 165 165 180 210 180 240 150 300 165 300 195 240 195 195 165 135 Circle -7500403 true true 85 132 38 Circle -7500403 true true 130 147 38 Circle -7500403 true true 192 85 38 Circle -7500403 true true 85 40 38 Circle -7500403 true true 177 40 38 Circle -7500403 true true 177 132 38 Circle -7500403 true true 70 85 38 Circle -7500403 true true 130 25 38 Circle -7500403 true true 96 51 108 Circle -16777216 true false 113 68 74 Polygon -10899396 true false 189 233 219 188 249 173 279 188 234 218 Polygon -10899396 true false 180 255 150 210 105 210 75 240 135 240 house false 0 Rectangle -7500403 true true 45 120 255 285 Rectangle -16777216 true false 120 210 180 285 Polygon -7500403 true true 15 120 150 15 285 120 Line -16777216 false 30 120 270 120 leaf false 0 Polygon -7500403 true true 150 210 135 195 120 210 60 210 30 195 60 180 60 165 15 135 30 120 15 105 40 104 45 90 60 90 90 105 105 120 120 120 105 60 120 60 135 30 150 15 165 30 180 60 195 60 180 120 195 120 210 105 240 90 255 90 263 104 285 105 270 120 285 135 240 165 240 180 270 195 240 210 180 210 165 195 Polygon -7500403 true true 135 195 135 240 120 255 105 255 105 285 135 285 165 240 165 195 line true 0 Line -7500403 true 150 0 150 300 line half true 0 Line -7500403 true 150 0 150 150 pentagon false 0 Polygon -7500403 true true 150 15 15 120 60 285 240 285 285 120 person false 0 Circle -7500403 true true 110 5 80 Polygon -7500403 true true 105 90 120 195 90 285 105 300 135 300 150 225 165 300 195 300 210 285 180 195 195 90 Rectangle -7500403 true true 127 79 172 94 Polygon -7500403 true true 195 90 240 150 225 180 165 105 Polygon -7500403 true true 105 90 60 150 75 180 135 105 plant false 0 Rectangle -7500403 true true 135 90 165 300 Polygon -7500403 true true 135 255 90 210 45 195 75 255 135 285 Polygon -7500403 true true 165 255 210 210 255 195 225 255 165 285 Polygon -7500403 true true 135 180 90 135 45 120 75 180 135 210 Polygon -7500403 true true 165 180 165 210 225 180 255 120 210 135 Polygon -7500403 true true 135 105 90 60 45 45 75 105 135 135 Polygon -7500403 true true 165 105 165 135 225 105 255 45 210 60 Polygon -7500403 true true 135 90 120 45 150 15 180 45 165 90 sheep false 15 Circle -1 true true 203 65 88 Circle -1 true true 70 65 162 Circle -1 true true 150 105 120 Polygon -7500403 true false 218 120 240 165 255 165 278 120 Circle -7500403 true false 214 72 67 Rectangle -1 true true 164 223 179 298 Polygon -1 true true 45 285 30 285 30 240 15 195 45 210 Circle -1 true true 3 83 150 Rectangle -1 true true 65 221 80 296 Polygon -1 true true 195 285 210 285 210 240 240 210 195 210 Polygon -7500403 true false 276 85 285 105 302 99 294 83 Polygon -7500403 true false 219 85 210 105 193 99 201 83 square false 0 Rectangle -7500403 true true 30 30 270 270 square 2 false 0 Rectangle -7500403 true true 30 30 270 270 Rectangle -16777216 true false 60 60 240 240 star false 0 Polygon -7500403 true true 151 1 185 108 298 108 207 175 242 282 151 216 59 282 94 175 3 108 116 108 target false 0 Circle -7500403 true true 0 0 300 Circle -16777216 true false 30 30 240 Circle -7500403 true true 60 60 180 Circle -16777216 true false 90 90 120 Circle -7500403 true true 120 120 60 tree false 0 Circle -7500403 true true 118 3 94 Rectangle -6459832 true false 120 195 180 300 Circle -7500403 true true 65 21 108 Circle -7500403 true true 116 41 127 Circle -7500403 true true 45 90 120 Circle -7500403 true true 104 74 152 triangle false 0 Polygon -7500403 true true 150 30 15 255 285 255 triangle 2 false 0 Polygon -7500403 true true 150 30 15 255 285 255 Polygon -16777216 true false 151 99 225 223 75 224 truck false 0 Rectangle -7500403 true true 4 45 195 187 Polygon -7500403 true true 296 193 296 150 259 134 244 104 208 104 207 194 Rectangle -1 true false 195 60 195 105 Polygon -16777216 true false 238 112 252 141 219 141 218 112 Circle -16777216 true false 234 174 42 Rectangle -7500403 true true 181 185 214 194 Circle -16777216 true false 144 174 42 Circle -16777216 true false 24 174 42 Circle -7500403 false true 24 174 42 Circle -7500403 false true 144 174 42 Circle -7500403 false true 234 174 42 turtle true 0 Polygon -10899396 true false 215 204 240 233 246 254 228 266 215 252 193 210 Polygon -10899396 true false 195 90 225 75 245 75 260 89 269 108 261 124 240 105 225 105 210 105 Polygon -10899396 true false 105 90 75 75 55 75 40 89 31 108 39 124 60 105 75 105 90 105 Polygon -10899396 true false 132 85 134 64 107 51 108 17 150 2 192 18 192 52 169 65 172 87 Polygon -10899396 true false 85 204 60 233 54 254 72 266 85 252 107 210 Polygon -7500403 true true 119 75 179 75 209 101 224 135 220 225 175 261 128 261 81 224 74 135 88 99 wheel false 0 Circle -7500403 true true 3 3 294 Circle -16777216 true false 30 30 240 Line -7500403 true 150 285 150 15 Line -7500403 true 15 150 285 150 Circle -7500403 true true 120 120 60 Line -7500403 true 216 40 79 269 Line -7500403 true 40 84 269 221 Line -7500403 true 40 216 269 79 Line -7500403 true 84 40 221 269 wolf false 0 Polygon -16777216 true false 253 133 245 131 245 133 Polygon -7500403 true true 2 194 13 197 30 191 38 193 38 205 20 226 20 257 27 265 38 266 40 260 31 253 31 230 60 206 68 198 75 209 66 228 65 243 82 261 84 268 100 267 103 261 77 239 79 231 100 207 98 196 119 201 143 202 160 195 166 210 172 213 173 238 167 251 160 248 154 265 169 264 178 247 186 240 198 260 200 271 217 271 219 262 207 258 195 230 192 198 210 184 227 164 242 144 259 145 284 151 277 141 293 140 299 134 297 127 273 119 270 105 Polygon -7500403 true true -1 195 14 180 36 166 40 153 53 140 82 131 134 133 159 126 188 115 227 108 236 102 238 98 268 86 269 92 281 87 269 103 269 113 x false 0 Polygon -7500403 true true 270 75 225 30 30 225 75 270 Polygon -7500403 true true 30 75 75 30 270 225 225 270 @#$#@#$#@ NetLogo 6.1.1 @#$#@#$#@ @#$#@#$#@ @#$#@#$#@ setup_crisp go_crisp %l-knowledge setup_crisp go_crisp %l-knowledge setup_crisp go_crisp %l-knowledge setup_crisp go_crisp %l-knowledge setup_crisp go_crisp %l-knowledge setup_crisp go_crisp %l-knowledge @#$#@#$#@ @#$#@#$#@ default 0.0 -0.2 0 0.0 1.0 0.0 1 1.0 0.0 0.2 0 0.0 1.0 link direction true 0 Line -7500403 true 150 150 90 180 Line -7500403 true 150 150 210 180 @#$#@#$#@ 0 @#$#@#$#@