0

FiFo などのジョブ スケジューリング アルゴリズムをシミュレートする C++ プログラムの作成を開始しました。私はまだ終わっていませんが、現在の主な問題は、プログラムで時間の流れを作成する方法です。

これはこれまでの私のメインコードです:

for (i = 1; i < 10; i++)
{
  Time1 = clock();
  //this is the alogrithm to generate poisson arrival sequence
  do{   
    k = k + 1;
    // Generate a random number between 0 and 1
    // return a uniform number in [0,1].
    double u = rand() / (double)RAND_MAX;   
    p = p * u;
  }while (p > L);
  A[i] = k-1;   

  Time2 = clock();  
  DT = Time2 -Time1;
  TotalTime=TotalTime + DT;
  cout << "  Total time  " << TotalTime 
       << "  table :" << A[i] 
       << "  Arrival Time  "            
       << TotalTime <<endl ; 

私の主な問題は次のとおりです。クロックを使用した時間測定単位は、clock() 関数から出力される時間単位が「奇妙な」数値であることです。別の関数を使用する必要がありますか?

10 回の繰り返しの結果

  Total time  6.19522e+032  table :28  Arrival Time  6.19522e+032
  Total time  6.19522e+032  table :29  Arrival Time  6.19522e+032
  Total time  6.19522e+032  table :30  Arrival Time  6.19522e+032
  Total time  6.19522e+032  table :31  Arrival Time  6.19522e+032
  Total time  6.19522e+032  table :32  Arrival Time  6.19522e+032
  Total time  6.19522e+032  table :33  Arrival Time  6.19522e+032
  Total time  6.19522e+032  table :34  Arrival Time  6.19522e+032
  Total time  6.19522e+032  table :35  Arrival Time  6.19522e+032
  Total time  6.19522e+032  table :36  Arrival Time  6.19522e+032

PS : お使いのマシンで実行したい場合は、残りのコードを提供できます。

4

2 に答える 2

1

ジョブのスケジューリングは、「離散イベント」シミュレーションとして実行する方がはるかに簡単です。このチュートリアル ペーパーをチェックして、そのようなモデルを構築する方法を確認してください。このホワイトペーパーのフレームワークは Java で作成されています (Ruby で実装されています) が、C++ に移植するのは簡単です。

于 2013-07-20T18:01:48.650 に答える