linprog线性规划求解

linprog 四要素:

[minquad c^Tx ]

[s.t.quad egin{cases} Acdot xleq b\ Aeqcdot x=beq\ lbleq xleq ub end{cases} ]

其中, c 和 x 为 n 维向量,A、Aeq为适当维数的矩阵,b、beq为适当维数的列向量。

Matlab 中求解线性规划的命令为以下几种:

x=linprog(c,A,b)

x=linprog(c,A,b,Aeq,beq)

x=linprog(c,A,b,Aeq,beq,lb,ub)   % 最常用的一种形式

x=linprog(c,A,b,Aeq,beq,lb,ub,x0)

x=linprog(c,A,b,Aeq,beq,lb,ub,x0,options)

[x,fval]=linprog(…)

[x, fval, exitflag]=linprog(…)

[x, fval, exitflag, output]=linprog(…)

[x, fval, exitflag, output, lambda]=linprog(…)

其中 x 返回的是决策向量的取值,favl 返回的是目标函数的最优值, c 为价值向量,A,b对应的是 线性不等式约束,Aeq,beq对应的是 线性等式约束,lb 和 ub 分别对应的是 决策向量的下界向量与上界向量。

例子:

代码:

clear;

clc;

c=[6 3 4];   

A=[1 2 -3;0 1 0]; 

b=[80;50];    

Aeq=[1 1 1];    

beq=[120];  

lb=[30 0 20];  

ub=[];     

[x,favl]=linprog(c,A,b,Aeq,beq,lb,ub)

结果展示:

Optimal solution found.


x =

   30.0000
   50.0000
   40.0000


favl =

   490

>> 
原文地址:https://www.cnblogs.com/Noturns/p/13341135.html