• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

MATLAB 非线性规划

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

MATLAB求解非线性规划可以使用 fmincon 函数,其数学模型可以写成如下形式:

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

其中,fun是目标函数,x0是初始值,A,b 规定线性不等式约束条件,Aeq,beq 规定线性等式约束条件,lb 规定可行解的数值下限,ub规定可行解的数值上限。nonlcon是包含非线性约束条件(C(x),Ceq(x))的函数。使用options所指定的优化选项执行最小化。

例如,使用MATLAB计算如下非线性规划。

x0 = [0.5,0];
A = [1,-2];
b = 1;
Aeq = [2,1];
beq = 1;
x = fmincon(fun,x0,A,b,Aeq,beq)

带有边界约束的,例如:

fun = @(x)1+x(1)/(1+x(2)) - 3*x(1)*x(2) + x(2)*(1+x(1));
lb = [0,0];
ub = [1,2];
% 没有线性约束,因此将这些参数设置为 []。
A = [];
b = [];
Aeq = [];
beq = [];
% 尝试使用一个位于区域中部的初始点。
x0 = (lb + ub)/2; 
x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub)

带有非线性约束的,例如:

%% 主函数
options=optimset(\'largescale\',\'off\'); 
x = fmincon(@fun,rand(3,1),[],[],[],[],zeros(3,1),[], @nonlcon, options) 

%% 目标函数
function f=fun(x)
f=sum(x.^2)+8;
end

%% 非线性约束条件
function [c,ceq]=nonlcon(x)
c=[-x(1)^2+x(2)-x(3)^2 
    x(1)+x(2)^2+x(3)^3-20];  %非线性不等式约束 
ceq=[-x(1)-x(2)^2+2 
   x(2)+2*x(3)^2-3]; %非线性等式约束 
end

 

 特别注意:

目标函数为最小化函数,fun是一个函数,fun接受向量或数组 x,并返回实数标量 f,即在 x 处计算的目标函数值。

非线性约束条件,nonlcon是一个函数,接受向量或数组 x,并返回两个数组 c(x) 和 ceq(x)。

意味着 fun 和 nonlcon 不能更改已有输入和输出的用途或含义,也不能增加额外的输入和输出。当目标函数或非线性约束条件较为复杂时,可以通过定义和使用全局变量(global)传递参数,例如:

%% 主函数
global region;
global speces;
region=rand(10,10);
speces=unifrnd(20,2);
options=optimset(\'largescale\',\'off\'); 
x = fmincon(@fun,rand(3,1),[],[],[],[],zeros(3,1),[], @nonlcon, options);

%% 目标函数
function f=fun(x)
global region;
f=sum(x.^2)+sum(sum(region));
end

%% 非线性约束条件
function [c,ceq]=nonlcon(x)
global speces;
c=[-x(1)^2+x(2)-x(3)^2 
    x(1)+x(2)^2+x(3)^3-sum(speces(:,1))];  %非线性不等式约束 
ceq=[-x(1)-x(2)^2+2 
   x(2)+2*x(3)^2--sum(speces(:,2))]; %非线性等式约束 
end

  

特别感谢:

任雪樵 

 

参考资料:

https://ww2.mathworks.cn/help/optim/ug/fmincon.html

https://blog.csdn.net/qq_29831163/article/details/89483975

https://blog.csdn.net/qq_29831163/article/details/89485908

 

 

 

鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Delphi控件-复合控件发布时间:2022-07-18
下一篇:
Delphi 7学习开发控件 - 癫狂编程发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap