私はタスクベースの並列計算を研究していました。古いプロジェクト管理の問題のバリエーションに興味がありました。これは、アクティビティ・オン・バテックス(AOV)プロジェクトネットワークは、デッドロックサイクルがない場合にトポロジカルソートアルゴリズムを使用して計算できます。クリティカルパス上のアクティビティの合計時間は、プロジェクトの最小完了時間を示します。新しいプロジェクト管理アルゴリズムが有限数の従業員に求められていました
しかし、これは、互いに依存しないで作業を同時に完了するのに十分な労働者が常にいることを前提としています。利用可能なワーカー(プロセッサ/コア)の数が有限である場合、特定のアクティビティは依存しているアクティビティがまだ完了していないために待たずに、ただ単にすべてのワーカーが他のアクティビティをやっているためです。これは、今日のマルチコア・パラレル・コンピューティングの簡略化されたモデルです。すべての活動を行う必要がある唯一の労働者がいる場合、プロジェクト完了時間はすべての活動の合計時間です。我々はそのようにシングルコアのシリアルコンピューティングに戻っています。
限られた数のワーカーが利用可能な場合、AOVネットワークの最小完了時間を与える効率的なアルゴリズムはありますか?どのような活動を行うべきかを賢明に選択しなければならないのは、後に労働者のアイドリング時間を最小限に抑えるために、最小時間は、クリティカルパス時間(無限の労働者)とすべての活動の合計時間(1人の労働者)の間のどこかにあるべきです。また、合計時間を労働者の数で割ったもの(アイドリングなし)よりも大きくなければなりません。その最小時間を取得するアルゴリズムはありますか?
私はいくつかのYoutubeの動画をGoogle検索しました。ここでの問題は、制約付きリソースプロジェクト管理の特殊なケースです。私の問題では、すべてのアクティビティが1人のワーカー(プロセッサ)を占有しています。しかし残念ながら、それらのビデオは私に一般的なアルゴリズムを教えてくれません。ここで使用されている方法では、クリティカルパスを変更せずにフローティングアクティビティをシフトして、一部の制約の下でピークのリソース消費率を削減しています。制約が非常に低く、プロジェクトを遅延させなければならない場合、これは常に可能ではありません。何か案は? –