通常而言,我会把优化算法与目标函数分开,使二者互不影响且相对独立。就拿你的问题来说,遗传算法是一个独立模块,排课也是一个独立模块。在运行期间,遗传算法会生成众多结果序列,将其传至排课模块,而后排课模块会按照你的规则算出一个数值,也就是该序列的适应值,并回传给遗传算法。这里,排课模块要判断序列是否符合规则(可能符合但不够好,也可能不符合),对于不符合规则的序列,直接返回一个极差值给遗传算法就行,遗传算法自会淘汰掉这种适应度极差的序列。当然,上述做法适用于较易满足排课规则的情形。若排课规则极难有解,这么做的话,遗传算法可能就无法找到解了。特殊情况下,如果按照规则让遗传算法自由进化难以满足要求,那就需要自行定制遗传算法了,要让它的每个算子都能生成满足条件的解,这就需要具体情况具体分析了。
Copyright © 2025 IZhiDa.com All Rights Reserved.
知答 版权所有 粤ICP备2023042255号