我正在研究实时java实现传感器网络模拟。我的模拟工作,但问题是我想做一些灵敏度分析,所以我需要多次运行模拟,一个接一个。在第一次迭代后,我无法获得任何结果,因为暂停和激活或重置它们有点问题。所以这是代码:
class Response_Time extends SimulationProcess{
/*static Random seed ;
public Response_Time(Random seeds) {
seed= new Random (seeds);
}*/
public static void main(String[] args){
for(int i=0;i<5; i++)
{
Response_Time exp = new Response_Time();
exp.await();
}
}
public void run(){
System.out.println("Creating components...");
Mesh2DSensorNetwork sn = new Mesh2DSensorNetwork(7,7);
Task_Generator tg = new Task_Generator(sn);
emiission ee = new emiission(sn);
DataCollection dc = new DataCollection(sn, tg);
try {
tg.Activate();
ee.Activate();
dc.Activate();
sn.Activate();
Scheduler.startSimulation();
System.out.println("Simulation started... "+CurrentTime());
Hold(576000);
System.out.println("Simulation stopped... "+CurrentTime());
Scheduler.stopSimulation();
tg.terminate();
ee.terminate();
dc.terminate();
sn.terminate();
SimulationProcess.mainResume();
} catch (Exception e) {
e.printStackTrace();
}
}
public void await ()
{
this.Resume();
//SimulationProcess.mainSuspend();
}
}
答案 0 :(得分:0)
我认为您需要使用Scheduler.reset()
重新启动模拟。您还可能需要在当前进程上调用SimulationProcess.finalize()
以将其从当前进程集合中删除(此项目对静态/全局成员有一些丑陋的使用)。