许可优化
许可优化
产品
产品
解决方案
解决方案
服务支持
服务支持
关于
关于
软件库
当前位置:服务支持 >  软件文章 >  MATLAB非线性规划简单入门:求解方法与案例

MATLAB非线性规划简单入门:求解方法与案例

阅读数 7
点赞 0
article_banner

非线性规划


1.非线性规划问题


如果目标函数或者约束条件中包含非线性函数,就称这种问题为非线性规划问题。


2.非线性规划的Matlab标准形式及问题求解


在这里插入图片描述

   式中:
f(x) 为标量函数;
A,b,Aeq,beq,lb,ub为相应维数的矩阵和向量;

   **c(x),ceq(x)**为非线性向量函数。

   Matlab中的命令是:

[x,fval]=fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options)

   式中:
x的返回值是决策向量x的取值;fval返回的是目标函数的取值,其中fun是用M文件定义的函数f(x);x0x的初始值;
A,b,Aeq,beq定义了线性约束A*x<=b,Aeq*x=beq;

   如果没有线性约束,则A=[ ],b=[ ],Aeq=[ ],beq=[ ];lbub是变量x的下界和上界,如果上界和下界没有约束,即x无下界也无上界,则lb=[ ],ub=[ ],也可以写成lb的各变量都为 -infub的各变量都为inf
nonlcon是用M文件定义的非线性向量函数c(x),ceq(x);
options定义了优化参数,可以使用Matlab默认的参数设置。
fmincon的初始值x0可以任意取,只要保证为实数就行。

   具体解释:《MATLAB fmincon 的初值x0的选取问题》

   链接: https://blog.csdn.net/lcp201281095/article/details/79801822.


3.非线性规划例题


例1:求下列非线性规划:
在这里插入图片描述
解:(1)编写M函数fun1.m定义目标函数:

function f =fun1(x);
f=sum(x.^2)+8

(2)编写M函数fun2.m定义非线性约束条件:

function [g,h]=fun2(x);
g=[-x(1)^2+x(2)-x(3)^2
	x(1)+x(2)^2+x(3)^3-20];%非线性不等式约束
h=[-x(1)-x(2)^2+2
	x(2)+2*x(3)^2-3];%非线性等式约束

(3)编写主程序文件如下:

[x,y]=fmincon('fun1',rand(3,1),[],[],[],[],zeros(3,1),[],'fun2')

其中fmincon中的 rand(n,m) 是产生由在(0, 1)之间均匀分布的随机数组成的数组。用法:1.rand(2,3),则会得到一个2行3列的在1以内的随机矩阵。2.rand(3),则会得到一个3行3列的随机方阵。3.rand(size(A)) 返回一个和A矩阵有相同尺寸的随机矩阵。

程序运行结果:
在这里插入图片描述

求得当x1=0.5522,x2=1.2033,x3=0.9478时,最小值y=10.6511


例2:求下列非线性规划问题。

在这里插入图片描述
解:(1)编写m文件,定义目标函数:

function f=fun44(x)
f=-(sqrt(x(1))+sqrt(x(2))+sqrt(x(3))+sqrt(x(4)));

(2)编写m文件,定义约束条件:

function [g,ceq]=myconl(x)
g(1)=x(1)-400;
g(2)=1.1*x(1)+x(2)-440;
g(3)=1.21*x(1)+1.1*x(2)+x(3)-484;
g(4)=1.331*x(1)+1.21*x(2)+1.1*x(3)+x(4)-532.4;
ceq=0;

(3)编写主程序,即可编写m文件也可以在命令窗口直接输入命令:

x0=[1,1,1,1];
lb=[0,0,0,0];
ub=[];A=[];b=[];Aeq=[];beq=[];
[x,fval]=fmincon('fun44',x0,A,b,Aeq,beq,lb,ub,'myconl');
x,fval=-fval

程序运行结果:
在这里插入图片描述

   求得的最优解为x1=86.1883,x2=104.2878,x3=126.1883,x4=152.6879,对应的最优值为z=43.0860


免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删

相关文章
技术文档
QR Code
微信扫一扫,欢迎咨询~
customer

online

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 board-phone 155-2731-8020
close1
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

姓名不为空

姓名不为空
手机不正确

手机不正确

手机不正确
公司不为空

公司不为空

公司不为空