文章目录


1 线性规划

无论我们做什么事,都希望用最小的代价换取最大的利益,而线性规划就是解决这类问题的一个重要方法,下面我们通过1个具体的示例来介绍一下如何使用线性规划

2 利润最大化问题

某工厂生产三种产品,下面的表是这三种产品的利润和原料消耗,据此制定一个总利润最大的生产计划

机器学习(MACHINE LEARNING)MATLAB求解利润最大化问题【线性规划】_迭代

我们假设这三种产品的产量分别为x1,x2,x3,则其总利润的表达式为:

机器学习(MACHINE LEARNING)MATLAB求解利润最大化问题【线性规划】_迭代_02

产品的产量不能小于0,而且产量还受限于原料,于是就有了以下约束条件:

机器学习(MACHINE LEARNING)MATLAB求解利润最大化问题【线性规划】_迭代_03

我们的目标就是在满足这些约束条件的情况下使z最大。

3 求解代码

MATLAB中有一个专门求解线性规划问题的函数:linprog(),其使用方法如下:

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

用于求解以下模型

机器学习(MACHINE LEARNING)MATLAB求解利润最大化问题【线性规划】_约束条件_04

其中fval表示最优解处的目标函数值,lb和ub分别表示决策变量的下界和上界,若不存在可以用空矩阵代替,x0表示迭代初始点,options是控制参数,用于指定模型求解算法、计算精度和最大迭代次数等

f:目标函数

A:不等式约束条件矩阵

b:对应不等式右侧的矩阵

Aeq:等式约束条件矩阵

beq:对应等式右侧的矩阵

lb:x的下界

ub:x的上界

x0:设置初始点x0,这个选择项只是对medium-scale算法有效。默认的large-scale算法和简单的算法忽略任何初始点。(一般用不到)

例子1:

机器学习(MACHINE LEARNING)MATLAB求解利润最大化问题【线性规划】_迭代_05

c=[2;3;1];
a=[1,4,2;3,2,0];
b=[8;6];
[x,y]=linprog(c,-a,-b,[],[],zeros(3,1))

zeros返回一个double型0*0矩阵

4 结果

机器学习(MACHINE LEARNING)MATLAB求解利润最大化问题【线性规划】_线性规划_06