A. 为什么遗传算法优化后的的神经网络得到的仿真结果误差比不优化的还大呢求高手解答。
有可能不优化的结果出现了过拟合现象
B. 遗传算法求最小值时为什么每次结果都不一样,而且差别很大。那这么找到最小值呢
这说明遗传算法本身不收敛,还存在较大的优化空间。
建议对种群初始化方法、交叉变异方法、种群更新算子等做优化,增加最优保存策略,保证能收敛到最优解。
C. 遗传算法的不足之处
(1)编码不规范及编码存在表示的不准确性。
(2)单一的遗传算法编码不能全面地将优化问题的约束表示出来。考虑约束的一个方法就是对不可行解采用阈值,这样,计算的时间必然增加。
(3)遗传算法通常的效率比其他传统的优化方法低。
(4)遗传算法容易过早收敛。
(5)遗传算法对算法的精度、可行度、计算复杂性等方面,还没有有效的定量分析方法。
D. 为什么Matlab优化工具箱的遗传算法每次优化的结果都不一样
为什么Matlab优化工具箱的遗传算法每次优化的结果都不一样?这是因为算法的初值是随机的,所以重复计算就会有差错。为了保证计算结果,可以每次重启matlab软件后执行程序,这样得到结果就基本一致了。
E. 遗传算法有那些缺点
1、早熟。这是最大的缺点,即算法对新空间的探索能力是有限的,也容易收敛到局部最优解。
2、大量计算。涉及到大量个体的计算,当问题复杂时,计算时间是个问题。
3、处理规模小。目前对于维数较高的问题,还是很难处理和优化的。
4、难于处理非线性约束。对非线性约束的处理,大部分算法都是添加惩罚因子,这是一笔不小的开支。
5、稳定性差。因为算法属于随机类算法,需要多次运算,结果的可靠性差,不能稳定的得到解。
大致这些,lz可查阅相关专业书籍!
F. 遗传算法是不是每次算出来的结果都不一样
随机类算法的每次计算结果肯定都不一样,对于非0-1优化问题,一般是运行若干次,取平均值作为优化的最终结果。
G. matlab遗传算法求最小值我的机器算出来为什么和答案不一样
智能算法每次所得结果都不一样,你可以搜搜看看。
因为算法中有随机性,因此解是不一样的。
H. 遗传算法的优缺点
优点:
1、遗传算法是以决策变量的编码作为运算对象,可以直接对集合、序列、矩阵、树、图等结构对象进行操作。这样的方式一方面有助于模拟生物的基因、染色体和遗传进化的过程,方便遗传操作算子的运用。
另一方面也使得遗传算法具有广泛的应用领域,如函数优化、生产调度、自动控制、图像处理、机器学习、数据挖掘等领域。
2、遗传算法直接以目标函数值作为搜索信息。它仅仅使用适应度函数值来度量个体的优良程度,不涉及目标函数值求导求微分的过程。因为在现实中很多目标函数是很难求导的,甚至是不存在导数的,所以这一点也使得遗传算法显示出高度的优越性。
3、遗传算法具有群体搜索的特性。它的搜索过程是从一个具有多个个体的初始群体P(0)开始的,一方面可以有效地避免搜索一些不必搜索的点。
另一方面由于传统的单点搜索方法在对多峰分布的搜索空间进行搜索时很容易陷入局部某个单峰的极值点,而遗传算法的群体搜索特性却可以避免这样的问题,因而可以体现出遗传算法的并行化和较好的全局搜索性。
4、遗传算法基于概率规则,而不是确定性规则。这使得搜索更为灵活,参数对其搜索效果的影响也尽可能的小。
5、遗传算法具有可扩展性,易于与其他技术混合使用。以上几点便是遗传算法作为优化算法所具备的优点。
缺点:
1、遗传算法在进行编码时容易出现不规范不准确的问题。
2、由于单一的遗传算法编码不能全面将优化问题的约束表示出来,因此需要考虑对不可行解采用阈值,进而增加了工作量和求解时间。
3、遗传算法效率通常低于其他传统的优化方法。
4、遗传算法容易出现过早收敛的问题。
(8)为什么遗传算法算的不准扩展阅读
遗传算法的机理相对复杂,在Matlab中已经由封装好的工具箱命令,通过调用就能够十分方便的使用遗传算法。
函数ga:[x, fval,reason]= ga(@fitnessfun, nvars, options)x是最优解,fval是最优值,@fitnessness是目标函数,nvars是自变量个数,options是其他属性设置。系统默认求最小值,所以在求最大值时应在写函数文档时加负号。
为了设置options,需要用到下面这个函数:options=gaoptimset('PropertyName1', 'PropertyValue1', 'PropertyName2', 'PropertyValue2','PropertyName3', 'PropertyValue3', ...)通过这个函数就能够实现对部分遗传算法的参数的设置。
I. 加速遗传算法为什么不稳定了我编了很多回还是不稳定,不知道是怎么回事了
遗传算法本身就是一种随机搜索算法,其所得最优值在实际最优值附近波动
而且对于大部分问题,得到最优解的变量组合是可以有多个的
所以每次都会有不同的结果
只要每次运行所得的适应度函数值相差不大,就说明结果是对的,
否则不是算子的操作方法不当就是遗传算法的程序实现过程有表达的错误。
J. 遗传算法出来的结果不稳定
有两种可能:1.有多种组合等于X,因此组合有多种
2.你的遗传算法容易局部收敛
对于2解决办法:增加判断,当种群最优染色体一直不变持续N代,重新初始化一个种群,或者往种群中注入新的随机染色体来跳出局部收敛区域。
对补充的回答:
遗传算法本身就是一种智能寻优的随机算法,搜索过程中存在随机性,在具有多个最优解的情况下,很难每次都寻优到同一组参数组合,因为每次的搜索路径是不同的。
如果楼主真是寻求最后结果一样的效果的话,可以先得到一组最优组合数字集合S,按从小到大排列处理后变为S'(n1,n2...ni)
然后搜索过程中的某组数字集合Q的目标函数
既满足:
相加的和最接近X,
还要满足:
1.数字个数=i
2.临时将Q从小达到排列,各个位置上的元素和S'的元素最接近
这样可能会增加很多计算时间,但理论上是可以每次都得到S