非线性规划

在matlab非线性规划数学模型可以写成一下形式:

\[minf(x)\\
s.t.\begin{cases}
Ax \le B \\
Aeq·x = Beq\\
C(x) \le 0\\
Ceq(x) = 0
\end{cases}
\]

f(x)为目标函数,A,B,Aeq,Beq为线性约束对应的矩阵和向量,C(x),Ceq(x)为非线性约束。

Matlab求解命令为:

X = fmincon(fun, x0, A, B, Aeq, Beq, LB, UB, NONLCON, OPTIONS)

  fun为目标函数,x0为初值,A,B,Aeq,Beq为线性约束对应的矩阵和向量,LB,UB分别为x的下限和上限,NONLCON为非线性约束(需要写自定义函数),OPTIONS为优化参数。

【例】求下列非线性规划问题

\[minf(x) = x^2_1+x^2_2+8\\
s.t.\begin{cases}
x_1^2-x_2 \ge 0\\
-x_1-x_2^2+2=0\\
x_1,x_2 \ge 0
\end{cases}
\]

编写函数文件:fun1.m,fun2.m

function f = fun1(x)
f = x(1)^2 + x(2)^2 + 8;
end
function [g,h] = fun2(x)
g = -x(1)^2 + x(2);
%g代表不等式约束,即代表约束条件-x(1)^2 + x(2) <= 0。matlab默认g<=0,所以题目中的条件被改成了相反数。
%如果有多个不等式约束,写成g(1) = 关于x的函数; g(2) = 关于x的函数;······
h = -x(1) - x(2)^2 + 2;
%h代表等式约束,即代表约束条件 -x(1) - x(2)^2 + 2 = 0。
%如果有多个等式约束,写成h(1) = 关于x的函数; h(2) = 关于x的函数;······
end

注:在写fun2时,可以把线性和非线性约束的等式和不等式约束都按照这种格式写到这个函数里面,这样的话fun2就包含了所有约束条件,在后面运行fmincon()时不需要再写A,B,Aeq,Beq,

直接用[]略过。

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

x为最优解,y为最优值。

转化为无约束极值问题

利用问题中的约束函数做出适当的罚函数,将非线性规划问题转化为无约束非线性规划问题。

\[minf(x)\\
s.t.\begin{cases}
g_i(x) \le 0 & i=1,2,...,r\\
h_i(x) \ge 0 & i=1,2,...,s\\
k_i(x) = 0 & i=1,2,...,t
\end{cases}
\]

取一个充分大的M,构造函数

\[P(x,M)=f(x)+M\sum_{i=1}^{r}max(g_i(x),0)-M\sum_{i=1}^{s}min(h_i(x),0)+M\sum_{i=1}^{t}|k_i(x)|\\
其中g代表\le 的不等式约束,h代表\ge 的不等式约束,k代表等式约束。\\
则非线性规划问题转化为无约束最小化P(x,M)。
\]

【例】将上面的例题转化为无约束极值问题:

编写test.m

funtion g = test(x)
M = 50000;
f = x(1)^2 + x(2)^2 +8;
g = f - M*min(x(1),0) - M*min(x(2),0) - M*min(x(1)^2-x(2),0) + M*abs(-x(1)-x(2)^2+2);

命令窗口

[x,y] = fminunc('test', rand(2,1))

参考书籍:Matlab在数学建模中的应用(第二版)卓金武

