有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java遗传算法:请求优化

我是遗传算法的新手,我被指派去实现一个遗传算法来优化药房每个工作日的请求顺序。首先,让我解释一下问题:

有9个家庭发出在工作周的任何一天(周一至周五)参加的请求。药房每天只能照顾1到3个家庭,不能多也不能少,而且他们不能在同一周内重复任何家庭。主要目标是优化每个家庭的最佳就诊日,这样,药房在对问题施加限制的情况下,每周最多可处理请求。优化算法的输入是每个家庭发出的每个请求数的年平均值。例如:

(为了简化示例,让我们只处理3个族):

输入:

|周一|周二|周三|周四|周五
F1 | 10 | 20 | 2 | 0 | 7
F2 | 20 | 12 | 0 | 1 | 2
F3 | 2 | 0 | 0 | 19 | 3

可能的解决办法:

|周一|周二|周三|周四|周五
|| F2 | F1 | F3 |

到目前为止,我一直在研究遗传学和遗传算法的整个概念。我研究过粒子群优化算法,但由于时间比较短,我决定使用一个框架。我正在使用JGAP,但我的主要问题是,我应该以什么方式提出一个潜在的解决方案?我的意思是,我应该如何组织染色体上用于交配、繁殖等的基因。。。?我已经开发了一个适应度函数,但是我不能按照我想要的方式编码基因。有什么建议吗


共 (1) 个答案

  1. # 1 楼答案

    in what way do I present a potential solution?

    每个家庭都应该安排在一天之内。因此,您可以存储每个家庭预定的日期。一个基因可能是5天中的一天,一个铬元素可能有9天,每个家庭一个

             1 2 3 4 5 6 7 8 9
    Chrome   M T T F W H T M T
    

    所以家庭1在周一,家庭2和家庭3在周二,等等。你应该在适应度函数中施加所有其他约束(The pharmacy can only attend 1 to 3 families per day

    另一种编码可能是

     M1 M2 M3 T1 T2 T3 W1 W2 W3 ... F2 F3
     1  2  -  -  5  -  9  -  3  ... 4  -
    

    所以你会接受所有可能的预约,填写家庭,或者让他们空着。在这种情况下,健身功能应确保每个家庭都有一次预约