我正在编写一个项目调度优化库,这是一种特殊的作业车间调度问题。为简单起见,到目前为止,我的算法仅适用于作为项目唯一资源的工人,并且到目前为止只有两种类型的约束:
1)每个工人对他可以从事的项目都有限制。只有部分工人具有熟练从事同一项目(例如:W1、W3、W7 工人可从事 P2 项目;W2、W3、W5 可从事 P3 项目等),但同一工人可熟练从事多个项目,并允许在不同的时间从事多个项目(例如:W1连续5天在P1工作,然后他切换到P2工作4天,然后他回到P1,等等)
2)每个工人每天可以工作多少小时都有一个限制——这应该代表一个工人的效率
首先,我创建了一个简单的时间表,其中仅包含 4 个项目和 4 个工人。
项目:
- P1; 开始时间:5月1日;截止日期:30天;所需工作时间:300
- P2; 开始时间:7月1日;截止日期:60 天;所需工作时间:150
- P3; 开始时间:5月15日;截止日期:45天;所需工作时间:50
- P4; 开始时间:4月20日;截止日期:20天;所需工作时间:150
工人:
- W1; 效率:10小时/天;适用于项目:P1、P2、P3、P4
- W2; 效率:5小时/天;可用于项目:P1、P3
- W3; 效率:8小时/天;可用于项目:P1、P4
- W4; 效率:6小时/天;可用于项目:P2、P4
像这样设置一个问题,遗传算法的染色体应该是什么样子,换句话说 - 如何将此数据转换为 GA 将知道如何使用的 GA 染色体(计算其上的数值适应度)?一个例子Java
将是完美的。