|
||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||
SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
asm.ASMModelSwarm
Title: ASMModelSwarm
Description: El ASMModelSwarm es donde se lleva a cabo todo el trabajo de peso. Existe una única instancia de esta clase. La instancia de esta clase es asmModelSwarm. Cuando el usuario pone en marcha la simulación, esta instancia recibe los parámetros, probablemente modificados desde las sondas. A continuación crea todos los objetos relevantes (agentes, mundo, especialista y dividendo, principalmente) por medio del método buildObjects(). Una vez creados los agentes, crea una historia ficticia del mercado para que las condiciones iniciales del mundo (por ejemplo la media móvil de 500 periodos) tengan sentido. Por último, hace sonar la campana de apertura del mercado y deja a los agentes que hagan el resto.
El programa de acciones del modelo es bastante complejo, aunque lo fue muchísimo más en las primeras versiones del mercado en ObjectiveC. Lo que se persigue es conseguir crear una historia ficticia inicial de 502 periodos de forma que cuando los agentes empiecen a negociar dispongan de datos que tengan un mínimo de sentido. Para conseguir este objetivo se crean dos programas de acciones. El primero, llamado startupSchedule, será el encargado de crear la historia ficticia inicial. El segundo, llamado periodSchedule, será el que se repita cada periodo normal de simulación.
El primer programa (startupSchedule) se compone únicamente de una acción (doWarmupStep), pero que se repite 502 veces (lo matizaremos más tarde). Esta acción de calentamiento lo único que hace es crear un dividendo (mediante un proceso AR(1)) y fijar el precio como el precio fundamental (dividendo/tasa de interés). Como este proceso se lleva a cabo 502 veces, cuando termina la ejecución del programa startupSchedule (que no se ejecuta más que una única vez, aunque comprenda 502 acciones iguales), resulta que disponemos de una situación bursátil más o menos creíble. Es decir, todos los parámetros tales como medias móviles sobre el precio o sobre el dividendo contienen datos más o menos válidos. De la misma forma, disponemos de la historia de los 500 últimos dividendos, así como de la historia de los 500 últimos precios (fundamentales). Cabe resaltar que durante la ejecución de los 502 "doWarmStep", los agentes no han intervenido para nada. Este periodo de calentamiento no aparecerá ni en las salidas gráficas, ni en los ficheros. No forma parte de la simulación propiamente dicha.
Bien es cierto que lo expuesto en el párrafo anterior con fines didácticos no es del todo exacto. El programa startupSchedule también contiene un grupo de acciones adicional (periodActions) que se ejecutará después de las 502 acciones de calentamiento (doWarmupStep). Este grupo de acciones es el que determina la ejecución normal de la simulación y que luego se repetirá cada periodo de simulación, aunque formando parte del segundo programa.
En definitiva, podemos resumir diciendo que el primer programa (startupSchedule) se ejecuta una sola vez antes de nada en la simulación (en t=0). Este programa se compone de 502 acciones iguales (doWarmupStep) y un grupo de acciones (periodActions). Las primeras 502 acciones de calentamiento crean la historia ficticia inicial del mercado, mientras que la ejecución del grupo de acciones periodActions se encarga de que se lleve a cabo el primer intercambio bursátil de la simulación. Este programa, una vez ejecutado, desaparece y deja paso al programa que gestiona la ejecución normal de la simulación: el periodSchedule.
El segundo programa (periodSchedule) es el que determina el curso normal de la simulación. Se repite cada vez que avanza el reloj de la simulación (al contrario que el primer programa: startupSchedule) y comprende un único grupo de acciones, el ya conocido periodActions. Este grupo de acciones regula la ejecución normal de la simulación.
Copyright:
Depto. de Organización y Gestión de Empresas. Universidad de Valladolid
Field Summary | |
swarm.activity.FActionForEach |
actionForEach
Utilizado para crear acciones para cada uno de los agentes. |
java.util.LinkedList |
agentList
La lista enlazada de Java que contiene a todos los agentes. |
ASMModelParams |
asmModelParams
Objeto instancia de ASMModelParams que contiene los parámetros del modelo. |
BFParams |
bfParams
Objeto instancia de BFParams que contiene los parámetros de los bfAgents. |
Dividend |
dividendProcess
El objeto instancia de la clase Dividend que genera el dividendo mediante un proceso AR(1). |
(package private) int |
modelTime
Entero que representa el tiempo actual en la simulación |
Output |
output
Objeto creado en ASMObserverSwarm que gestiona la escritura en ficheros de los parámetros y de los resultados de la simulación. |
swarm.activity.ActionGroup |
periodActions
El grupo de acciones que se ejecutará secuencialmente en cada periodo de simulación. |
swarm.activity.Schedule |
periodSchedule
Programa que contiene únicamente al grupo de acciones periodActions. |
Specialist |
specialist
El especialista o market-maker, que vacia el mercado. |
swarm.activity.Schedule |
startupSchedule
Este programa se ejecuta una sola vez antes de nada en la simulación (en t=0). |
World |
world
El mundo. |
Constructor Summary | |
(package private) |
ASMModelSwarm(swarm.defobj.Zone aZone)
Constructor de la clase. |
Method Summary | |
swarm.activity.Activity |
activateIn(swarm.objectbase.Swarm swarmContext)
En este método se activan los programas del asmModelSwarm. |
java.lang.Object |
buildActions()
Crea las acciones. |
java.lang.Object |
buildObjects()
Construye e inicializa los objetos principales de la simulación: el dividendo, el mundo, el especialista y los agentes. |
java.lang.Object |
doWarmupStep()
Este método se ejecuta 502 veces en tiempo de simulación t=0 con el objetivo de crear una historia bursátil ficticia inicial. |
void |
drop()
Este mensaje nos permite avisar a los distintos objetos de que la simulación ha terminado. |
java.util.LinkedList |
getAgentList()
Devuelve la lista enlazada de agentes |
double |
getInitialCash()
Devuelve la posesión inicial de efectivo de los bfagents, variable instancia de asmModelParams |
int |
getModelTime()
Devuelve el entero que representa el tiempo actual en la simulación. |
int |
getNumBFagents()
Devuelve el número de bfagents, variable instancia de asmModelParams |
Output |
getOutput()
Devuelve una referencia al objeto output. |
Specialist |
getSpecialist()
Devuelve una referencia al market-maker (objeto specialist). |
World |
getWorld()
Devuelve una referencia al mundo (objeto world), donde se registra la situación actual y pasada del mercado. |
java.lang.Object |
periodStepDividend()
Dice al objeto dividendProcess que genere un nuevo dividendo, se lo envía al mundo e incrementa el tiempo de simulación en 1. |
java.lang.Object |
periodStepPrice()
En primer lugar le dice al market-maker que fije el precio de mercado. |
java.lang.Object |
setBatchRandomSeed(int newSeed)
El valor de la semilla (randomSeed) para generar números aleatorios permanece constante a no ser que se modifique a través de este método. |
java.lang.Object |
setOutputObject(Output obj)
Le indicamos dónde encontrar el objeto que gestiona la escritura en ficheros de los parámetros y de los resultados de la simulación. |
java.lang.Object |
setParamsModel$BF(ASMModelParams modelParams,
BFParams bfp)
Cuando creamos el asmModelSwarm, necesitamos comunicarle dónde encontrar los parámetros para que cree los agentes y demás objetos conforme a los parámetros introducidos por el usuario. |
java.lang.Object |
writeParams()
Este método ordena al objeto Output crear un fichero con los parámetros de la simulación. |
Field Detail |
int modelTime
public swarm.activity.ActionGroup periodActions
public swarm.activity.Schedule periodSchedule
public swarm.activity.Schedule startupSchedule
public java.util.LinkedList agentList
public Specialist specialist
public Dividend dividendProcess
public World world
public Output output
public BFParams bfParams
public ASMModelParams asmModelParams
public swarm.activity.FActionForEach actionForEach
Constructor Detail |
ASMModelSwarm(swarm.defobj.Zone aZone)
aZone
- Zona de memoria Swarm en la que se aloja el objeto SwarmMethod Detail |
public java.lang.Object setParamsModel$BF(ASMModelParams modelParams, BFParams bfp)
modelParams
- Objeto instancia de ASMModelParams que contiene
los parámetros del modelo.bfp
- Objeto instancia de BFParams que contiene los parámetros de los
bfAgents.public java.lang.Object setOutputObject(Output obj)
obj
- Objeto instancia de Output que gestiona la escritura en
ficheros de los parámetros y de los resultados de la simulación.public int getNumBFagents()
public double getInitialCash()
public java.util.LinkedList getAgentList()
public World getWorld()
public Specialist getSpecialist()
public Output getOutput()
public int getModelTime()
public java.lang.Object setBatchRandomSeed(int newSeed)
newSeed
- Semilla para la generación de números aleatorios.public java.lang.Object buildObjects()
public java.lang.Object writeParams()
public java.lang.Object buildActions()
Crea las acciones. Como ya hemos indicado en la introducción a esta clase, el modelo consta de dos programas de acciones: el startupSchedule y el periodSchedule.
startupSchedule se compone de 502 acciones iguales (doWarmupStep) y un grupo de acciones (periodActions). Se ejecuta un única vez en t=0.
periodSchedule es el programa que determina el curso normal de la simulación. Se repite cada vez que avanza el reloj de la simulación (al contrario que el primer programa: startupSchedule) y comprende un único grupo de acciones, el ya conocido periodActions.
Cabe destacar que el tiempo de generación no se calcula a través de un contador, sino que es Swarm quien lo calcula internamente. Podremos cosultar el tiempo de simulación en cualquier momento mediante el método getTime.
public java.lang.Object doWarmupStep()
public java.lang.Object periodStepDividend()
public java.lang.Object periodStepPrice()
public swarm.activity.Activity activateIn(swarm.objectbase.Swarm swarmContext)
swarmContext
- El entorno de nuestro Swarm.public void drop()
|
||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||
SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |