某地区有四个化工厂,都生产相同数量的两种化工产品I和II。这两种产品每1000吨分别获利20万元和30万元。由于生产过程中排放有害气体,环保部门责令限期治理。为了保护环境和保证各厂不亏损,主管局向各厂进行环保贷款,数额见下表,经测算每生产1000吨产品的环保费用也列于表中。现在的问题是如何安排生产既能保护环境又可使厂家获利最大。
费用表
环保费用 厂名
(1万元/千吨) A B C D
产品
I 2 2 4 1
II 2 1 0 2
贷款数额(1万元) 14 10 16 12
模型建立
根据题意,四个化工厂生产的两种产品的数量一样,所以
决策变量:产品I的产量为x1千吨,产品II的产量为x2千吨,
获利(十万元)为
目标函数:2 x1+3 x2,
约束条件为环保贷款的数额限制
2 x1 + 2 x2 <= 14
2 x1 + x2 <= 10
4 x1 <= 16
x1 + 2 x2 <= 12
x1, x2 >= 0
AMPL代码如下
格式1
输入结果为:
MINOS 5.51: optimal solution found.
2 iterations, objective 19
profit = 19
x1 = 2
x2 = 5
格式2
输入结果为:
MINOS 5.51: optimal solution found.
2 iterations, objective 19
total_gain = 19
count [*] :=
P1 2
P2 5
;
两种格式得到的结果是一致的。对于规模较小的问题格式1看着要简便一些,但对于规模大的问题格式2要好很多。格式2采用了模型与数据分离的原则,无论数据部分怎样变化,模型部分都不需要变化,而对于格式2,由于数据和模型混在一起,导致数据一旦有变化,程序就要做相应的变动,尤其对于数据规模大的情况,这样做起来琐碎且易出错。
参考文献:张宏伟,牛志广 编著. LINGO8.0及其在环境系统优化中的应用. 天津:天津大学出版社,2005.