Prírodou inšpirované algoritmy

študijné materiály pre projekt mobilnej triedy umelej inteligencie

Späť ku kurzom triedy
Obsah
Trieda Random
Požívateľské generovanie pseudonáhodných čísel



Ostatné kapitoly
Swarm
RePast
LEM
SDML
Eos
DDLab


Tutoriály
 Celulárne automaty
 Morfogenéza
 Simulátory
 Evolučné algoritmy
 Chaos
 Roboty
 Rôzne


Požívateľské generovanie pseudonáhodných čísel

Používateľský generátor pseudonáhodných čísel stále používa knižnice Colt, ale obchádza použitie triedy Random z RePast-u. Toto budete potrebovať, ak budete chcieť použiť distribúciu s nezávislým generátorom. Hlavnou myšlienkou tu je definovať nejakú premennú v našom modeli, ktorá bude vhodného typu distribúcie, vytvoriť vlastný generátor a tento asociovať s distribúciou, ktorú hodláme použiť. Napríklad:

import cern.jet.random.*; import cern.jet.random.engine.MersenneTwister; ... public class MyModel extends SimModelImpl { Normal myNormalDist; Uniform myUniformDist; ... public void begin() { MersenneTwister generator1 = new MersenneTwister(123); MersenneTwister generator2 = new MersenneTwister(321); myNormalDist = new Normal(1.0, 1.0, generator1); myUniformDist = new Uniform(generator2); } ... public void someMethod() { int index = myUniformDist.nextIntFromTo(0, 10); double val = myNormalDist.nextDouble(); } }

Dôležitou časťou je vytvorenie dvoch rôznych Mersenne Twister generátorov. Toto bude poskytovať dva nezávislé prúdy pseudonáhodných čísel pre distribúcie. Môžeme parametrizovať inicializačné hodnoty týchto distribúcií a potom ich urobiť používateľsky prístupné cez get a set metódy. Ak sú inicializačné hodnoty používateľsky špecifikovateľné, je tiež dôležité vytvroriť distribúcie v metóde begin() namiesto v metóde setup().

Hore
Kontakt: Marek Bundzel