1

開発者が多数の異なるプロジェクトでチームで作業しているソフトウェア会社があるとします。プロジェクトには、割り当てられた開発者の特定のスキルが必要です。私の目的のために、私はそれをシンプルに保ち、これを 1 つのスキル、つまりプログラミング言語に限定したいと考えています。そのため、Java が必要なプロジェクトもあれば、C が必要なプロジェクトもあります。プロジェクトの期間は決まっており、各プロジェクトには 2 人の開発者を割り当てる必要があります。

いつでも、いくつかのプロジェクトが進行中で、新しいプロジェクトが入ってきて、将来のある時点で計画する必要があります。どの開発者がいつ、どのプロジェクトに取り組むべきかのスケジュールを計算したい。

私は最適な解決策を探しているわけではありません (それが可能であれば)。人間のマネージャーが作成できるスケジュールで満足しています。

Resource Constrained Scheduling Problems と Assignment Problems に関する記事を読んだことがありますが、正式な CS トレーニングはほとんど受けていないため、これらの問題のさまざまなバリエーションのすべてのニュアンスをよく理解していません。

私の問題は、ジョブがプロジェクトであり、開発者がマシンであるジョブショップスケジューリングのより単純なバリエーションであると思います。そのため、ジョブには同時に複数のマシンが必要です。実行中のプロジェクトは中止できないため、最初に終了する必要があるという先行制約が 1 つだけあります。

私が読んだすべての可能なソリューションから、私は遺伝的アルゴリズムを使用する傾向があります. 線形計画法の良い結果についても読んだことがありますが、それについてはほとんど知りません。

遺伝的アルゴリズムは、この種の問題に対する実行可能な解決策ですか? または、より良い解決策はありますか?

4

2 に答える 2

1

一方に開発者、もう一方に必要なプロジェクト メンバーを含む 2 部グラフを作成します。「必要なプロジェクト メンバー」とは、プロジェクトに 3 人の開発者が必要な場合、おそらく と という名前の 3 つのノードを追加することを意味Pします。P0P1P2

その開発者がそのプロジェクトに必要なすべてのスキルを持っている場合、その開発者と必要なプロジェクト メンバーとの間に境界線を引きます。問題は、このグラフ内で一致するものを見つけることになります。これを行うために使用できる標準アルゴリズムがあります。

于 2012-05-13T20:44:24.483 に答える
0

遺伝的アルゴリズムを使用することは実現可能なアプローチですが、非常に野心的です。

貪欲なアルゴリズムから始めます。

于 2012-05-13T14:57:49.670 に答える