私はJavaで離散事象シミュレーションに取り組んでいます。時間に関するコードは以下の通りです。離散事象シミュレーション時間単位Java
class Event implements Runnable, Comparable {
double time;
Runnable runnable;
Event(double time, Runnable aRunnable) {
this.time = time;
runnable = aRunnable;
}
public boolean lessThan(Comparable y) {
Event e = (Event) y; // Will throw an exception if y is not an Event
return this.time <= e.time;
}
@Override
public void run() {
runnable.run();
}
}
class Simulator extends AbstractSimulator {
static Random rnd;
static double time;
double endTime;
static double now() {
return time;
}
Simulator(long seed, double simDuration) {
time = 0.0;
events = new ListQueue();
rnd = new Random(seed);
endTime = simDuration;
}
void doAllEvents() {
Event e;
while ((e = (Event) events.removeFirst()) != null && time < endTime) {
if(time > e.time)
System.out.printf("Something is worng! time=%f eventtime=%f",time,e.time);
time = e.time;
e.run();
System.out.printf("\n Time = %f", time);
}
}
イベントの失敗に基づいて結果を検討しますが、プロットするときにはユニットを使用する必要があります。
シミュレーション時間にJavaが使用するユニットはどれですか?または、私はそれらを2番目と考えてもいいですか?それとも実世界の時間に変換する計算がありますか?事前に
おかげで、
敬具は、
UPDATE:回答を
おかげで、私は正確な時間を計測してみましたが、私はここに問題を抱えています。既存の仮想シミュレーション時間は、ネットワーク寿命を測定しています。そして、それは例のための正確な時間と同じではありません。 75台のデバイスのシミュレーションを実行すると、netorklifetimeが短くなって70.0と表示されますが、実時間は寿命が1500.0以上のデバイスが35台以上になります。これはイベントが各デバイスで繰り返されるために発生します。
ここで私は仮想シミュレーション時間の単位を見つける必要があります。
おかげで再び...
注: 'Comparable'生ではない、' 'Comparableをを実装します。 –
私はSystem.nanoTime()(long)とTimeUnitクラスを使って時間を表示します。 nanoTime()は、経過時間を測定するためだけにあります – efekctive