matlab解决线性规划,非线性规划,整形规划及代码

一.线性规划

1.1举例说明

形如上述这样的数学公式就叫线性规划matlab解决线性规划,非线性规划,整形规划及代码

此时我们写出它的matlab代码

f=[-5,-4,-6];
a=[1,-1,1;3,2,4;,3,2,0];
b=[20;42;30];
lb=zeros(3,1);
[x,y]=linprog(f,a,b,[],[],lb)

Optimization terminated.

x =

    0.0000
   15.0000
    3.0000


y =

  -78.0000

再看一列:
matlab解决线性规划,非线性规划,整形规划及代码

f=[2,3,-5]
aeq=[1,1,1]
beq=7
a=[2,-5,1]
b=10
lb=zeros(3,1)
linprog(f,-a,-b,aeq,beq,lb)
ans =

    3.0000
    0.0000
    4.0000

1.2函数总结:

linprog( c , A , b , Aeq , beq , lb , ub , x0 )
参数说明:
1.c是目标参数
2.A是不等式约束AX<=b的系数矩阵,
3.b是不等式约束AX<=b的常数项
4.Aeq是等式约束AeqX=beq的系数矩阵,
5.beq是等式约束AeqX=beq的常数项,
6.lb是X的下限,
7.ub是X的上限,
8.X是向量[x1,x2,…xn]即决策变量。

使用标准:(非线性和整形标准相同,目标函数必须是求最小值,约束函数必须是小于)matlab解决线性规划,非线性规划,整形规划及代码
即.目标函数只能求最小值
约束不等式只能是<=

二.非线性规划

形如上述这样的就是非线性规划matlab解决线性规划,非线性规划,整形规划及代码

function f=fun1(x)
f=x(1)^2+x(2)^2+8;
function [g,h]=fun2(x)
g=-x(1)^2+x(2);
h=-x(1)-x(2)^2+2;%约束等式
options=optimset;
[x,y]=fmincon('fun1',rand(2,1),[],[],[],[],zeros(2,1),[],'fun2',options)
x =

    1.0000
    1.0000


y =

   10.0000

总结:
x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options)
1.fun为目标函数
2.x0为初始值
3.A是不等式约束AX<=b的系数矩阵
4.b是不等式约束AX<=b的常数项
4.Aeq是等式约束AeqX=beq的系数矩阵,
5.beq是等式约束AeqX=beq的常数项,
6.lb是X的下限,
7.ub是X的上限,
8.nonlcon为非线性不等式约束
9.option为设置fmincon的参数

三.整形规划

matlab解决线性规划,非线性规划,整形规划及代码总结:

f=[3,2];
a=[2,3;1,0.5]
b=[14;4.5]
lb=zeros(2,1)
[x,y,flag]=intlinprog(f,[1,2],a,b,[],[],lb)

x =

     0
     0


y =

     0


flag =

     1

x = linprog( c ,intcon, A , b , Aeq , beq , lb , ub , x0 )
1.c是目标参数
2.intcon是指点哪几个变量需要是整数
2.A是不等式约束AX<=b的系数矩阵,
3.b是不等式约束AX<=b的常数项
4.Aeq是等式约束AeqX=beq的系数矩阵,
5.beq是等式约束AeqX=beq的常数项,
6.lb是X的下限,
7.ub是X的上限,
8.X是向量[x1,x2,…xn]即决策变量。!]