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 に答える