On Apr 15, 2007, at 5:21 AM, Rick wrote:
Hello,
My main question is how do you stop a schedule.scheduleRepeating()?? or is there something better to use for what i want to do??
I am new to MASON and agent based programming in general, so I am sorry if this is a basic problem but I have spent about 12 hours almost straight on this now and have not got anywhere :-(
What I want to do is run a simulation until a flag = true store that result and then run the same simulation again (x number of times). Preferably with the results at the end of each simulation being displayed in a chart. (simulations could run one after another or all together should not matter that much, would maybe like to have an option for either though if one is not a lot more complex than the other.
The problem I am getting at the moment is stopping the schedule.scheduleRepeating() I just cant do it! think i have tried everything but it does not seem to stop.
I have included part of my code so you can see what I am trying to do better:
/*** MODEL CLASS ***/
public void start()
{
super.start(); grid = new IntGrid2D(N, N);
grid = new IntGrid2D(gridWidth, gridHeight);
NKSpace_Gen nkGen = new NKSpace_Gen(System.currentTimeMillis());
nkGen.Build_Space();
nkGen.printAllFiles();
*// ** I basically want to get this **bit below **to repeat x number of time and then get it to stop when the agent flags a variable in the agents step method to be true ***
Agent agent1 = new Agent(System.currentTimeMillis());
agent1.selectPoint();
agent1.getOneMutantNeighbours();
schedule.scheduleRepeating(agent1);
}
/*** AGENT CLASS ***/
public void step(SimState state)
{
if (mutantNeighbours.numObjs > 0 && higherFitness == false)
{
walkLandscape();
if (higherFitness == true)
{
higherFitness = false;
getOneMutantNeighbours();
}
}
else
{
System.out.println(" Higher Fitness Values Found ");
System.out.println("Fitness Value: "+ localPeak);
peakFound = true; *//** this is where I set peakFound to true and where I want to store the localPeak value and stop that agent at present it just keeps printing the two system.out.println to the console forever. (note they are only there for debug I actually will have a graphics showing the values. *
}
if (peakFound == false)
{
System.out.println("*** Current Fitness Searched ***");
System.out.println("Fitness Value: "+ currentFitness);
}
}
ANY HELP or comments would be MUCH APPRECIATED!!
Many Thanks
Rick