をオーバーラップ範囲を検索し、タスクがマシンを1つずつ入っています。私はマシンを持って、私はに苦しんだこの疑問を持っている複数の領域に</p> <p>を
各タスクには、タスクID、開始番号、および要求するユニット数があります。
各タスクについて、タスクの範囲[開始番号、開始番号+要求単位]が前のタスク範囲の1つに重なっていないかどうかを確認する必要があります。
32個のタスクIDがあり、同じタスクIDを同時に保持することはできません(タスクId2がマシンにある場合は、別のパラメータを使用してマシンを再入力する前に実行する必要があります)
基本的な考え方は、マシンにあるすべてのタスクの範囲(32まで)でコントロールブロックを保持し、新しいタスクごとにこの構造をスキャンすることです。
アイデアはありますか?
これは現実世界の製品開発から得たもので、私はこのモデルを単純化しました。また、私は任意の複雑な数学的理論を持つことはできませんので、Cで解決策を書く必要があります:)
数値の範囲など、マシンを十分に定義しておらず、新しいタスクを処理できないときに何が起きるかは言いません。すべての新しい要求はその時点で保留されているのですか、それとも保持キューに置かれるべきですか、他の新しい要求は処理されますか?新しい要求は保持キュー内で継続的にブロックされる可能性があるため、かなり複雑になる可能性があります。例えば、実行中のタスクが処理ユニット1〜4であり、ユニット3〜6のための新しいタスクが待ち行列に入れられ、次いで新しいタスクが処理ユニット5〜8に到着し、それは許可され得るが待ちタスクに保持されるまだブロックされています。 –