linprog - 求解线性规划问题 - MATLAB - MathWorks 中国 https://ww2.mathworks.cn/help/optim/ug/linprog_zh_CN.html
https://ww2.mathworks.cn/help/optim/ug/linprog_zh_CN.html
本文详细介绍了如何在MATLAB中使用
linprog函数来解决各种类型的线性规划问题。首先概述了linprog的基本语法,随后通过五个具体实例演示了如何处理仅含有线性不等式约束、同时含有线性等式和不等式约束、以及包含所有类型约束的线性规划问题。此外,还展示了如何获取优化过程中的目标函数值及退出条件,帮助读者更好地理解和应用linprog函数进行优化计算。无论是初学者还是有一定经验的用户,都能从中受益,掌握使用MATLAB进行线性规划的基础知识和技巧。
目录
一、matlab中linprog的语法
二、说明
例一 只有线性不等式约束的线性规划
例二 具有线性等式和线性不等式约束的线性规划
例三 具有所有类型约束的线性规划
例四 返回目标函数值
例五 返回退出的条件
一、语法
x = linprog(f,A,b)
x = linprog(f,A,b,Aeq,beq)
x = linprog(f,A,b,Aeq,beq,lb,ub)
x = linprog(f,A,b,Aeq,beq,lb,ub,options)
x = linprog(problem)
[x,fval] = linprog(___)
[x,fval,exitflag,output] = linprog(___)
[x,fval,exitflag,output,lambda] = linprog(___)二、说明

例一 只有线性不等式约束的线性规划
x = linprog(f,A,b)求解 minf*x,满足A*x≤b。
目标函数是: min −x(1)−x(2)/3。
约束如下:

A = [1 1
    1 1/4
    1 -1
    -1/4 -1
    -1 -1
    -1 1];
b = [2 1 2 1 -1 2];
f = [-1 -1/3];
x = linprog(f,A,b)结果如下:

例二 具有线性等式和线性不等式约束的线性规划
x = linprog(f,A,b,Aeq,beq)包括等式约束Aeq*x = beq。如果不存在不等式,请设置
A = []和b = []。
 
 
 
 

A = [1 1
    1 1/4
    1 -1
    -1/4 -1
    -1 -1
    -1 1];
b = [2 1 2 1 -1 2];
Aeq = [1 1/4];
beq = 1/2;
f = [-1 -1/3];
x = linprog(f,A,b,Aeq,beq)结果如下:

例三 具有所有类型约束的线性规划
x = linprog(f,A,b,Aeq,beq,lb,ub)定义设计变量x的一组下界和上界,使解始终在lb ≤ x ≤ ub范围内。如果不存在等式,请设置
Aeq = []和beq = []。

A = [1 1
    1 1/4
    1 -1
    -1/4 -1
    -1 -1
    -1 1];
b = [2 1 2 1 -1 2];
Aeq = [1 1/4];
beq = 1/2;
f = [-1 -1/3];
lb = [-1,-0.5];
ub = [1.5,1.25];
x = linprog(f,A,b,Aeq,beq,lb,ub)例四 返回目标函数值
对于任何输入参量,
[x,fval] = linprog(___)返回目标函数fun在解x处的值:fval = f*x。
如:
[x,fval] = linprog(f,A,b)

[x,fval,exitflag,output] = linprog(___)还返回说明退出条件的值exitflag,以及包含优化过程信息的结构体output。
例五 返回退出的条件
output] = linprog(___)还返回说明退出条件的值exitflag,以及包含优化过程信息的结构体output。
#设置选项以使用 'dual-simplex'算法。
options = optimoptions('linprog','Algorithm','dual-simplex');
#求解线性规划并请求返回函数值、退出标志和输出结构体。
[x,fval,exitflag,output] = linprog(f,A,b,Aeq,beq,lb,ub,options)结果如下:

-  exitflag= 1 表示解可靠。
-  output.iterations= 0 表示linprog在预求解过程中即找到解,根本不必进行迭代。




















