Parametre Pokiaľ metódy setup() , buildModel() a step() sú potrebné na vytvorenie simulácie,
simulácia stále nie je veľmi zaujímavá. Nemáme možnosť ľahko meniť počiatočné podmienky. Potrebujeme poskytnúť nejaké
parametre nášho modelu.
Parametre modelu sú definované prístupovými metódami. Názvy týchto metód začínajú get a set .
Napríklad parameter p1Strategy môže mať prístupové metódy:
import uchicago.src.sim.engine.SimpleModel;
public class MyModel extends SimpleModel {
public static final int TIT_FOR_TAT = 0;
public static final int ALWAYS_DEFECT = 1;
private int p1Strategy = TIT_FOR_TAT;
private int p2Strategy = ALWAYS_DEFECT;
...
public void setP1Strategy(int val) {
p1Strategy = val;
}
public int getP1Strategy() {
return p1Strategy;
}
public void setup() {
// rovnaké ako vyššie
}
public void buildModel() {
// rovnaké ako vyššie
}
public void step() {
int size = agentList.size();
for (int i = 0; i < size; i++) {
Player p = (Player)agentList.get(i);
p.play();
}
}
}
Za meno parametra sa považuje meno metódy bez predpony get /set ; takže v našom
prípade je meno parametra P1Strategy . Poslednou možnosťou týkajúcou sa vytvárania parametrov
je nechať RePast postarať sa o nich. Dá sa to urobiť zahrnutím mena parametra do poľa reťazcov parametrov.
Môže to byť urobené v konštruktore nášho modelu. Napríklad:
import uchicago.src.sim.engine.SimpleModel;
public class MyModel extends SimpleModel {
...
publicMyModel() {
params = new String[] {"P1Strategy"};
}
...
}
Premenná params je poskytnutá triedou SimpleModel . Je to pole obsahujúce
mená našich parametrov.
Keď už raz bol vytvorený parameter pomocou prístupových metód a jeho meno uložené v poli params ,
bude tento parameter zobrazený v paneli parametrov spustenej simulácie. Hodnota tohto parametra je čokoľvek,
čo je vrátené get metódou tohto parametra. Parameter je nastavovaný vložením novej hodnoty do textového
poľa. Zmena sa vykoná pri stlačení klávesy enter alebo pri opustení textového poľa. Novovložená hodnota
sa stane argumentom prístupovej set metódy parametra. Na tomto mieste je dôležité poznamenať, že týmto
mechanizmom nie je nikdy pristupované priamo k premennej uchovávajúcej parameter (v našom prípade k premennej
p1Strategy ).
|