;============================================================================================================================================= ;********************************************************* MIMICS v-CSI ******************************************************** ;============================================================================================================================================= ; Modelling Inferential Minds In Conceptual Space ; (previous version v2.0) ;REMEMBER = Relational Equivalence Model EMBodying External Reality (modelo de equivalencia relacional que incorpora la realidad externa) ;__includes ["C:/Users/Carlos/Documents/Proyecto UAI/MIMICS/remember-CAT2.nls"] ;¡¡¡ WARNING: use the same string to set "nls" in "setup" procedure !!! extensions [array table] breed [agents agent] directed-link-breed [connections connection] globals [Ev Erel S1 S2 K1 K2 u pa1 pa2 d-prob Dstd1 Dstd2 Dstd-W Dstd-T state status COI cw IM-var-list nls cross-step stdv-rpmC1 stdv-rpmC2 rpm-C1 rpm-C2 RMSE-rpm stdv-spC1 stdv-spC2 SP-C1 SP-C2 inVar1 inVar2 RMSE-SP list-GEO op ak know IM-var U-Var pre-zoom leader w listW ; DEFINING GLOBALS VARIABLES FOR THIS VERSION ----------------------------------------------------------------------------------------- IC DL PAC decision-type std-W std-T IM-decision-type PV AVS zoom ; DEFINING GLOBALS VARIABLES FOR THIS VERSION ----------------------------------------------------------------------------------------- ] ; Ev = índice del Valor Evidencial de pj en el concepto dado (se fija en 3) ; Erel = índice del valor Evidencial relativo de pj en el concepto dado (se fija en 4) ; S1 S2 K1 K2 u pa1 pa2: se explican según CAT. Excepción: pa1 y pa2 son la lista de los últimos std-W valores de C1 ; d-prob = direct probabilities ; Dstd = desviación estándar de distribución en C1 y C2 (distribution standard deviation) ; Dstd-W = ventana para el cálculo de Dstd ; ticks = número de veces en que todos los agentes han sido observador ; state = contiene el estado de los parámetros Cat en el ciclo vigente de ambos conceptos ; status = contiene el estado de los parámetros Cat en el ciclo vigente del Concepto 1 o 2, segun C? ; COI = Cases of Interest ; cw = variable para vigilar los ciclos y detectar los COI (Cycle Watcher) ; ds = decimal separator ; w = variable comodín (wildcard variable) ; listW = lista comodín ; rpm = rate of property mapping agents-own [Cj CN LP IM pj req ans result obs actor obs-done my-s1 my-s2 EO C1-f C1-d C2-f C2-d C1-SP C2-SP DeltaSP Sd Sf DSP DLP prob-counter Affinity-d Affinity-f Affinity-p Affinity-h my-s01 U-status] ; Cj = Arreglo de conceptos (0 / 1) ; CN = Nombre del concepto Cj (0 / 1) ; LP = Probabilidad de seleccionar modo aprendizaje (inicia en 1) ; IM = Modo de interacción (Learning / Agreement, inicia en L) ; pj = índice de la propiedad para acuerdo o aprendizaje (Agreement or Learning) ; req = requerimiento según IM: par (Concepto, pj) para IM = L / N° conceptos (P), para IM = A ; ans = respuesta al requerimiento según IM: pj (Agreement), S/N (Learning) ; result = resultado de la interaccion (inicia en -1): ; Interacción: sin resultado = -1, no exitosa = 0, exitosa = 1, aprendizaje autodidacta = 2 ; obs = identificación del agente que caracteriza a un observador en una interacción dada (inicia []) ; actor = identificación del agente que caracteriza a un actor en una interacción dada (inicia []) ; obs-done = indica si el agente ha actuado (1) o no (0) como observador (inicia en 0) ; my-s1 = lista de las propiedades pj pertenecientes a C1 que los agentes actualizan en cada interacción ; my-s2 = lista de las propiedades pj pertenecientes a C2 que los agentes actualizan en cada interacción ; EO = tabla con el orden de ingreso de propiedades nuevas (order entry) ; C1-f, C2-f = tabla de frecuencias de cada propiedad en cada concepto ; (f = número de veces que la propiedad pj ha estado presente en una interacción con el concepto dado) ; C1-d, C2-d = tabla de discriminadores de cada propiedad en cada concepto ; (d = discriminador del número de interacciones exitosas obtenidas con la propiedad pj en el concepto dado) ; C1-SP, C2-SP = tabla de la probabilidad de éxito de cada propiedad en cada concepto ; (SP = d / f) ; DeltaSP = Diferencial absoluto de las SP de las propiedades (DeltaSP = |C1-SP - C2-SP| ; Sd = suma global de discriminadores (Sd = C1-d + C2-d) ; Sf = suma global de frecuencias (Sf = C1-f + C2-f) ; DSP = probabilidad de éxito de la distribución (distributional success probability = Sd / Sf) ; DLP = probabilidad de aprendizaje de discriminación ; (Discrimination Learning Probability) = 1 - mean-of-table DeltaSP ; prob-counter = probabilitiy counter table ; fcom = número de interacciones de comunicaión ; op = offside properties ;============================================================================================================================================= to setup clear-all ; set nls "C:/Users/Carlos/Documents/Proyecto UAI/MIMICS/remember-CAT2.nls" ; set REMEMBER_data-file "" ; if fixed-seed [random-seed seed] ;las constantes Ev y Erel se fijan de modo que correspondan a los índices en el arreglo de variables de cada agente set Ev 0 set Erel 1 set pa1 [] set pa2 [] set Dstd1 [] set Dstd2 [] set Dstd-W 0 set zoom 1 set pre-zoom 1 set leader [];para control de la simulación set COI [] set cw 0 set IM-var-list [] ;Cycles of Interest & Cycle Watcher set w 0 set listW [] ;Wildcards ; SETTING GLOBALS VARIABLES FOR THIS VERSION ------------------------------------------------------------------------------------------------- set IC 1 set DL 0.05 set PAC "Success probability" set decision-type "random sorted by DLP" set std-W 3000 set std-T 0.001 set IM-decision-type "Success Probability" set PV "Avg-SP" no-display ; SETTING GLOBALS VARIABLES FOR THIS VERSION ------------------------------------------------------------------------------------------------- create-agents N [;Para cada agente crea un arreglo de datos: Cj[CN[f,d,DP,Ev,Erel]] con CN = [0 1]. set Cj array:from-list list 0 1 array:set Cj 0 array:from-list list array:from-list n-values P [Ev] array:from-list n-values P [Erel - 1] array:set Cj 1 array:from-list list array:from-list n-values P [Ev] array:from-list n-values P [Erel - 1] ;Inicializa variables de control y listas de propiedades de cada agente set result (- 1) set obs [] set actor [] set obs-done 0 set my-s1 [] set my-s2 [] set LP 1 set IM [] ;Tablas de evaluación de propiedades conocidas set EO table:make set C1-f table:make set C1-d table:make set C2-f table:make set C2-d table:make set C1-SP table:make set C2-SP table:make set DeltaSP table:make set prob-counter table:make set my-s01 table:make set Affinity-d table:make set Affinity-f table:make set Affinity-p table:make set Affinity-h table:make foreach n-values N [?] [table:put Affinity-d ? 0 table:put Affinity-f ? 0 table:put Affinity-p ? 0 table:put Affinity-h ? 0] table:put prob-counter "a1-0" 0 table:put prob-counter "a2-0" 0 table:put prob-counter "a1-1" 0 table:put prob-counter "a2-1" 0 table:put prob-counter "f-a1-0" 0 table:put prob-counter "f-a2-0" 0 table:put prob-counter "f-a1-1" 0 table:put prob-counter "f-a2-1" 0 set Dstd-W std-W set Sd 0 set Sf 0 set DSP 0 set DLP 0 set U-status table:make table:put U-status "s1" 0 table:put U-status "s2" 0 table:put U-status "s1-or-s2" 0 ] ;Tabla con los parámetros CAT que caracterizan el estado resultante de las interacciones set op n-values P [?] set IM-var n-values N [?] set ak 0 set know [] set state table:make table:put state "step" [] table:put state "S1" [0] table:put state "K1" [0] table:put state "S2" [0] table:put state "K2" [0] table:put state "u" [0] table:put state "pa1-C1" [] table:put state "pa2-C1" [] table:put state "pa1-C2" [] table:put state "pa2-C2" [] set d-prob table:make table:put d-prob "p.a1-0" 0 table:put d-prob "p.a1-1" 0 table:put d-prob "p.a2-0" 0 table:put d-prob "p.a2-1" 0 set U-Var table:make table:put U-Var "s1" 0 table:put U-Var "s2" 0 table:put U-Var "s1-or-s2" 0 ; just for fun layout-circle sort agents (world-width + 1) / 3 set AVS 0.5 ask agents [set color white facexy 0 0 set size round (AVS * (world-width + 1) / N)] ; ask agents [ask patch-here [set plabel [who] of myself] home] end ;============================================================================================================================================= ;********************************************* Procedure GO-WITH-LINKS *********************************************************************** to go-with-links ;En conjunto con Procedure CONNECT: alternativa específica para corridas con enlaces ;Produce las interacciones. Cada iteración incluye una o más interacciones (depende de IC) hasta cumplir un ciclo. ;Cada interacción está compuesta de: conexión, pre-transacción, transacción, pos-transacción y fin de la interacción. ;Un ciclo se cumple cuando todos los agentes han actuado como obs. ;Conexión ;Selecciona al azar IC agentes como obs y los conecta con actores creando enlaces obs-actor ask-concurrent n-of IC agents with [obs-done = 0] [set obs who connect] ;Pre-transacción ;Agentes conectados seleccionan concepto (CN), propiedad (pj) y modo de interacción (IM) ask-concurrent agents with [obs = who] [pre-transaction] ;Agente "actor" ejecuta "pre-transaction" de acuerdo a los resultados de obs en "pre-transaction" ask-concurrent agents with [actor = who] [pre-transaction] ;Transacción ;Agentes conectados intercambian información ;Además, agente actor ejecuta "pos-transaction", en caso de aprendizaje autodidácta (result = 2) durante "pre-transaction" transaction ; "connections" agents synchronizing information transactions ;Pos-transacción ;Agentes obs actualizan y evalúan parámetros de decisión, según resultado de la transacción de información ask-concurrent agents with [obs = who] [pos-transaction] ;ask-concurrent agents with [my-connections = 1] [pos-transaction] ;Fin de la interacción ;Reinicia identificadores de enlace y la conexión se destruye ask-concurrent connections [ask both-ends [set obs [] set actor []] die] ;Si todos los agentes ya han sido observador (ciclo cumplido), produce las salidas CAT requeridas ;(S1, K1, S2, K2, u, pa1 y pa2), las grafica y reinicia obs-done para un nuevo ciclo. if all? agents [obs-done = 1] [ let akt 0 if is-string? op and is-number? ak [set ak ifelse-value (ak = N) ["All"] [count agents with [table:length EO = P]] set akt ticks] if akt > 0 [set know (word ak " agents know all at: " (ticks - 1) " | ")] tick do-plots ask agents [set obs-done 0] if (pre-zoom < zoom) [ask agents [bk zoom] set pre-zoom zoom] if (pre-zoom > zoom) [ask agents [fd zoom] set pre-zoom zoom] ask agents [set size round (AVS * (world-width + 1) / N)] ; if check-stop [get_SP-GEO get-RPM stop] set inVar1 0 set inVar2 0 ] end ;*************************************************** Procedure CONNECT *********************************************************************** to connect ; establece enlace obs-actor para transacciones de información creando agentes "connections" create-connection-to one-of other agents with [obs = [] and (count my-out-connections + count my-in-connections) = 0] [set color red] let my-conn (count my-out-connections + count my-in-connections) set obs-done my-conn ;obs y actor se indentifican entre si ifelse obs-done = 1 [set actor [who] of item 0 [end2] of my-out-connections ask agent actor [set obs [who] of myself set actor who] ];else [user-message (word "¡ERROR!: agente " who " has " my-conn " connections")] end ;============================================================================================================================================= ;******************************************* Procedure GO-WITHOUT-LINKS ********************************************************************** to go-without-links ;En conjunto con Procedure INTERACT: alternativa específica para corridas sin enlaces ; ifelse (subject = agent (item 0 first (sort-by [item 1 ?1 > item 1 ?2] first [sort-by [item 1 ?1 > item 1 ?2] table:to-list Affinity-p] of agents))) [subject] [rp] ask-concurrent n-of IC agents with [obs-done = 0] [set obs who interact] ask agents with [obs = who or actor = who] [set obs [] set actor []] ;Si todos los agentes ya han sido observador (ciclo cumplido), produce las salidas CAT requeridas ;(S1, K1, S2, K2, u, pa1 y pa2), las grafica y reinicia obs-done para un nuevo ciclo. if all? agents [obs-done = 1] [ let akt 0 if is-string? op and is-number? ak [set ak ifelse-value (ak = N) ["All"] [count agents with [table:length EO = P]] set akt ticks] if akt > 0 [set know (word ak " agents know all at: " (ifelse-value (ak = "All") [akt - 1] [akt]) " | ")] tick do-plots ask agents [set obs-done 0] if (pre-zoom < zoom) [ask agents [bk zoom] set pre-zoom zoom] if (pre-zoom > zoom) [ask agents [fd zoom] set pre-zoom zoom] ask agents [set size round (AVS * (world-width + 1) / N)] ; if check-stop [get_SP-GEO get-RPM stop] if check-stop [stop] set inVar1 0 set inVar2 0 ] end ;*********************************************** Procedure INTERACT ************************************************************************** to interact ;La interacción es sincronizada por el Observador ;Observadores y Actores se identifican entre si como pares en interacción ask one-of other agents with [obs = [] and actor = []] [set obs [who] of myself set actor who ask agent obs [set actor [who] of myself]] ;Selección de concepto (CN), propiedad (pj) y modo de interacción (IM) y reinicio de req y ans pre-transaction ask agent actor [pre-transaction] ;Transacción de información obs-req ask agent actor [actor-ans] obs-result ;Actualización y evaluación de la información pos-transaction ;actor hizo "pos-transaction" desde "pre-transaction" (aprendizaje autodidácta, sólo si result = 2) ;Fin de la interacción set obs-done 1 end ;============================================================================================================================================= ;*************************************************** Reporter CHECK-STOP ********************************************************************* to-report check-stop ;Detiene la simulación según criterio seleccionado if stp = "Nr. of steps" and max-step > 0 [report ticks >= max-step] if (stp = "STDV" and length pa1 >= std-W and length pa2 >= std-W) [report standard-deviation pa1 < std-T and standard-deviation pa2 < std-T] if stp = "LP=0" [report mean [LP] of agents <= 1e-4] if (stp = "Global Stability" and length Dstd1 >= Dstd-W and length Dstd2 >= Dstd-W) [report standard-deviation Dstd1 < Dstd-T and standard-deviation Dstd2 < Dstd-T] report FALSE end ;============================================================================================================================================= ;*********************************************** Procedure PRE-TRANSACTION ******************************************************************* to pre-transaction ;Agentes interactuantes seleccionan concepto (CN), propiedad (pj) y modo de interacción (IM) let pre-IM FALSE if IM = "A" [set pre-IM TRUE] ifelse who = obs [set CN random 2 set pj random P ;pj será usada sólo en modo "L" ; set label "Obs" ;(just for fun) ;selección del modo de interacción IM if (decision-type = "random sorted by LP") [set IM ifelse-value (random-float 1 < LP) ["L"] ["A"]] if (decision-type = "random sorted by DSP") [ifelse length table:to-list EO > 0 [set IM ifelse-value (DSP >= random-float 1) ["A"] ["L"]] [set IM "L"] if IM = "L" and (not table:has-key? EO pj) [new-entrant pj]] if (decision-type = "random sorted by DLP") [ifelse length table:to-list EO > 0 [set IM ifelse-value (DLP < random-float 1) ["A"] ["L"]] [set IM "L"] if IM = "L" and (not table:has-key? EO pj) [new-entrant pj]] let new-IM FALSE if IM = "A" [set new-IM TRUE] if pre-IM xor new-IM [set IM-var remove who IM-var] ] ;else who = actor [ ;selecciona el mismo CN que obs en modo "L" o cualquiera para modo "A" set CN ifelse-value ([IM] of agent obs = "L") [[CN] of agent obs] [random 2] ; set label "Act" ;(just for fun) ;selección de propiedad (esta propiedad sólo será usada en modo "A" y/o aprendizaje autodidácta) let my-s ifelse-value (CN = 0) [my-s1] [my-s2] ifelse (length my-s > 0) [set pj one-of my-s] ;selecciona una propiedad contenida en CN ;else: no hay propiedades en CN [set pj random P new-entrant pj set result 2 pos-transaction] ;aprendizaje autodidacta ; if (not table:has-key? EO pj) [new-entrant pj] ; let REMEMBER-self-learning ifelse-value (CN = 0) [table:get C1-f pj = 0] [table:get C2-f pj = 0] ; if (REMEMBER_Data-file = "" or REMEMBER-self-learning) ; [set result 2 pos-transaction]] ;aprendizaje autodidacta ] set req [] set ans [] end ;************************************************* Procedure TRANSACTION ********************************************************************* ;Los procedimientos "obs-req", "actor-ans" y "obs-result" son sincronizados por los agentes "connections" to transaction ask-concurrent connections [ask end1 [obs-req] ask end2 [actor-ans] ask end1 [obs-result]] end ;*************************************************** Procedure OBS-REQ *********************************************************************** to obs-req ;Agente "obs" hace requerimiento (req) con la propiedad pj y espera respuesta (ans) de confirmación (S/N) ifelse (IM = "L") [set req pj] ;req < P le indica al actor que se trata de IM = "L" (always pj < P) ;(en "pre-transaction", el actor ya seleccionó el mismo CN que obs) ;else (IM = "A") [set req P] ;req = P le indica al actor que se trata de IM = "A" ask agent actor [set req [req] of myself] end ;************************************************** PROCEDURE ACTOR-ANS ********************************************************************** to actor-ans ;Agente "actor" reconoce el modo de interacción (IM), según el valor del requerimiento (req) ifelse (req = P) ;(IM = "A") [set ans pj] ;(IM = "L") [let my-s ifelse-value (CN = 0) [my-s1] [my-s2] set ans ifelse-value (occurrences req my-s > 0) ["S"] ["N"] if (not table:has-key? EO pj) [new-entrant req] ] ask agent obs [set ans [ans] of myself] end ;************************************************** Procedure OBS-RESULT ********************************************************************* to obs-result ifelse (IM = "L") [set result ifelse-value (ans = "S") [1] [0]] ;else (IM = "A") [set pj ans let my-s ifelse-value (CN = 0) [my-s1] [my-s2] set result ifelse-value (occurrences ans my-s > 0) [1] [0] if not table:has-key? EO pj [new-entrant pj] ;----------------------------------------------------------------------------------------------------------------------------------- ;for count the C.A.T.´s interactions types and Affinity matrix ;This is the only time when the observer see the actor mind just for global calculations purposes, ;in fact for the non equiprobrable (or direct) pa1 and pa2 calculation and leader ifelse CN = [CN] of agent actor [table:put prob-counter word "f-a1-" CN table:get prob-counter word "f-a1-" CN + 1 table:put prob-counter word "a1-" CN table:get prob-counter word "a1-" CN + result carefully [table:put d-prob word "p.a1-" CN (sum [table:get prob-counter word "a1-" CN] of agents) / (sum [table:get prob-counter word "f-a1-" CN] of agents)] [table:put d-prob word "p.a1-" CN 0]] [table:put prob-counter word "f-a2-" CN table:get prob-counter word "f-a2-" CN + 1 table:put prob-counter word "a2-" CN table:get prob-counter word "a2-" CN + result carefully [table:put d-prob word "p.a2-" CN (sum [table:get prob-counter word "a2-" CN ] of agents) / (sum [table:get prob-counter word "f-a2-" CN] of agents)] [table:put d-prob word "p.a2-" CN 0]] ;----------------------------------------------------------------------------------------------------------------------------------- ] ;end of else IM = "A" ;for Affinity matrix table:put Affinity-f actor table:get Affinity-f actor + 1 table:put Affinity-d actor table:get Affinity-d actor + result table:put Affinity-p actor (table:get Affinity-d actor / table:get Affinity-f actor) let head item 0 first sort-by [item 1 ?1 > item 1 ?2] table:to-list Affinity-p face agent head ifelse (distance agent head > table:get Affinity-p head) [jump table:get Affinity-p head] [move-to agent head] set leader agent item 0 first sort-by [item 1 ?1 > item 1 ?2] [first sort-by [item 1 ?1 > item 1 ?2] table:to-list Affinity-p] of agents if leader != subject [rp] ;------------------------------------------------------------------------------------------------------------------------------------------ ;Agente "Obs" en modo "A" o "L", obtuvo los parámetros requeridos para pos-interacción: CN, pj y result end ;*********************************************** Procedure POS-TRANSACTION ******************************************************************* to pos-transaction ;Incluye: ;1. Actualización de arreglo de datos, valor evidencial y probabilidad de aprendizaje. ;2. Actualización de información ;3. Actualización de los conjuntos s1 y s2 de cada agente (my-s1 y my-s2) según PAC (Properties Assignment Criterium) ;--------------------------------------------------------------------------------------------------------------------------------------------- ;1. Actualización de arreglo de datos, valor evidencial y probabilidad de aprendizaje. ;Nota: Agentes sin resultado (result = -1) no actualizan. Es decir, ... ; ... sólo "obs" (con las excepciones que se indican) y "actor" en aprendizaje autodidacta let value "" ;Actualiza frecuencia(f) ... todos los agentes interactuantes con result != -1 (agentes con result = 0, 1 o 2) set value "f" new-value CN value pj set Sf Sf + 1 ;Actualiza discriminador(d) if (result > 0) [set value "d" new-value CN value pj set Sd Sd + 1] ;Actualiza Probabilidad de Éxito (SP) set value "SP" new-value CN value pj if not (who = obs and IM = "A" and result = 0) [ ;Excepción: Obs en modo acuerdo no existoso ; let value "" ; ;Actualiza frecuencia(f) ... todos los agentes interactuantes con result != -1 (agentes con result = 0, 1 o 2) ; set value "f" new-value CN value pj set Sf Sf + 1 ; ; ;Actualiza discriminador(d) ; if (result > 0) [set value "d" new-value CN value pj set Sd Sd + 1] ; ; ;Actualiza Probabilidad de Éxito (SP) ; set value "SP" new-value CN value pj ;Actualiza valor evidencial(Ev) let Evj array:item array:item array:item Cj CN Ev pj let c ifelse-value (CN = 0) [1] [0] ;"c" es el otro concepto (para determinar Delta Ev) let DEvj ifelse-value (array:item array:item array:item Cj c Ev pj > 0) [0.5] [1] array:set array:item array:item Cj CN Ev pj ifelse-value (result > 0) [Evj + DEvj] [ifelse-value (Evj - DEvj < 0) [0] [Evj - DEvj]] ;Actualiza evidencial relativo (Erel) let listEV array:to-list array:item array:item Cj CN Ev let sumEv sum listEV foreach n-values P [?] [array:set array:item array:item Cj CN Erel ? (ifelse-value (sumEv > 0) [item ? listEV / sumEv] [0])] ;Actualiza probabilidad de aprendizaje (LP) ... Excepto en modos "A" y autodidacta if (IM != "A" and result != 2) [set LP ifelse-value (result = 0) [LP + DL] [LP - DL] ifelse LP < 0 [set LP 0] [if LP > 1 [set LP 1]]] ] ;Fin actualización de datos set result (- 1) ;--------------------------------------------------------------------------------------------------------------------------------------------- ;2. Actualización de información de acuerdo al nuevo "d" y "f" let C1 0 let C2 1 ;actualiza parámetros para decisiones table:put DeltaSP pj abs(table:get C1-SP pj - table:get C2-SP pj) let RPC1j 0 let RPC2j 0 let normDeltaSPj 0 carefully [set RPC1j table:get C1-SP pj / max map [item 1 ?] table:to-list C1-SP] [set RPC1j 0] carefully [set RPC2j table:get C2-SP pj / max map [item 1 ?] table:to-list C2-SP] [set RPC2j 0] carefully [set normDeltaSPj table:get DeltaSP pj / max map [item 1 ?] table:to-list DeltaSP] [set normDeltaSPj 0] set DSP Sd / Sf set DLP 1 - mean-of-table DeltaSP ;--------------------------------------------------------------------------------------------------------------------------------------------- ;3. Actualización de los conjuntos s1 y s2 de cada agente (my-s1 y my-s2) según PAC (Properties Assignment Criterium) let my-s1-ini my-s1 let my-s2-ini my-s2 if PAC = "Success probability" [ifelse (CN = C1) [if table:get C1-d pj > 0 [set my-s1 fput pj my-s1 set my-s1 remove-duplicates my-s1]] [if table:get C2-d pj > 0 [set my-s2 fput pj my-s2 set my-s2 remove-duplicates my-s2]] if random-float 1 <= normDeltaSPj [ifelse (table:get C1-SP pj < table:get C2-SP pj) [set my-s1 remove pj my-s1] [set my-s2 remove pj my-s2]] ] if PAC = "Representativity" [ifelse (CN = C1) [if table:get C1-d pj > 0 [set my-s1 fput pj my-s1 set my-s1 remove-duplicates my-s1]] [if table:get C2-d pj > 0 [set my-s2 fput pj my-s2 set my-s2 remove-duplicates my-s2]] if random-float 1 <= normDeltaSPj [ifelse (RPC1j < RPC2j) [set my-s1 remove pj my-s1] [set my-s2 remove pj my-s2]] ] if PAC = "Evidential value" [ifelse CN = C1 [ifelse array:item (array:item (array:item Cj C1) Ev) pj > 0 [set my-s1 fput pj my-s1] [set my-s1 remove pj my-s1] ];else CN = C2 [ifelse array:item (array:item (array:item Cj C2) Ev) pj > 0 [set my-s2 fput pj my-s2] [set my-s2 remove pj my-s2] ] ] ;Esta actualización se realiza en cada interacción, por lo tanto, una pj puede ser utilizada por un agente más de una vez. set my-s1 sort remove-duplicates my-s1 set my-s2 sort remove-duplicates my-s2 ;De esta forma, my-s1 y my-s2 sólo contienen una vez el nombre (pj) de las propiedades que cumplan con el PAC de cada concepto ;For monitoring intra-variability let Var1 0 let Var2 0 if length my-s1 != length my-s1-ini [set inVar1 inVar1 + 1 set Var1 1] if length my-s2 != length my-s2-ini [set inVar2 inVar2 + 1 set Var2 1] table:put U-status "s1" (table:get U-status "s1" + Var1) table:put U-status "s2" (table:get U-status "s2" + Var2) table:put U-status "s1-or-s2" (table:get U-status "s1-or-s2" + Var1 + Var2) ;Fin de pos-transaction end ;***************************************************** Procedure NEW-ENTRANT ***************************************************************** to new-entrant [property-n] table:put EO property-n table:length EO table:put C1-d property-n 0 table:put C2-d property-n 0 table:put C1-f property-n 0 table:put C2-f property-n 0 table:put C1-SP property-n 0 table:put C2-SP property-n 0 if is-list? op [set op remove property-n op] if empty? op [set op (word "All in at: " ticks " | ")] end ;***************************************************** Procedure NEW-VALUE ******************************************************************* to new-value [concept-n value-type property-n] if (concept-n = 0 and value-type = "f") [table:put C1-f property-n (table:get C1-f property-n + 1)] if (concept-n = 1 and value-type = "f") [table:put C2-f property-n (table:get C2-f property-n + 1)] if (concept-n = 0 and value-type = "d") [table:put C1-d property-n (table:get C1-d property-n + 1)] if (concept-n = 1 and value-type = "d") [table:put C2-d property-n (table:get C2-d property-n + 1)] if (concept-n = 0 and value-type = "SP") [table:put C1-SP property-n (table:get C1-d property-n / table:get C1-f property-n)] if (concept-n = 1 and value-type = "SP") [table:put C2-SP property-n (table:get C2-d property-n / table:get C2-f property-n)] end ;*************************************************** Reporter MEAN-OF-TABLE ****************************************************************** to-report mean-of-table [tab] ;obtains the average of the values from a table let values table:to-list tab let key-values table:keys tab let total sum reduce [se ?1 ?2] values - sum key-values report (total / length values) end ;**************************************************** Procedure DO-PLOTS ********************************************************************* to do-plots ;Produce las salidas CAT requeridas: S1, K1, S2, K2, u, pa1 y pa2. ;Produce los ploteos para vusualización dinámica ;--------------------------------------------------------------------------------------------------------------------------------------------- ;DATOS PARA HISTOGRAMAS AND GOODNESS OF FIT STATISTICS let sC1 [] let sC2 [] let #piC1 [] let #piC2 [] let #ApiC1 [] let #ApiC2 [] let mean-Erel-C1 [] let mean-Erel-C2 [] let mean-SP-C1 [] let mean-SP-C2 [] let square-dif-SP [] ;for Adjusted RMSE ;sCj = Conjunto unión de todas las muestras (s) de cada agente del concepto C1/C2 ;#piCj = Nro. de propiedades en el Concepto C1/C2. ;#ApiCj = Nro. de Agentes que asocian la propiedad pj al Concepto C1/C2 (DISTRIBUCIÓN DE PROPIEDADES EN C1 o C2) ;mean-Erel-Cj = Media de los Evidenciales relativos de cada propiedad en C1/C2 foreach sort-by [[who] of ?1 < [who] of ?2] agents [ask ? [set sC1 se sC1 my-s1 set sC2 se sC2 my-s2 set #piC1 lput length my-s1 #piC1 set #piC2 lput length my-s2 #piC2]] foreach n-values P [?] [let rep1 occurrences ? sC1 let rep2 occurrences ? sC2 set #ApiC1 lput rep1 #ApiC1 set #ApiC2 lput rep2 #ApiC2 set mean-Erel-C1 lput (mean [array:item array:item array:item Cj 0 Erel ?] of agents) mean-Erel-C1 set mean-Erel-C2 lput (mean [array:item array:item array:item Cj 1 Erel ?] of agents) mean-Erel-C2 set mean-SP-C1 lput (sum [table:get C1-SP ?] of agents with [table:has-key? C1-SP ?] / N) mean-SP-C1 set mean-SP-C2 lput (sum [table:get C2-SP ?] of agents with [table:has-key? C2-SP ?] / N) mean-SP-C2 ;for Adjusted-RMSE if not (item ? #ApiC1 = 0 and item ? #ApiC2 = 0) [set square-dif-SP lput ((item ? mean-SP-C1 - item ? mean-SP-C2) ^ 2) square-dif-SP] ] ;Adjusted-RMSE and St-Dev set SP-C1 mean-SP-C1 set SP-C2 mean-SP-C2 set rpm-C1 #ApiC1 set rpm-C2 #ApiC2 set RMSE-SP sqrt (mean square-dif-SP) set stdv-spC1 standard-deviation SP-C1 set stdv-spC2 standard-deviation SP-C2 get-RPM ;--------------------------------------------------------------------------------------------------------------------------------------------- ;HISTOGRAMS AND STATISTICS set-current-plot "Property Frequency Distribution for Concepts" clear-plot set-plot-x-range 0 (2 * P) set-current-plot-pen "frec" foreach n-values P [?] [set-plot-pen-color 15 plot item ? #ApiC1 set-plot-pen-color 55 plot item ? #ApiC2] ; set-current-plot "How many properties each agent assign to Concept Ci?" ; clear-plot set-plot-x-range 0 (2 * N) set-current-plot-pen "#A" ; foreach n-values N [?] [set-plot-pen-color 15 plot item ? #piC1 set-plot-pen-color 55 plot item ? #piC2] set-current-plot "Success Probability (SPj)" clear-plot set-plot-x-range 0 (2 * P) if PV = "AvgRelEv" [set-current-plot-pen "mrEv" foreach n-values P [?] [set-plot-pen-color 15 plot item ? mean-Erel-C1 set-plot-pen-color 55 plot item ? mean-Erel-C2]] if PV = "Avg-SP" [set-current-plot-pen "SP" foreach n-values P [?] [set-plot-pen-color 15 plot item ? mean-SP-C1 set-plot-pen-color 55 plot item ? mean-SP-C2]] ;--------------------------------------------------------------------------------------------------------------------------------------------- ;PARÁMETROS CAT PARA GRÁFICOS Y MONITORES set S1 (length sC1) / N set S2 (length sC2) / N let kC1 remove-duplicates sC1 let kC2 remove-duplicates sC2 set K1 length kC1 set K2 length kC2 let k (se kC1 kC2) set u ifelse-value (length k = length modes k) [0] [length modes k] let pa1-C1 0 let pa1-C2 0 let pa2-C1 0 let pa2-C2 0 set pa1-C1 (S1 / K1) set pa2-C1 (u * (S1 / K1) / K2) set pa1-C2 (S2 / K2) set pa2-C2 (u * (S2 / K2) / K1) table:put state "step" ticks table:put state "S1" S1 table:put state "K1" K1 table:put state "S2" S2 table:put state "K2" K2 table:put state "u" u table:put state "pa1-C1" pa1-C1 table:put state "pa2-C1" pa2-C1 table:put state "pa1-C2" pa1-C2 table:put state "pa2-C2" pa2-C2 ;Para verificación de la Std Dev de los últimos std-W valores de pa1 y pa2 en C1 set pa1 fput table:get state "pa1-C1" pa1 if length pa1 >= std-W [set pa1 sublist pa1 0 std-W] set pa2 fput table:get state "pa2-C1" pa2 if length pa2 >= std-W [set pa2 sublist pa2 0 std-W] ;Para verificación de la Std Dev de los últimos std-W valores de standard-deviation mean-SP en C1 y C2 if (cross-step = 0 and mean [DLP] of agents <= mean [DSP] of agents) [set cross-step ticks] set Dstd-W ifelse-value (cross-step >= max list N P and cross-step <= std-W) [cross-step] [std-W] set Dstd-T ifelse-value (Dstd-W >= std-W) [4e-3] [1e-3] set Dstd1 fput standard-deviation mean-SP-C1 Dstd1 if length Dstd1 >= Dstd-W [set Dstd1 sublist Dstd1 0 Dstd-W] set Dstd2 fput standard-deviation mean-SP-C2 Dstd2 if length Dstd2 >= Dstd-W [set Dstd2 sublist Dstd2 0 Dstd-W] ;--------------------------------------------------------------------------------------------------------------------------------------------- ;GRÁFICOS ; ;graph for CAT parameters ; set-current-plot "CAT Parameters" ; set-current-plot-pen "S1" plot S1 ; set-current-plot-pen "k1" plot K1 ; set-current-plot-pen "S2" plot S2 ; set-current-plot-pen "K2" plot K2 ; set-current-plot-pen "u" plot u set-current-plot "C1:[p.a1,p.a2]" ; set-current-plot-pen "pa1" plot mean pa1 ; set-current-plot-pen "pa2" plot mean pa2 set-current-plot-pen "p.a1" plot table:get d-prob "p.a1-0" set-current-plot-pen "p.a2" plot table:get d-prob "p.a2-0" ; set-current-plot-pen "SD1" plot standard-deviation mean-SP-C1 ; set-current-plot-pen "SD2" plot standard-deviation mean-SP-C2 set-current-plot "C2:[p.a1,p.a2]" set-current-plot-pen "p.a1" plot table:get d-prob "p.a1-1" set-current-plot-pen "p.a2" plot table:get d-prob "p.a2-1" ;graph for agent variables set-current-plot "Number of Agents in Communication and Learning Modes" ; let c ifelse-value Concept [1] [0] ; if IM-Mode [ set-current-plot-pen "Comm" plot count agents with [IM = "A"] set-current-plot-pen "Learn" plot count agents with [IM = "L"];] ; if Frecuency [ ; set-current-plot-pen "f" plot ifelse-value (c = 0) [[table:get C1-f Property] of agent Agent-ID] [[table:get C2-f Property] of agent Agent-ID]] ; if Discriminator [ ; set-current-plot-pen "d" plot ifelse-value (c = 0) [[table:get C1-d Property] of agent Agent-ID] [[table:get C2-d Property] of agent Agent-ID]] ; if SP-prop [ ; set-current-plot-pen "SP" plot ifelse-value (c = 0) [[table:get C1-SP Property] of agent Agent-ID] [[table:get C2-SP Property] of agent Agent-ID]] ; if DifSP [ ; set-current-plot-pen "DSP" plot [table:get DeltaSP Property] of agent Agent-ID] ; if Agent-IM [ ; set-current-plot-pen "aIM" plot ifelse-value ([IM] of agent Agent-ID = "L") [ticks * 0.5] [ticks]] ;graph for type of IM selection ; set-current-plot "IM-decision-type" ; if IM-decision-type = "Learning Probability" [set-current-plot-pen "LP" if mean [LP] of agents > 1e-4 [plot mean [LP] of agents]] ; if IM-decision-type = "Success Probability" [set-current-plot-pen "DSP" plot mean [DSP] of agents ; set-current-plot-pen "LP" plot mean [DLP] of agents ; set-current-plot-pen "M" plot mean list mean [DLP] of agents mean [DSP] of agents] ;graph for intra-Variability (from s1 and s2 actualization in pos-transaction procedure) set-current-plot "% of agents that change C1 properties" set-current-plot-pen "i-V1" plot 100 * inVar1 / N set-current-plot "% of agents that change C2 properties" set-current-plot-pen "i-V2" plot 100 * inVar2 / N ;--------------------------------------------------------------------------------------------------------------------------------------------- ;MONITORES AND VARIABILITY GRAPHS ;monitor for cases of interest (COI) let U-IM FALSE if empty? IM-var [set cw cw + 1 set IM-var n-values N [?] set U-IM TRUE] carefully [set IM-var-list lput (ticks / cw) IM-var-list] [set IM-var-list lput 0 IM-var-list] let stdvW 0 carefully [set stdvW precision standard-deviation IM-var-list 1] [set stdvW 0] set COI (word op know length IM-var " agents hold IM in var n° = " cw " | (rate ; stdv) = (" precision last IM-var-list 0 " ; " stdvW ")") ; set-current-plot "Agent-Var" set-current-plot-pen "All" if not U-IM [set-plot-pen-color 9.9] plot last IM-var-list set-plot-pen-color 0 ;monitor for CAT state set status (list "step " ticks ":" " S1=" precision S1 2 " K1=" K1 " S2=" precision S2 2 " K2=" K2 " u=" u) ;Unanimous intra-variability ; set-current-plot "Intra-Variability" table:put U-Var "s1" 100 * count agents with [table:get U-status "s1" != 0] / N table:put U-Var "s2" 100 * count agents with [table:get U-status "s2" != 0] / N ; set-current-plot-pen "or" if all? agents [table:get U-status "s1-or-s2" != 0] [table:put U-Var "s1-or-s2" (table:get U-Var "s1-or-s2" + 1) ; plot (ticks / table:get U-Var "s1-or-s2") ; set-current-plot-pen "s1" plot table:get U-Var "s1" ; set-current-plot-pen "s2" plot table:get U-Var "s2" ask agents [set U-status reset-table U-status] ] ;External variability = Inter-Variability set-current-plot "Inter-Variability" set-current-plot-pen "C1" plot 1 - table:get d-prob "p.a1-0" set-current-plot-pen "C2" plot 1 - table:get d-prob "p.a1-1" end ;***************************************************** Reporter OCURRENCES ******************************************************************* to-report occurrences [pk sCk] ;count the number of occurrences of an item in a list report reduce [ifelse-value (?2 = pk) [?1 + 1] [?1]] (fput 0 sCk) end ;***************************************************** Reporter RESET-TABLE ****************************************************************** to-report reset-table [tab] let key-values table:keys tab foreach key-values [table:put tab ? 0] report tab end ;**************************************************** For Experiment Output ****************************************************************** ;to get_SP-GEO ;Success Probability in Global Entry Order ; let X-plot 0 let list-EO [] let max_e-v 0 let med 0 let e-v 0 let GEO [] set list-GEO [] ; ; foreach n-values P [?] [set list-EO [table:get EO ?] of agents set max_e-v max list-EO set med median list-EO ; carefully [set e-v med * sum list-EO / max_e-v] [set e-v 0] set GEO lput list e-v ? GEO] ; set GEO sort-by [item 0 ?1 < item 0 ?2] GEO ; set-current-plot "SP GEO" clear-plot ; foreach n-values P [?] ; [set X-plot item 1 (item ? GEO) set list-GEO lput X-plot list-GEO ;for monitor "entry order" ; if SP-GEO_X-plot = "by name order" [set X-plot ?] ; set-current-plot-pen "SP-GEO1" plot item X-plot SP-C1 set-current-plot-pen "SP-GEO2" plot item X-plot SP-C2] ;end ;--------------------------------------------------------------------------------------------------------------------------------------------- to get-RPM let square-dif-rpm [] ;for experimets output let max-rpm-C1 max rpm-C1 let max-rpm-C2 max rpm-C2 let rpm-norm1 [] let rpm-norm2 [] set-current-plot "RMSE and Std.Dev." ; clear-plot foreach n-values P [?] [if not (item ? rpm-C1 = 0 and item ? rpm-C2 = 0) [set rpm-norm1 lput (item ? rpm-C1 / max-rpm-C1) rpm-norm1 set rpm-norm2 lput (item ? rpm-C2 / max-rpm-C2) rpm-norm2 set square-dif-rpm lput ((last rpm-norm1 - last rpm-norm2) ^ 2) square-dif-rpm]] ; set-current-plot-pen "rpm-C1" plot item ? rpm-C1 set-current-plot-pen "rpm-C2" plot item ? rpm-C2] set RMSE-rpm sqrt (mean square-dif-rpm) set stdv-rpmC1 standard-deviation rpm-C1 set stdv-rpmC2 standard-deviation rpm-C2 set-current-plot-pen "C1:StDv" plot stdv-rpmC1 set-current-plot-pen "C2:StDv" plot stdv-rpmC2 set-current-plot-pen "RMSE" plot RMSE-rpm end ;============================================================================================================================================= @#$#@#$#@ GRAPHICS-WINDOW 6 10 178 203 0 0 162.0 1 10 1 1 1 0 1 1 1 0 0 0 0 1 1 1 ticks CC-WINDOW 5 803 1332 898 Command Center 0 SLIDER 7 205 223 238 N N 2 150 14 1 1 agents HORIZONTAL SLIDER 7 238 223 271 P P 2 100 10 1 1 props HORIZONTAL SLIDER 8 319 223 352 max-step max-step 0 100000 0 20 1 steps (0 = inf) HORIZONTAL PLOT 842 10 1202 224 Property Frequency Distribution for Concepts property (pj) Frequency 0.0 10.0 0.0 10.0 true true PENS "C1" 1.0 0 -2674135 true "C2" 1.0 0 -10899396 true "frec" 1.0 1 -1 false TEXTBOX 50 70 131 88 MIMICS v-CSI 13 9.9 1 BUTTON 95 145 172 189 Run MIMICS go-without-links T 1 T OBSERVER NIL NIL NIL NIL CHOOSER 7 273 223 318 stp stp "Global Stability" "Nr. of steps" 0 TEXTBOX 27 278 132 296 = stopping condition 11 0.0 1 MONITOR 227 10 533 55 C1: (se \": p.a1=\" precision table:get d-prob \"p.a1-0\" 2 \" p.a2=\" precision table:get d-prob \"p.a2-0\" 2) 0 1 11 PLOT 842 225 1202 390 Success Probability (SPj) property (pj) Avg. over agents 0.0 10.0 0.0 0.05 true true PENS "C1" 1.0 1 -2674135 true "C2" 1.0 1 -10899396 true "mrEv" 1.0 1 -1 false "SP" 1.0 1 -1 false PLOT 459 607 1323 788 Number of Agents in Communication and Learning Modes step Nr. of Agents 0.0 10.0 0.0 0.5 true true PENS "Comm" 1.0 0 -2674135 true "Learn" 1.0 0 -10899396 true BUTTON 14 145 91 189 Setup MIMICS setup NIL 1 T OBSERVER NIL NIL NIL NIL TEXTBOX 47 81 133 103 ============ 9 9.9 1 TEXTBOX 60 90 119 108 25 - 11 - 2015 9 9.9 1 PLOT 227 54 533 352 C1:[p.a1,p.a2] step Mean last 3000 val. 0.0 10.0 0.0 0.2 true true PENS "p.a1" 1.0 0 -10899396 true "p.a2" 1.0 0 -2674135 true TEXTBOX 45 114 142 132 Developed by C.Barra 9 46.0 1 PLOT 888 394 1323 581 RMSE and Std.Dev. Property (pj) Rate of Property Mapping (#agents) 0.0 10.0 0.0 0.5 true true PENS "C1:StDv" 1.0 0 -10899396 true "C2:StDv" 1.0 0 -2674135 true "RMSE" 1.0 0 -16777216 true TEXTBOX 1217 373 1313 391 Developed by C.Barra 9 55.0 1 TEXTBOX 11 15 174 60 Modelling Inferential Minds\n In Conceptual Space\n M I M I C S 12 0.0 0 PLOT 8 393 443 582 % of agents that change C1 properties steps % of agents altered "s1" 0.0 10.0 0.0 10.0 true false PENS "i-V1" 1.0 0 -13345367 true MONITOR 9 355 66 392 step ticks 17 1 9 PLOT 9 607 445 789 Inter-Variability steps 1 - p.a1 0.0 10.0 0.0 0.1 true true PENS "C1" 1.0 0 -13345367 true "C2" 1.0 0 -11221820 true PLOT 533 54 839 352 C2:[p.a1,p.a2] step Mean last 3000 val. 0.0 10.0 0.0 0.2 true true PENS "p.a1" 1.0 0 -10899396 true "p.a2" 1.0 0 -2674135 true TEXTBOX 138 588 307 606 Index of Inter-agent Variability 12 81.0 1 PLOT 443 393 880 582 % of agents that change C2 properties steps % of agents altered "s2" 0.0 10.0 0.0 10.0 true false PENS "i-V2" 1.0 0 -11221820 true TEXTBOX 369 394 543 412 Index of Intra-agent Variability 12 81.0 0 TEXTBOX 193 10 224 202 ||\n ||\n ||\n ||\n ||\n ||\n ||\n== 20 22.0 0 TEXTBOX 1249 10 1290 333 M\nI\nM\nI\nC\nS 45 0.0 1 MONITOR 1265 537 1322 574 RMSE precision RMSE-rpm 2 17 1 9 MONITOR 1265 461 1322 498 StDv-C1 precision stdv-rpmC1 4 17 1 9 MONITOR 1265 499 1322 536 StDv-C2 precision stdv-rpmC2 4 17 1 9 MONITOR 532 10 839 55 C2: (se \" p.a1=\" precision table:get d-prob \"p.a1-1\" 2 \" p.a2=\" precision table:get d-prob \"p.a2-1\" 2) 17 1 11 @#$#@#$#@ WHAT IS IT? ----------- MIMICS purports to simulate a social group that uses two contrasting abstract concepts to communicate about a given situation. Instead of viewing concepts as the result of an inductive process that extracts properties and their statistical structure from the environment, MIMICS views abstract concepts as subjective points of view, and sees communication as an attempt at inferring other peoples' subjective points of view. Furthermore, MIMICS assumes that abstract concepts require explicit teaching to be learned. HOW IT WORKS ------------ In MIMICS, agents use concepts to interact with other agents. Concepts may be used in learning interactions or in communication interactions. In learning interactions, agents request other agents to teach them the conceptual content of the concept currently in their minds. In communication interactions, agents look for other agents to provide confirmatory evidence of their own conceptual state (this is called "agreement"). Every time another agent teaches them the content of a concept, and every time agreement is reached, the interaction is deemed successful. The more successful interactions, the better a concept becomes differentiated from the alternative concept. The more differentiated concepts are, the more agents believe they need no further learning, and tend to use concepts in communication. HOW TO USE IT ------------- The only free parameters in MIMICS are the number of agents (N) and the number of potential properties (P). Play around with these parameters. Another setting that can be set is the stopping criterion. A simulation run may be stopped by waiting until the global distribution of properties stabilizes (as described in the manuscript that accompanies this simulator), or by setting the maximum number of steps in the simulation run. Note that setting the number of steps to zero, means that the simulation will run indefinetely and will need to be manually stopped. General steps to perform a simulation run: 1.- Set the values for "N" and "P" in the corresponding green sliders. 2.- Select the stopping condition: "Global stability" or "Nr. of steps". 3.- If in 2.- you selected "Nr. of steps", set the maximum nr. of steps to end the run in the "max-step" green slider. Note that setting it to 0 will run the simulation forever. 4.- Press the "Setup MIMICS" blue button. 5.- Press the "Run MIMICS" blue button. Pressing it again will pause the simulation and pressing it again will resume the run (i.e., it is a "toggle" button). THINGS TO NOTICE ---------------- There are many interesting things to notice. Before diving into the more substantive issues, it is important to understand what the different windows are showing. The "property frequency distribution for concepts" window is built by asking all agents, at each simulation step, to inform their conceptual content for each of the concepts C1 and C2. These lists are accumulated across agents to produce a frequency distribution akin to what would be found in a conceptual properties norming study. The "success probability" window, found immediately below, shows the probability that a property will lead to a successful interaction (as defined above and in the accompanying manuscript) when used in the context of a given concept. Because agents use success probabilities to decide to which concept to assign a property, the two distributions (frequency and success probability) can be mapped onto each other. Other interesting windows show the probabilities of true and illusory agreement (discussed in detail in the accompanying manuscript). In a nutshell, true agreement (p.a1) is the probability that an agent will correctly infer another agent's point of view (concept, state of mind, etc.) given evidence provided by that other agent (i.e., a communicated property). Similarly, illusory agreement (p.a2) is the probability that an agent will incorrectly infer another agent's point of view given a communicated property. Finally, it is also necessary to understand the variability windows. The "intra-agent variability" windows show the percentage of agents that change their conceptual content at any given moment in a simulation run. Successful and unsuccessful interactions may both lead properties in or out of a concept. These windows show whether agents' conceptual content (their lists of properties) becomes stabilized or fixed, or instead remain unstable. The "inter-agent variability" window dynamically computes the value of (1 - p.a1). Because p.a1 is an index of homogeneity of conceptual content in the agent group (as discussed in the accompanying manuscript), 1 - p.a1 is an index of inter-agent variability. If this index were to reach zero, it would mean that all agents developed the same set of properties to describe a concept. If it were to reach a value of one, it would mean that all agents developed different sets of properties to describe a concept. THINGS TO TRY ------------- By using the parameter settings for N and P discussed in the manuscript, inspect the probability distributions generate by the agents history of interactions (notice they are not uniform distributions). Also inspect p.a1 and p.a2, which show that agents are more likely than not to make correct inferences about other agents' points of view. Note that this happens though agents never have access to other agents real state of mind, and thus cannot use this information to calibrate their inferential process. Finally, inspect also the variability windows, and notice that inter-agent and intra-agent variability occur at a wide variety of settings, and that the system may stabilize at a global level (as shown by the success probability distribution), and still be unstable at the individual agent level. To test all the above behaviors, you may set MIMICS to stop on its own when it has reached global stability. Additionally, check the number of steps needed for reaching stability, and set MIMICS to continue running well beyond that number (e.g., leave it running to infinity by setting the number of steps to zero). Then, verify that variability remains even in the very long run, suggesting that it is an inherent feature of the model. CREDITS AND REFERENCES ---------------------- Chaigneau, S.E., Canessa, E. & Barra, C. (submitted). Using concepts to communicate may account for conceptual variability: an agent-based model. For a copy, please contact sergio.chaigneau@uai.cl @#$#@#$#@ 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 arrow 2 true 0 Polygon -7500403 true true 150 0 0 150 120 150 120 293 180 293 180 150 300 150 arrow 3 true 0 Polygon -7500403 true true 135 255 105 300 105 225 135 195 135 75 105 90 150 0 195 90 165 75 165 195 195 225 195 300 165 255 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 campsite false 0 Polygon -7500403 true true 150 11 30 221 270 221 Polygon -16777216 true false 151 90 92 221 212 221 Line -7500403 true 150 30 150 225 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 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 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 4.0.5 @#$#@#$#@ @#$#@#$#@ @#$#@#$#@ setup go-without-links export-plot "RPM" (word "c:/?????????/RPM N" N "-P" P "-" remove ":" date-and-time ".csv") set SP-GEO_X-plot "by entry order" get_SP-GEO export-plot "SP GEO" (word "c:/?????????/SP GEO N" N "-P" P "-" remove ":" date-and-time ".csv") set SP-GEO_X-plot "by name order" get_SP-GEO export-plot "SP GEO" (word "c:/?????????/SP N" N "-P" P "-" remove ":" date-and-time ".csv") S1 K1 K2 u table:get d-prob "p.a1-0" table:get d-prob "p.a2-0" stdv-rpmC1 RMSE-rpm RMSE-SP mean [DLP] of agents "OTHER DATA" S2 mean [DSP] of agents table:get d-prob "p.a1-1" table:get d-prob "p.a2-1" stdv-rpmC2 stdv-spC1 stdv-spC2 cross-step COI if N = 14 and P = 10 [set max-step 4050] if N = 14 and P = 50 [set max-step 13250] if N = 14 and P = 100 [set max-step 14400] if N = 40 and P = 10 [set max-step 12000] if N = 40 and P = 50 [set max-step 19300] if N = 40 and P = 100 [set max-step 19300] if N = 60 and P = 10 [set max-step 13700] if N = 60 and P = 50 [set max-step 20000] if N = 60 and P = 100 [set max-step 21600] setup go-without-links S1 K1 K2 u S2 @#$#@#$#@ @#$#@#$#@ 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 direct 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 @#$#@#$#@