開発者が多数の異なるプロジェクトでチームで作業しているソフトウェア会社があるとします。プロジェクトには、割り当てられた開発者の特定のスキルが必要です。私の目的のために、私はそれをシンプルに保ち、これを 1 つのスキル、つまりプログラミング言語に限定したいと考えています。そのため、Java が必要なプロジェクトもあれば、C が必要なプロジェクトもあります。プロジェクトの期間は決まっており、各プロジェクトには 2 人の開発者を割り当てる必要があります。
いつでも、いくつかのプロジェクトが進行中で、新しいプロジェクトが入ってきて、将来のある時点で計画する必要があります。どの開発者がいつ、どのプロジェクトに取り組むべきかのスケジュールを計算したい。
私は最適な解決策を探しているわけではありません (それが可能であれば)。人間のマネージャーが作成できるスケジュールで満足しています。
Resource Constrained Scheduling Problems と Assignment Problems に関する記事を読んだことがありますが、正式な CS トレーニングはほとんど受けていないため、これらの問題のさまざまなバリエーションのすべてのニュアンスをよく理解していません。
私の問題は、ジョブがプロジェクトであり、開発者がマシンであるジョブショップスケジューリングのより単純なバリエーションであると思います。そのため、ジョブには同時に複数のマシンが必要です。実行中のプロジェクトは中止できないため、最初に終了する必要があるという先行制約が 1 つだけあります。
私が読んだすべての可能なソリューションから、私は遺伝的アルゴリズムを使用する傾向があります. 線形計画法の良い結果についても読んだことがありますが、それについてはほとんど知りません。
遺伝的アルゴリズムは、この種の問題に対する実行可能な解決策ですか? または、より良い解決策はありますか?