matlab求解LP问题

Matlab求解LP问题

一、 调用 l i n p r o g linproglinprog 函数求解LP问题

m i n minmin f = c T X f=c^TXf=cTX
s . t . s.t.s.t. A X AXAX ≤ \leq b bb
A e q X = b e q AeqX= beqAeqX=beq
l b lblb ≤ \leq X XX ≤ \leq u b ubub
式中,f , x , b , b e q , l b , u b f,x,b,beq,lb,ubf,x,b,beq,lb,ub 为向量;A , A e q A,AeqA,Aeq 为矩阵。

l i n p r o g linproglinprog函数的调用格式如下:
[ x , f v a l ] = l i n p r o g ( c , A , b , A e q , b e q , l b , u b ) [x,fval]= linprog(c,A,b,Aeq,beq,lb,ub)[x,fval]=linprog(c,A,b,Aeq,beq,lb,ub)
注:

  1. c cc 求解目标函数的系数矩阵
  2. A AA 不等式约束的系数矩阵
  3. b bb 不等式约束的系数矩阵
  4. A e q AeqAeq 等式约束的系数矩阵
  5. b e q beqbeq 等式约束相应的常数列向量,若没有等式约束,则均用 [ ] [][] 代替
  6. l b lblb 决策变量的下界,如果某个变量无下界,则用− i n f -infinf表示;若决策变量无下界,则用 [ ] [][] 或该参数可省
  7. u b ubub 决策变量的下界,如果某个变量无上界,则用i n f infinf
    表示;若决策变量无下界,则用 [ ] [][]表示或者参数可省

例题:
m a x maxmax 3 x 1 − 5 x 2 3{x}_1-5{x}_23x15x2
s . t . s.t.s.t. − x 1 + 2 x 2 + 4 x 3 ≤ 4 -{x}_1+2{x}_2+4{x}_3\leq4x1+2x2+4x34
x 1 + x 2 + 2 x 3 ≤ 5 {x}_1+{x}_2+2{x}_3\leq5x1+x2+2x35
− x 1 + 2 x 2 + x 3 ≥ 1 -{x}_1+2{x}_2+{x}_3\geq1x1+2x2+x31
x 1 , x 2 , x 3 ≥ 0 {x}_1,{x}_2,{x}_3\geq0x1,x2,x30

分析:
原问题不符合求解LP的标准形式,需要做出一些变化,如下:
m i n minmin − 3 x 1 + 5 x 2 -3{x}_1+5{x}_23x1+5x2
s . t . s.t.s.t. − x 1 + 2 x 2 + 4 x 3 ≤ 4 -{x}_1+2{x}_2+4{x}_3\leq4x1+2x2+4x34
x 1 + x 2 + 2 x 3 ≤ 5 {x}_1+{x}_2+2{x}_3\leq5x1+x2+2x35
x 1 − 2 x 2 − x 3 ≤ − 1 {x}_1-2{x}_2-{x}_3\leq-1x12x2x31
x 1 , x 2 , x 3 ≥ 0 {x}_1,{x}_2,{x}_3\geq0x1,x2,x30

clc
c = [-3, 5, 0];
A = [-1,2,4; 1,1,2; 1,-2,-1];
b = [4;5;-1];
Aeq = [];
beq = [];
lb = [0,0,0];
ub = [];
[x,fval]=linprog(c,A,b,Aeq,beq,lb) 

结果如下:在这里插入图片描述

二、使用Matlab优化工具箱求解LP问题

M a t l a b MatlabMatlab命令行输入o p t i m t o o l optimtooloptimtool或者在APP框下找到工具O p t i m i z a t i o n OptimizationOptimization打开,求解如下图:
在这里插入图片描述


版权声明:本文为weixin_40922982原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。