赞
踩
从做菜说起,小魏是一名大厨,想要创造一道美味的菜肴。首先随机生成多个原始配方,每种配方所用的原料(鸭脖、鸡肉、大肠等)与手法(煎炒焖炸卤炖)组合不同,现实中考虑调料用量、烹饪时间等等变量,会有无穷多种解,传统算法难以求解。
请评委对几种配方做出的菜打分,分数高的配方进行配方交叉,保留一部分评分高的配方要素、舍弃评分低的配方。例如配方A和配方C的分数都高,A是卤鸭脖,C是炖大肠,配方交叉尝试新一组方案:“炖鸭脖”和“卤大肠”。
有时会在配方交叉之后,再变更食材或烹饪方式。就像是在配方中随机使用了一些与原配方无关的调料或者做法(鸭脖改成鼠头),变异可能带来惊喜(评分高),也可能有惊无喜(试试就逝世),所以只小概率进行。
再对新配方的菜评分,继续交叉、小概率变异.....不断循环直至无改进空间为止。
将其类比于生物学和遗传算法
烹饪配方 | 生物学 | 遗传算法 |
多种配方 | 群体 | 可行解集合 |
单个配方 | 个体 | 可行解 |
配方内容(原料、方式等) | 基因 | 可行解的分量 |
评分 | 适应度 | 适应度函数值 |
配方交叉 | 交叉 | 交叉操作 |
随机新操作 | 变异 | 变异操作 |
做出美味佳肴 | 物种进化 | 最优解(近似) |
函数优化、组合优化问题
NP-Hard问题
优缺点
还是以一个例题贯穿流程分析
例题:现有12份快递需要配送,背包容量350,每份快递的体积不同、收益不同,应该将哪些物品放进背包,使得所总体积不超过背包容量且总收益最大?
这是一个很典型的0-1背包问题,如果学过动态规划的同学,这个题目是非常简单的,不过这里我们用遗传算法求解之。
选择操作的准则
为什么不直接从大到小排序,直接选适应度最高的几个个体进行后续操作?
至于选择操作怎么进行,看个人,只要符合上面的准则即可。下面提供一种方法
轮盘赌法
轮盘赌法分析
当循环完成后,统计种群中所有的适应度,取最优解输出,到底是最大还是最小是最优解根据具体题目
进行运算的时候,不要忘记题目本身的一些约束。比如这个背包问题,如果体积超过背包容量上限,即使其适应度可能很高但是这种情况也不能要,所以要进行一些操作避免,比如设置惩罚系数或者直接赋0等,看个人选择。具体题目具体分析。
背包问题 | 生物学 | 遗传算法 |
多种背包方案 | 群体 | 可行解集合 |
单个方案 | 个体 | 可行解 |
每个物体是否被选中 | 基因 | 可行解的分量 |
包内总价值 | 适应度 | 适应度函数值 |
两方案中的物品交换 | 交叉 | 交叉操作 |
随机改变物品的选择 | 变异 | 变异操作 |
包内总价值最大 | 物种进化 | 最优解(近似) |
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。