[大谦MATLAB,dqmatlab点com]
【例12】某工厂在一个计划期内生成甲、乙两种产品,各产品都要消耗A,B,C三种不同资源。每件产品对资源的单位消耗、各种资源的限量以及各产品的单位价格、单位利润和所造成的单位污染如表7-1所示。假定产品能全部销售出去,问每期怎样安排生成,才能使利润和产值都最大,且造成的污染最小?
表7-1 各产品相关数据
| 甲 | 乙 | 资源限量 | |
|---|---|---|---|
| 资源A单位消耗 | 9 | 4 | 240 |
| 资源B单位消耗 | 4 | 5 | 200 |
| 资源C单位消耗 | 3 | 10 | 300 |
| 单位产品的价格 | 400 | 600 | |
| 单位产品的利润 | 70 | 120 | |
| 单位产品的污染 | 3 | 2 |
解:设工厂生产产品甲x1个单位,生产产品乙x2个单位,利润目标为z1,产值目标为z2,污染目标为z3,则这个问题可表达为多目标优化问题:
首先需要编写目标函数的M文件mgoal01.m,返回目标计算值。
function f=myfun(x)
f(1)=-70*x(1)-120*x(2);
f(2)=-400*x(1) -600*x(2);
f(3)=3*x(1)+2*x(2);
给定目标,权重和初值:
>> goal=[-4000 -20000 100];
>> weight=[1 1 1];
>> x0=[10 25];
给出约束条件的系数,进行计算:
>> A=[9 4;4 5;3 10];
>> b=[240;200;300];
>> lb=zeros(2,1);
>> [x,fval]=fgoalattain(@mgoal01,x0,goal,weight,A,b,[],[],lb,[])
计算结果为:
x =
12.0879 26.3736
fval =
1.0e+04 *
-0.4011 -2.0659 0.0089
故工厂生产产品甲2.9167个单位,生产产品乙4.0833个单位。利润为4011元,产值为20659元,污染为89个单位。
【例13】某公司考虑某个时间段内生产两种光电太阳能电池:产品甲和产品乙。这种生产过程会在空气中引起放射性污染。因此,公司有两个目标:极大化利润与极小化总的放射性污染。已知在一个生产周期内,每单位甲产品的收益是1元,每单位乙产品的收益是3元。而放射性污染的数量,每单位甲产品是1.5个单位,每单位乙产品是1个单位。机器能力(小时)、装配能力(人时)和可用的原材料(单位)有以下限制:
最优化的目标有两个,一是利润最大,二是污染最小。
解:设工厂生产产品甲x1个单位,生产产品乙x2个单位,利润目标为z1,污染目标为z2,则这个问题可表达为多目标优化问题:
首先需要编写目标函数的M文件mgoal02.m,返回目标计算值。
function f=myfun(x)
f(1)=-x(1)-3*x(2);
f(2)=1.5*x(1)+x(2);
给定目标、权重和初值:
>> goal=[-40 20];
>> weight=[1 1];
>> x0=[0 15];
给出约束条件的系数,进行计算:
>> A=[0.5 0.25;0.2 0.2;1 5];
>> b=[8 4 72];
>> lb=zeros(2,1);
>> [x,fval]=fgoalattain(@mgoal02,x0,goal,weight,A,b,[],[],lb,[])
计算结果为:
x =
1.4118 14.1176
fval =
-43.7647 16.2353
故工厂在该时间段内生产产品甲1.4118个单位,生产产品乙14.1176个单位,利润目标为43.7647元,污染16.2358个单位。
【例14】某工厂因生产需要欲采购一种原材料,市场上的这种原材料有两个等级,甲级单价2元/公斤,乙级1元/公斤。要求所花总费用不超过2000元,购得原料总量不少于1000公斤,其中甲级原料不少于500公斤,问如何确定最好的采购方案。
设x1, x2分别为采购甲级和乙级原材料的数量(公斤),要求采购总费用尽量少,采购总重量尽量多,采购甲级原材料尽量多。由题意可得:
编写目标函数的M文件mgoal03.m,返回目标计算值。
function f=myfun(x)
f(1)=2*x(1)+x(2);
f(2)=-x(1)-x(2);
f(3)=-x(1);
确定目标、权重和初值。
>> goal=[2000 -1000 -500];
>> weight=[1 1 1];
>> x0=[550 550];
给出约束条件的系数,进行计算:
>> A=[2 1;-1 -1;-1 0];
>> b=[2000 -1000 -500];
>> lb=zeros(2,1);
>> [x,fval]=fgoalattain(@mgoal03,x0,goal,weight,A,b,[],[],lb,[])
计算结果为:
x =
666.6667 500.0000
fval =
1.0e+03 *
1.8333 -1.1667 -0.6667
所以,最好的采购方案是采购甲级原材料666.7公斤和乙级原材料500公斤。此时采购总费用为1833元,总重量为1166.7公斤,甲级原材料总重量为666.7公斤。