下面的内容来自我大学的一门课程(水资源优化配置)的实验报告,写的很详细,供初学者参考。
1.线性规划问题的组成
线性规划(Linear Programming,LP)是数学规划的一个重要分支,用于分析线性约束条件下目标函数的最优化问题。线性规划的特点是目标函数及约束条件的数学形式均为线性。对于一个实际问题在建立线性规划数学模型时:
1)根据问题的已知条件选择决策变量x1,x2,...,xn.
2)根据问题的要求,建立目标函数关系式。目标函数关系式如为非线性,则应线性化。目标函数单位可以是货币单位,也可以是其他单位。
3)根据客观条件的限制(如水资源量等)建立约束方程。
在进行上述三方面的抽象和简化后,就实现了根据实际的条件和人们想要达到的目的,把一个具体问题转化成线性规划的数学模型。在转化中,尤其对约束方程的建立更应注意,如果遗漏了某些限制条件,求得的结果可能不是最优解。
因此,建立线性规划模型的关键步骤为:
1)根据研究问题的性质确定决策变量(Decision Variable)。
2)根据问题的目标,列出与决策变量有关的目标函数(Objective Function)。
3)根据问题的限制条件,列出与决策变量有关的约束条件(Constraint)。
线性规划模型具有以下特点:
1)每个模型都有若干个决策变量(x1,x2、…,xn),其中n为决策变量的个数。决策变量的一组值表示一个决策方案,同时决策变量一般是非负的。
2)目标函数是决策变量的线性函数,根据具体问题可以是最大化(max)或最小化(min),二者统称为最优化(opt)。
3)约束条件也是决策变量的线性函数。
2.线性规划解的概念
考虑n个决策变量、m个约束条件的线性规划标准型,由于不等式约束在转换为标准型时需要加入松弛变量或剩余变量,一般情况下n>m。
3.应用
1.分析问题
解决问题的第一步是“拆解问题”,找到三要素。根据以上内容可以找到供水公司水资源配置的三要素:
决策变量:各用水部门所分配到的水量;
目标函数:供水利润最大;
约束条件:年供水量不超过6500万m3,农业用水供水量不小于3500万m3,各用水部门约束如图,并且水量需为正数。
首先判断是否供水满足需水,因为:年供水量上限值是6500m3,而各用水部门总需求9000m3,所以:不满足,进行配置。
2.建立模型
设某供水公司给生活、农业以及工业供水量分别为x1,x2,x3,
3.Excel求解
①第一步,安装规划求解模块;
文件--选项--加载项--转到--勾选规划求解加载项--确定
②整理数据,输入对应公式,求解,如下图所示。
结论:利用Microsoft Excel规划求解工具进行求解,可求得供水效益最大为5400万元,达到最大效益时,生活、农业、工业的年需水量分别为:x1=2000万m3,x2=3500万m3,x3=1000万m3。
4.matlab求解
代码如下,如果学过线性代数的话应该很好懂:
intcon=[1 2 3];
a=[1 0 0;0 1 0;0 0 1;-1 0 0;0 -1 0;0 0 -1;1 1 1];
b=[3000;5000;1000;0;-3500;0;6500];
F=[-1.3 -0.4 -1.4];
[x fval exitflag]=intlinprog(F,intcon,a,b)
两种方式得到的结论是一致的!