【摘要】:MATLAB中用于求解非线性规划的函数为fmincon,这在5.3.2节已经讲过,这里不再重复。通常非线性整数规划是一个具有指数复杂度的NP问题。将遗传算法应用于非线性规划,是提高优化质量和改善收敛效果的有效途径。本节介绍遗传算法在非线性规划中的具体应用,设计并实现求解非线性规划问题的遗传算法。运用遗传算法求解设定的非线性方程组。
MATLAB中用于求解非线性规划的函数为fmincon,这在5.3.2节已经讲过,这里不再重复。本节讲解遗传算法求解非线性规划。
通常非线性整数规划是一个具有指数复杂度的NP问题。如果约束较为复杂,MATLAB优化工具箱和一些优化软件如Lingo等,常常无法应用,即使能应用,也不能给出一个令人较为满意的解。这时就需要针对问题专门设计优化算法。
将遗传算法应用于非线性规划,是提高优化质量和改善收敛效果的有效途径。本节介绍遗传算法在非线性规划中的具体应用,设计并实现求解非线性规划问题的遗传算法。
例5.27 标准遗传算法的一个重要概念是染色体是可能解的二进制序号,由这个序号在可能解的集合(解空间)中找到可能解。运用遗传算法求解设定的非线性方程组。
分析:标准遗传算法由染色体(可能解的二进制)顺序号找到可能解,把解代入设定的非线性方程组计算误差函数,判定方程组是否有解函数,选择最优染色体函数。
解:标准遗传算法的流程如下。
①程序初始化,随机生成一组可能解(第一批染色体);
②由可能解的序号寻找解本身;
③把解代入非线性方程计算误差,如果误差符合要求,停止计算;
④选择最优解对应的最优染色体;(www.daowen.com)
⑤保留每次迭代产生的最优染色体,以防最优染色体丢失;
⑥把保留的最优染色体holdBestChromosome加入染色体群中;
⑦为每一条染色体(即可能解的序号)定义一个概率;
⑧按照概率筛选染色体;
⑨染色体杂交;
⑩变异。
编写MATLAB代码如下:
运行后得到结果如下:
即迭代166次,方程的解为[-7,5,1,-3],解的误差为5.471 179 065 352 771×10-13。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。
有关运筹学实验指导及MATLAB程序设计的文章