Matlab非线性规划的更多相关文章

  1. Matlab 非线性规划问题模型代码

    非线性规划问题的基本内容 非线性规划解决的是自变量在一定的非线性约束或线性约束组合条件下,使得非线性目标函数求得最大值或者最小值的问题. 当目标函数为最小值时,上述问题可以写成如下形式: \[ \mi ...

  2. MATLAB:非线性规划fmincon

    1.非线性规划的形式: 其中x是一个列向量,st中前两项为线性约束条件,后两项为非线性约束条件. 在MATLAB中fmincon是用于求解非线性多远函数的最小值的函数,这里介绍fmincon的其中一种 ...

  3. MATLAB规划问题——线性规划和非线性规划

    1.线性规划 求线性规划问题的最优解有两种方法,一种方法是使用linprog命令,另一种是使用optimtool工具箱,下面分别介绍这两种方法. ①linprog命令 一般情况下,Linprog命令的 ...

  4. matlab中fmincon函数求解非线性规划问题

    Matlab求解非线性规划,fmincon函数的用法总结 1.简介 在matlab中,fmincon函数可以求解带约束的非线性多变量函数(Constrained nonlinear multivari ...

  5. [matlab] 16.多约束非线性规划 ga工具箱解决 [带不等式约束]

    下面举例说明如何运用GA工具箱求解多约束非线性规划问题: function f =fitness(x) f=exp(x(1))*(4*x(1)^2+2*x(2)^2+4*x(1)*x(2)+2*x(2 ...

  6. 用蒙特卡罗方法解非线性规划MATLAB

    共需要三个M文件,主程序为randlp.m randlp.m: function [sol,r1,r2]=randlp(a,b,n) %随机模拟解非线性规划 debug=1; a=0; %试验点下界 ...

  7. 非线性规划的Matlab 解法

    编写M 文件fun1.m 定义目标函数 function f=fun1(x); % 定义目标函数 f=sum(x.^)+; % .^2是矩阵中的每个元素都求平方.^2是求矩阵的平方或两个相同的矩阵相乘 ...

  8. 非线性规划问题的matlab求解

    函数:[x, fval] = fmincon(FUN, X0, A, B, Aeq, Beq, LB, UB, NONLCON) 返回的x:是一个向量——在取得目标函数最小时各个xi的取值: 返回的f ...

  9. MATLAB学习(七)求解优化问题:线性规划 非线性规划 拟合与插值 多目标规划

    Minf(x)=-5x1  -4x2  -6x3                x1   -x2    +x3  <=20              3x1  +2x2 +4x3 <=42 ...

随机推荐

  1. Chapter 07-Basic statistics(Part3 correlations)

    这一部分使用R基础已安装包中的state.x77数据集.该数据集的数据是关于美国50个州在1977年对人口,收入,文盲率,平均寿命,谋杀率,高中毕业率统计所得. 1.关联的种类(types of co ...

  2. 使用 colgroup 和 col 实现响应式表格

    Table 在项目使用中十分频繁,特别是在后台管理系统中,table 无疑是数据展示的第一公民,在早些年的网页中,table 也是网页布局的第一选择,然后使用好 table 并不容易,其它有很多子元素 ...

  3. LNMP 源码发布Thinksaas论坛

    第一步:搭建LNMP架构 LNMP架构 注意:搭建php服务时,初始化 ./configure --prefix=/usr/local/php5 \ --enable-fpm \ --enable-d ...

  4. PTA 1139 1138 1137 1136

    PAT 1139 1138 1137 1136 一个月不写题,有点生疏..脑子跟不上手速,还可以啦,反正今天很开心. PAT 1139 First Contact 18/30 找个时间再修bug 23 ...

  5. sbt assembly a fat jar for spark-submit cluster model

    在用spark-submit提交作业时,用sbt package打包好的jar程序,可以很好的运行在client模式,当在cluster模式, 一直报错:Exception in thread &qu ...

  6. idea建立项目关联到git仓库操作步骤

    eg:创建一个名为demo的git项目 创建git远程项目,命名为[/demo] 在[D:\workspace\gf]创建本地项目[demo] 在idea里选择[VCS]->[Checkout ...

  7. dubbo服务治理框架

    Dubbo的概述 1.1. Dubbo的背景 随着互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,亟需一个治理系统确保架构有条不紊的演进. ...

  8. A* 算法讲解

    在看下面这篇文章之前,先介绍几个理论知识,有助于理解A*算法. 启发式搜索:启发式搜索就是在状态空间中的搜索对每一个搜索的位置进行评估,得到最好的位置,再从这个位置进行搜索直到目标.这样可以省略大量无 ...

  9. python数学工具(一)

    python  数学工具包括: 1.函数的逼近 1.1.回归 1.2.插值 2.凸优化3.积分4.符号数学 本文介绍函数的逼近的回归方法 1.作为基函数的单项式 对函数 的拟合 首先定义函数并且可视化 ...

  10. Orleans 配置端口的一些坑

    Orleans的配置有点乱的 整理了下 .Configure<EndpointOptions>(options => { //这里的IP决定了是本机 还是内网 还是公网 option ...