1. 简介
linprog函数主要用来求线型规划中的最小值问题(最大值的镜像问题,求最大值只需要加个“-”)
2. 算法结构及使用方法
针对约束条件为Ax=b或Ax≤b的问题
2.1 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,x0)
2.2 参数简介
f:目标函数
A:不等式约束条件矩阵
b:对应不等式右侧的矩阵
Aeq:等式约束条件矩阵
beq:不等式右侧的矩阵
Aeq:等式约束条件矩阵
beq:对应等式右侧的矩阵
lb:x的下界
ub:x的上界
x0:设置初始点x0,这个选择项只是对medium-scale算法有效。默认的large-scale算法和简单的算法忽略任何初始点。(一般用不到)
2.3 常用linprog函数及用法举例
linprog函数常用形式为:
x=linprog(f,A,b,Aep,beq,lb,ub);
例题:
求最大值 :f= 7·x1 + 4·x2
约束条件为:
x1 + x2 ≤ 12
3·x1 + 2·x2 ≤ 26
2·x1 + x2 ≤ 16
x1≥0,x2≥0
根据目标函数f= 7·x1 + 4·x2可得:
f=[ 7 4 ];
根据不等式约束条件,有
1、A = [1 1;3 2;2 1];
2、b = [12 26 16];
x只有下届没有上届,有
lb = [0 0];
所以完整代码为
f = [ 7 4 ];
A = [1 1;3 2;2 1];
b = [12 26 16];
lb = [0 0];
[ x , fval ] = linprog( -f , A , b , [] , [] , lb , ub);
disp(x)
disp(-fval)
目标函数求最大值,所以f前加“-”
例题为不等式约束,等式参数Aeq,beq为空,用“[]”代替;x没有上界,ub也用“[]”代替。
“x”即目标函数取最大值时x1、x2的取值,“fval"即最小值。
运行结果为:

PS:MATLAB命令行窗口输入”help linprog“即可获取linprog函数详细用法。
本文介绍了MATLAB中用于解决线性规划问题的linprog函数,包括函数的基本结构、参数说明及如何使用。通过具体例子展示了如何解决最大化线性目标函数的约束问题,并给出了完整代码及运行结果。
214

被折叠的 条评论
为什么被折叠?



