|
||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||
SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
asm.Agent | +--asm.BFagent
Title: BFgent
Description: El BFagent--"bitstring forecasting agent" es la piezacentral del modelo de ASM. El agente compite en una bolsa de valores, él compra, vende. Decide comprar o vender haciendo predicciones sobre lo que es probable que el precio de la acción haga en el futuro. Para hacer las predicciones, guarda una lista grande de forecasters disponible, y cada forecaster hace una predicción del precio. Estas previsiones que se crean en la subclase de BFCast son entidades bastante sofisticadas, ellos pueden supervisar muchas condiciones diferentes del mundo. Se usa el mejor forecaster que tiene en el registro en un momento dado para predecir el precio futuro que a su vez lleva a la decisión del buy/sell.
La estructura de los agentes esta formada por varias clases. BFParams es una clase que guarda valores de los parámetros por BFagents, y BFCast es donde se guardan los forecasters. BFCast, a su vez, guarda su bits de las condiciones en la subclase llamado BitVector.
Si usted profundiza en el código de este agente, encontrará una cosa confusa. Este código y artículos basados en él usan el término "bit" para referirse a algo que puede valer 0, 1, o 2. "0 significa no importa", 1 significa "NO" y 2 significa "SÍ." La confusión está en que se necesitan dos bits para representar esta cantidad de información.
En el binario, los valores sería {00,01,10}, respectivamente, pero teniendo esto claro no hay problema. En cualquier caso en el código, como comentario, estan desarrollados varios puntos a tener en cuanta para seguir el funcionamiento de la clase
Copyright:
Depto.Organización Industrial. Universidad de Valladolid
Field Summary | |
java.util.LinkedList |
activeList
Una lista enlazada de Java, ( en la versión de Objective-C es un Swarm array) que mantiene los forecast activos |
double |
avspecificity
specificity media de los forecasters activos |
int |
currentTime
El agente verifica regularmente Swarm para ver qué hora es |
double |
divisor
Coeficiente usado para calcular la demanda de acciones. |
java.util.LinkedList |
fcastList
Una lista enlazada de Java, ( en la versión de Objective-C es un Swarm array) que mantiene los forecast que el agente usa |
double |
forecast
predicción del precio de la acción:(trialprice+dividend)*pdcoeff + offset. |
int |
gacount
¿Cuántas veces se ha utilizado el algoritmo genético? |
double |
global_mean
price+dividend |
int |
lastgatime
Último periodo de tiempo en el que funciono el algoritmo genético |
double |
lforecast
valor del forecast del periodo anterior |
(package private) static double |
minstrength
|
double |
offset
Coeficiente usado en la prediciión del precio de la acción, recalculado en cada periodo en prepareForTrading |
java.util.LinkedList |
oldActiveList
Una lista enlazada de Java, ( en la versión de Objective-C es un Swarm array) que mantiene los forecast que el agente usó en el periodo anterior |
(package private) static BFParams |
params
Copia de cada agente de los parámetros |
double |
pdcoeff
Coeficiente usado en la prediciión del precio de la acción, recalculado en cada periodo en prepareForTrading |
BFParams |
privateParams
El objeto BFParams mantiene los parámetros del objeto |
double |
realDeviation
ftarget-lforecast: ¿Cómo de lejos estuvo la predicción del agente |
double |
variance
Una media móvil exponencial con pesos de la varianza histórica del agente: combina la varianza anterior con la desviación al cuadrado:bv*variance + av*deviation*deviation |
double |
WEIGHTED
|
World |
worldForAgent
Copia del mundo para cada agente |
Fields inherited from class asm.Agent |
cash, demand, dividend, initialcash, intrate, intratep1, mincash, minholding, myID, position, price, profit, wealth |
Constructor Summary | |
(package private) |
BFagent(swarm.defobj.Zone aZone)
|
Method Summary | |
boolean |
changeIntToBoolean(int a)
Función auxiliar que hemos creado para pasar de un entero aun valor boolean, ya que en Java sólo se entienden estos en expresiones lógicas |
BitVector |
collectWorldData(swarm.defobj.Zone aZone)
Un forecast tiene una serie de condiciones a las que mira. |
java.lang.Object |
copyList$To(java.util.LinkedList list,
java.util.LinkedList outputList)
Método implemetado para copiar de una lista enlazada de JAVA a otra |
BFCast |
CopyRule$From(BFCast to,
BFCast from)
Este es un método que copia las variables de instancia de un objeto forecast a otro. |
BFCast |
createNewForecast()
Crea una nueva forecast ( instancia de BFCast), con todos los bits de condición puestos a 00, significando "no importa". |
BFCast |
Crossover$Parent1$Parent2(BFCast newForecast,
BFCast parent1,
BFCast parent2)
Crossover en los bits de condición, Crossover() utiliza un crossover uniforme, cada bit es elegido aleatoriamente de un padre u otro. |
double |
drand()
Método implementado para obtener nºs aleatorios uniformes[0,1] |
java.lang.Object |
feedForward()
Actualmente no hace nada, sólo se usa en ANNagentes ( basados en redes neuronales) |
void |
Generalize$AvgStrength(java.util.LinkedList list,
double avgstrength)
Generalize Generalize busca reglas que no han sido empleadas durante "longtime" y las hace más generales cambiando aleatoriamente 0´s y 1´s a "no importa". |
double |
getDemandAndSlope$forPrice(double slope,
double trialprice)
Devuelve la demanda ( si > 0) u oferta (si < 0) usando la "mejor" forecast elegida en -prepareForTrading. |
double |
getDeviation()
Devuelve el valor absoluto de realDeviation |
java.lang.Object |
getInputValues()
Actualmente no hace nada, sólo se usa en ANNagentes ( basados en redes neuronales) |
BFCast |
GetMort$Rejects(BFCast new2,
java.util.LinkedList rejects)
GetMort() selecciona uno de las forecast más débiles de npool para reemplazar con una nueva regla generada. |
double |
getRealForecast()
Devuelve el forecast del agente |
static void |
init()
Es vital configurar los valores en la clase de los forecast, BFCast, el cual a su vez inicializa la clase BitVector |
java.lang.Object |
initForecasts()
Crea los Objetos BFCast (forecast) y los pone en la lista llamada fCastList. |
int |
irand(int x)
Método implementado para obtener nºs aleatorios uniformes[0,x-1] |
int |
lastgatime()
Devuelve la última vez que se uso el Algoritmo Genético |
void |
MakePool$From(java.util.LinkedList rejects,
java.util.LinkedList list)
Dada una lista de forecasts, encuentra las peores y las pone en el grupo de rechazables. |
boolean |
Mutate$Status(BFCast new2,
boolean changed)
Mutate Para los bits de condición, Mutate() mira cada bit con probabilidad pmutation. |
int |
nbits()
Devuelve "condbits" de parameters: el número de bits de condición que son monitorizados en world o 0 si no hay ninguno |
int |
nrules()
Devuelve el nº de forecasts que estan siendo usados. |
java.lang.Object |
performGA()
Hace funcionar el Algoritmo Genético. |
java.lang.Object |
prepareForTrading()
Prepara una nueva lista activa de los forecast activos del agente, y calcula los coeficientes pdcoeff y offset en la ecuación forecast = pdcoeff*(trialprice+dividend) + offset La lista activa de todos los forecast que coinciden con las presentes condiciones es salvada para posteriores actualizaciones |
static void |
setBFParameterObject(BFParams x)
Este método le dice a BFagentes donde mirar para conseguir los parámetros por defecto. |
java.lang.Object |
setConditionsRandomly(BFCast fcastObject)
Coge un objeto forecast y aleatoriamente cambia los bits que lo componen. |
BFCast |
Tournament(java.util.LinkedList list)
Tournament |
void |
TransferFcastsFrom$To$Replace(java.util.LinkedList newList,
java.util.LinkedList forecastList,
java.util.LinkedList rejects)
TransferFcasts |
java.lang.Object |
updateActiveList(BitVector worldvalues)
Este es el bucle principal al que sometemos a los forecasts. |
java.lang.Object |
updatePerformance()
Ahora actualizamos la varianza y la fuerza de todas las forecasts que estaban activas en el periodo anterior, ahora que sabemos como han funcionado. |
java.lang.Object |
updateWeights()
Actualmente no hace nada, sólo se usa en ANNagentes ( basados en redes neuronales) |
double |
urand()
Método implementado para obtener nºs aleatorios uniformes[-1,1] |
Methods inherited from class asm.Agent |
constrainDemand, creditEarningsAndPayTaxes, getAgentPosition, getCash, getDividendFromWorld, getPriceFromWorld, getWealth, setID, setInitialCash, setInitialHoldings, setintrate, setminHolding$minCash, setPosition, setWorld |
Field Detail |
public int currentTime
public int lastgatime
public double avspecificity
public double forecast
public double lforecast
public double global_mean
public double realDeviation
public double variance
public double pdcoeff
public double offset
public double divisor
public int gacount
public BFParams privateParams
public java.util.LinkedList fcastList
public java.util.LinkedList activeList
public java.util.LinkedList oldActiveList
public World worldForAgent
public final double WEIGHTED
static BFParams params
static double minstrength
Constructor Detail |
BFagent(swarm.defobj.Zone aZone)
Method Detail |
public final double drand()
public final double urand()
public int irand(int x)
x
- public static void setBFParameterObject(BFParams x)
x
- public static void init()
public java.lang.Object initForecasts()
public BFCast createNewForecast()
public java.lang.Object setConditionsRandomly(BFCast fcastObject)
fcastObject
- public java.lang.Object prepareForTrading()
prepareForTrading
in class Agent
public BitVector collectWorldData(swarm.defobj.Zone aZone)
aZone
- public boolean changeIntToBoolean(int a)
a
- valor enteropublic java.lang.Object updateActiveList(BitVector worldvalues)
worldvalues
- public java.lang.Object getInputValues()
public java.lang.Object feedForward()
public double getDemandAndSlope$forPrice(double slope, double trialprice)
getDemandAndSlope$forPrice
in class Agent
slope
- trialprice
- public double getRealForecast()
public java.lang.Object updatePerformance()
updatePerformance
in class Agent
public double getDeviation()
public java.lang.Object updateWeights()
public int nbits()
public int nrules()
public int lastgatime()
public java.lang.Object performGA()
public BFCast CopyRule$From(BFCast to, BFCast from)
to
- from
- public void MakePool$From(java.util.LinkedList rejects, java.util.LinkedList list)
rejects
- list
- public BFCast Tournament(java.util.LinkedList list)
list
- public boolean Mutate$Status(BFCast new2, boolean changed)
new2
- changed
- public BFCast Crossover$Parent1$Parent2(BFCast newForecast, BFCast parent1, BFCast parent2)
newForecast
- parent1
- parent2
- public void TransferFcastsFrom$To$Replace(java.util.LinkedList newList, java.util.LinkedList forecastList, java.util.LinkedList rejects)
newList
- forecastList
- rejects
- public BFCast GetMort$Rejects(BFCast new2, java.util.LinkedList rejects)
new2
- rejects
- public void Generalize$AvgStrength(java.util.LinkedList list, double avgstrength)
list
- avgstrength
- public java.lang.Object copyList$To(java.util.LinkedList list, java.util.LinkedList outputList)
list
- outputList
-
|
||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||
SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |