数学建模--非线性规划

来源:互联网 发布:网络文明志愿宣言 编辑:程序博客网 时间:2024/05/22 03:12

如果目标函数约束条件中包含非线性函数,则称这种规划问题为非线性规划问题,简写为NP。二次规划是非线性规划中的特例,由于二次规划有通用的解法,所以单独讨论,而其他的非线性规划问题没有通用的解法。
在MATLAB中,非线性规划的数学模型可以写为下面的形式:
minf(x)st.AxbAeqx=beqG(x)0Ceq(x)=0

f(x)是标量函数,A、b、Aeq和beq是相应维数的矩阵和向量,C和Ceq是非线性向量函数。
MATLAB中求解非线性规划问题的函数是fmincon函数,常用的调用格式如下:

x=fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon)[x fval]=fmincon(fun,x0,A,b,Aeq,beq,ub,nonlcon)x0x的初始值nonlcon是用M文件定义的非线性向量函数C(x)、Ceq(x)

example
minf(x)=x21+x22+8st.x21x20x1x22+x=0x1,x20 

  1. 编写目标函数M文件fun1.m
function f=fun1(x)f=x(1)^2+x(2)^2+8;

2.编写约束条件函数M文件fun2.m

function [g h]=fun2(x)g=-x(1)^2+x(2);g=-x(1)-x(2)^2+2;

编写主函数脚本funmain.m

[x y]=fmincon('fun1',rand(2,1),[],[],[],[],zeros(2,1),[],'fun2')%x0=rand(2,1)随机生成一个x0向量作为x的初始值
x=    1.0000    1.0000y=    10.0000