机器智能-高频问题:局部束搜索&遗传算法

1、局部束搜索:
a、随机产生k个状态,然后每一步从所有的后继状态中选择k个最佳的后继状态(也有健康度函数,详见下文)直到找到目标状态(内存中同时保留k个状态),增大了找到全局最优的概率。
b、相当于多个人去找,或者多次爬山法。
c、状态越多,找到最优的可能性越大
d、空间复杂度高;时间复杂度大;来自同一个父节点的子节点可能非常相似,可能导致同样的一个局部最优,从而减小了找到全局最优的可能性。
e、可以通过每个状态各产生一个最佳后继状态(待验证)

2、随机束搜索:不找k个最佳,而是随机找到k个后继状态,随机概率与状态值(这个状态好不好)成正比,又引入了随机性减少了子节点的相似性。状态值越好,越可能被随机选中。

3、遗传算法:模拟生物学上的有性繁殖,然后进行人工培育。
a、以k个随机产生的状态开始(遗传了局部束算法的特点)
b、一个后继状态由两个父状态决定(增加了子状态的多样性和进化的可能性)
c、通常一个状态表示成一个字符串
d、定义一个健康度量函数用来评价状态的好坏程度。
e、以八皇后问题为例,非冲突的皇后对数量最小为0,最高为(87)/(12)=28,因此如果有四个样本,分别有24、23、20、11对非冲突皇后,那么计算出概率为24/(24+23+20+11)=31%,得到四个样本被选中产生子节点的概率。
f、然后选择n个样本进行两两配对,产生新的子样本(以皇后问题为例,进行交叉互换,随机选择一个断开点,然后交叉互换样本值,产生新的样本)
g、还需要发生基因突变,随机选择一个样本的一个位置,然后将其随机更改为一个合适的值。
h、通过选择、交叉、突变的操作产生下一轮的状态。
i、设计代码的时候尽可能避免自交。
j、当健康度曲线比较平滑和缓慢的时候就可以结束。跑一次不一定能找到最优解,但有找到最优解的可能。

发布了275 篇原创文章 · 获赞 160 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/qq_40851744/article/details/104820979