理论教育 非线性规划实例解析-运筹学实验指导及MATLAB程序设计

非线性规划实例解析-运筹学实验指导及MATLAB程序设计

时间:2023-11-17 理论教育 版权反馈
【摘要】:MATLAB中用于求解非线性规划的函数为fmincon,这在5.3.2节已经讲过,这里不再重复。通常非线性整数规划是一个具有指数复杂度的NP问题。将遗传算法应用于非线性规划,是提高优化质量和改善收敛效果的有效途径。本节介绍遗传算法在非线性规划中的具体应用,设计并实现求解非线性规划问题的遗传算法。运用遗传算法求解设定的非线性方程组。

非线性规划实例解析-运筹学实验指导及MATLAB程序设计

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

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