事情是这样的,有个需求是设计一个抽题程序:能够随机抽题并且能够将题随机分配给班里相应数量的人回答,要做到题不重复,然后回答者也不重复。我想了下这就是一个交叉组合匹配的问题,然后前段时间我一个朋友毕设有用到遗传算法,他设计的是一个排课系统,利用遗传算法去优化了排课系统,我就在想这个抽题程序应该是跟排课系统逻辑差不多的吧,所以就去了解了下遗传算法。于是乎感觉这个抽题程序应该也可以用到遗传算法来优化组合匹配。但是我现在对于遗传算法一头雾水,摸不着头脑。我简单看了两篇博文
能够有一些了解(就是主要去设计遗传算法中的选择,交叉,变异算子),但是对于如何应用到抽题程序还是很懵,所以想问问有没有前辈能够给出一些设计思路和建议? 谢谢~
1
houshuu 2023-05-04 21:46:20 +08:00
4 年没碰了,但是我记得遗传算法选择,交叉,变异倒是几乎都差不多,重中之重是要构建合理的适应度函数。
下面这个知乎可能有帮助。 https://www.zhihu.com/question/40102661 你这个问题里,没有写清楚题目是否本身有其难度系数如果有的话那确实是典型可以用来优化的问题。 我自己做适应度函数的话,应该会设定为对于目标难度系数值的差值和分散惩罚项 |
2
summerlv OP 可以加难度系数吧,我觉得可以设置题目难度系数(简单,中等,难)这三个等级
|
3
summerlv OP @houshuu 可以加难度系数吧,我觉得可以设置题目难度系数(简单,中等,难)这三个等级,适应度函数是怎么构建啊?我好好的看下你发的链接吧,谢谢指点咯~
|
4
coldheart 2023-05-05 08:39:50 +08:00
需要优先考虑的是遗传算法的编码,即将具体问题转换为可计算的编码形式(如二进制编码)。
|
5
coldheart 2023-05-05 08:43:13 +08:00
另外可以看一下这个库: http://geatpy.com/index.php/home/
|
6
lidegao899 2023-05-05 15:42:44 +08:00
一点拙劣想法:
每个人抽两题,相当于一个二维向量; 全班十个人,合并起来就是一个二十维向量,作为 DNA ; 可以把向量内部题目重复度、难度系数作为惩罚函数,找到最佳个体。 |