扫描所有课程,记录其所属的网校。前面几节课随机选,快超过学时了,就选几个学时少的课程。 目的是减少每次选课人工计算的时间。
界面上配置的规则有
- 学员类别
- 年度
- 哪个网校
年度主要是2019-2021年三年、 课程有2种情况的人员 一种人员公需课不低于15学时、专业课不低于30学时、在这上面、学时尽量别超的多、因为按学时付费 另一种人员公需课不低于10学时、专业课不低于20学时
添加执行逻辑
点击开始
如果没有选择三项,提示
过滤一轮所有课程,排除不符合条件的。 同时将符合条件的分为两个不同分类, 不同分类下再分为不同学校。
从符合条件的里面,随机抽取,直到满足学分
然后逐一添加课程
完成后,跳转购物车页面,手工确认提交。
优化
存在一种极端的情况,总分10分,已经9.5了,又选择了一个3学时的。但是有一个学时的更好选择。
两种策略:
- 第一种:追求完美匹配。由于学时都是 5 的倍数,所有只需要每两个课程为一组,两者学时和为 5 即可。反复即可即可。
- 第二种:接受 0.5 小时的偏差。随机出一组,判断偏差是否超过 0.5,如果超过则再出一组,如此反复,知道找到满足条件的一组。
实际运行中,发现,第二种方式更简单高效,而第一种长时间运行没有结果。这说明完美的方案,远不如有一点可以接受的偏差的方案,简单直接高效。
如何排除重复项目
一个 set 集合,保存随机抽选出的 item id?(set中保存obj?)其他信息怎么存。 每次抽之后,判断set中是否已存在。如果已存在,舍弃。 或者通过接口的返回,来判断是否是重复添加的。
数值分布
遍历一遍所有 item,统计出每个区间的 item 个数。
微信关注我哦 👍
我是来自山东烟台的一名开发者,有感兴趣的话题,或者软件开发需求,欢迎加微信 zhongwei 聊聊, 查看更多联系方式