5

我正在研究实时 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();
}

}
4

1 回答 1

0

我认为您需要使用Scheduler.reset()来重新启动模拟。您可能还需要调用SimulationProcess.finalize()当前进程以将其从当前进程集合中删除(该项目对静态/全局成员有一些丑陋的使用)。

于 2012-09-02T01:05:36.347 回答