V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
summerlv
V2EX  ›  程序员

想问问遗传算法相关的问题

  •  
  •   summerlv · 2023-05-04 21:29:44 +08:00 · 1267 次点击
    这是一个创建于 570 天前的主题,其中的信息可能已经有所发展或是发生改变。

    事情是这样的,有个需求是设计一个抽题程序:能够随机抽题并且能够将题随机分配给班里相应数量的人回答,要做到题不重复,然后回答者也不重复。我想了下这就是一个交叉组合匹配的问题,然后前段时间我一个朋友毕设有用到遗传算法,他设计的是一个排课系统,利用遗传算法去优化了排课系统,我就在想这个抽题程序应该是跟排课系统逻辑差不多的吧,所以就去了解了下遗传算法。于是乎感觉这个抽题程序应该也可以用到遗传算法来优化组合匹配。但是我现在对于遗传算法一头雾水,摸不着头脑。我简单看了两篇博文

    遗传算法入门详解 遗传算法实现自动组卷、随机抽题

    能够有一些了解(就是主要去设计遗传算法中的选择,交叉,变异算子),但是对于如何应用到抽题程序还是很懵,所以想问问有没有前辈能够给出一些设计思路和建议? 谢谢~

    6 条回复    2023-05-05 15:42:44 +08:00
    houshuu
        1
    houshuu  
       2023-05-04 21:46:20 +08:00
    4 年没碰了,但是我记得遗传算法选择,交叉,变异倒是几乎都差不多,重中之重是要构建合理的适应度函数。
    下面这个知乎可能有帮助。
    https://www.zhihu.com/question/40102661

    你这个问题里,没有写清楚题目是否本身有其难度系数如果有的话那确实是典型可以用来优化的问题。
    我自己做适应度函数的话,应该会设定为对于目标难度系数值的差值和分散惩罚项
    summerlv
        2
    summerlv  
    OP
       2023-05-04 23:09:17 +08:00
    可以加难度系数吧,我觉得可以设置题目难度系数(简单,中等,难)这三个等级
    summerlv
        3
    summerlv  
    OP
       2023-05-04 23:11:21 +08:00
    @houshuu 可以加难度系数吧,我觉得可以设置题目难度系数(简单,中等,难)这三个等级,适应度函数是怎么构建啊?我好好的看下你发的链接吧,谢谢指点咯~
    coldheart
        4
    coldheart  
       2023-05-05 08:39:50 +08:00
    需要优先考虑的是遗传算法的编码,即将具体问题转换为可计算的编码形式(如二进制编码)。
    coldheart
        5
    coldheart  
       2023-05-05 08:43:13 +08:00
    另外可以看一下这个库: http://geatpy.com/index.php/home/
    lidegao899
        6
    lidegao899  
       2023-05-05 15:42:44 +08:00
    一点拙劣想法:
    每个人抽两题,相当于一个二维向量;
    全班十个人,合并起来就是一个二十维向量,作为 DNA ;
    可以把向量内部题目重复度、难度系数作为惩罚函数,找到最佳个体。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5650 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 06:53 · PVG 14:53 · LAX 22:53 · JFK 01:53
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.