• 欢迎访问开心洋葱网站,在线教程,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站,欢迎加入开心洋葱 QQ群
  • 为方便开心洋葱网用户,开心洋葱官网已经开启复制功能!
  • 欢迎访问开心洋葱网站,手机也能访问哦~欢迎加入开心洋葱多维思维学习平台 QQ群
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏开心洋葱吧~~~~~~~~~~~~~!
  • 由于近期流量激增,小站的ECS没能经的起亲们的访问,本站依然没有盈利,如果各位看如果觉着文字不错,还请看官给小站打个赏~~~~~~~~~~~~~!

Matlab求解非线性规划(fmincon函数的使用)

人工智能 小黑鸭 1488次浏览 0个评论

Matlab中fmincon函数的使用

  • 1. 介绍
  • 2. 语法
  • 3. 示例
    • 3.1 编写M函数fun1.m,定义目标函数
    • 3.2 编写M函数fun2.m,定义非线性约束条件
    • 3.3 编写主程序函数

最近写文章需要用到fmincon函数做优化,于是抽空学习一下;按照惯例,继续开个博文记录一下学习的过程 参考资料: [寻找约束非线性多变量函数的最小值 – MathWorks] [Matlab求解非线性规划,fmincon函数的用法总结 – 博客园] [Matlab非线性规划 – 博客园]

1. 介绍

在Matlab中,fmincon 函数可以求解带约束的非线性多变量函数(Constrained nonlinear multivariable function)的最小值,即可以用来求解非线性规划问题  
Matlab求解非线性规划(fmincon函数的使用)  

2. 语法

  Matlab求解命令为: x = f m i n c o n ( f u n , x 0 , A , b , A e q , b e q , l b , u b , n o n l c o n , o p t i o n s ) x = fmincon(fun,x0,A, b,Aeq,beq,lb,ub,nonlcon,options)x=fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options)  

  • x的返回值是决策向量x的取值,fval的返回值是目标函数f(x)的取值
  • fun是用M文件定义的函数f(x),代表了(非)线性目标函数
  • x0是x的初始值
  • A, b, Aeq, beq定义了线性约束,如果没有线性约束,则A=[], b=[], Aeq=[], beq=[]
  • lb和ub是变量x的下界和上界,如果下界和上界没有约束,则lb=[], ub=[], 也可以写成lb的各分量都为 -inf, ub的各分量都为inf
  • nonlcon是用M文件定义的非线性向量函数约束
  • options定义了优化参数,不填写表示使用Matlab默认的参数设置

3. 示例Matlab求解非线性规划(fmincon函数的使用)

 

3.1 编写M函数fun1.m,定义目标函数

 

function f = fun1(x)
f = x(1).^2 + x(2).^2 + x(3).^2 + 8;
end

   

3.2 编写M函数fun2.m,定义非线性约束条件

 

function [g,h] = fun2(x)
g(1) = - x(1).^2 + x(2) - x(3).^2;
g(2) = x(1) + x(2).^2 + x(3).^3 - 20;
% g代表不等式约束,Matlab中默认g<=0,所以这里取相反数
h(1) = - x(1).^2 - x(2).^2 + 2;
h(2) = x(2) + 2 * x(3).^2 - 3;
% h代表等式约束        
end

   

3.3 编写主程序函数

 

options = optimset;
[x, y] = fmincon('fun1', rand(3, 1), [], [], [], [], zeros(3, 1), [], 'fun2', options)
% 'fun1'代表目标函数,rand(3, 1)随机给了x初值,zeros(3, 1)代表下限为0,即x1, x2, x3>=0, 'fun2'即刚才写的约束条件

     


开心洋葱 , 版权所有丨如未注明 , 均为原创丨未经授权请勿修改 , 转载请注明Matlab求解非线性规划(fmincon函数的使用)
喜欢 (0)

您必须 登录 才能发表评论!

加载中……