return v;
}
}
В теле программы стратегия поведения рационально-шумовых агентов описана следующим образом:
public class RationalStrategy implements Strategy {
private static final RationalStrategy INSTANCE = new RationalStrategy();
public static RationalStrategy getInstance() {
return INSTANCE;
}
private RationalStrategy() {
}
public double getPrice(Trader trader, Regulator regulator, int v) {
double p=0.0;
if (v>0){
if(regulator. asks. keySet().size()!=0){
if(trader. cash>1.01*regulator. asks. keySet().iterator().next().getPrice())
p=1.01*regulator. asks. keySet().iterator().next().getPrice();}
else p=regulator. average_Price;}
if (v<0)
if(regulator. bids. keySet().size()!=0)
p=0.99*regulator. bids. keySet().iterator().next().getPrice();
else p=regulator. average_Price;
return p;
}
public int getVolume(Trader trader, Regulator regulator){
int v=0;
if (regulator. averagePrice. get(regulator. averagePrice. size()-2)==regulator. average_Price)
v=1;
if (regulator. averagePrice. get(regulator. averagePrice. size()-1)>regulator. averagePrice. get(regulator. averagePrice. size()-2))
v=1;
if (regulator. averagePrice. get(regulator. averagePrice. size()-1)<regulator. averagePrice. get(regulator. averagePrice. size()-2) && trader. volume>0)
v=-1;
return v;
}
}
В теле программы стратегия поведения стабилизирующих агентов описана следующим образом:
public class StabilityStrategy implements Strategy {
private static final StabilityStrategy INSTANCE = new StabilityStrategy();
public static StabilityStrategy getInstance() {
return INSTANCE;
}
private StabilityStrategy() {
}
public double getPrice(Trader trader, Regulator regulator, int v) {
double p=0.0;
if (v>0 && trader. cash>1.01*regulator. average_Price)
p=1.01*regulator. average_Price;
if (v<0)
p=0.99*regulator. average_Price;
return p;
}
public int getVolume(Trader trader, Regulator regulator){
int v=0;
if (regulator. asks. size()>regulator. bids. size() && trader. volume>0)
v=-1;
if (regulator. asks. size()<regulator. bids. size())
v=1;
if (regulator. asks. size()==regulator. bids. size())
if (random()<=0.5)
v=1;
else {
if (trader. volume==0)
v=0;
else v=-1;
}
return v;
}
}
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 |


