多目标规划

目录

例题

方法一:线性加权法

方法二:理想点法

方法三:优先级法

例题

某公司考虑生产两种光电太阳能电池:产品甲和产品乙。这种生产会引起空气放射性污染。因此,公司经理有两个目标:极大化利润与极小化总的放射性污染。已知在一个生产周期内,每单位产品的收益、放射性污染排放量、机器能力(小时)、装配能力(人时)和可用的原材料(单位)的限制如表16.1所示。假设市场需求无限制,两种产品的产量和至少为10,则公司该如何安排一个生产周期内的生产。

 

设分别表示甲乙两种产品在一个生产周期内的产量分别为x{1}x{2},则该问题的目标函数为利润极大化:max f1=2x{1}+3x{2}  污染极小化:min f_{}_{}2= x{1}+2x{2} 

方法一:线性加权法

        该方法应用的关键是要确定每个目标的权重,它反映不同目标在决策者心中的重要程度,重要程度高的权重就大,重要程度低的权重就小。权重的确定一般由决策者给出,因而具有较大的主观性,不同的决策者给的权重可能不同,从而会使计算的结果不同。

 1.两个目标函数的权重都取为0.5,把上述多目标规划问题归结为如下的线性规划问题

 2.多目标规划问题中,绝对最优解是不常见的,因此只提满意解或者有效解

clc,clear
prob=optimproblem;%默认目标函数最小化
x=optimvar('x',2,1,'LowerBound',0);%决策变量2*1
prob.Objective = -0.5*x(1)-0.5*x(2);%目标函数
%约束条件
prob.Constraints.cons1 = 0.5*x(1)+0.25*x(2)<=8;
prob.Constraints.cons2 = 0.2*x(1)+0.2*x(2)<=4;
prob.Constraints.cons3 = x(1)+5*x(2)<=72;
prob.Constraints.cons4 = x(1)+x(2)>=10;
[sol,fval,flag,out]=solve(prob)
sol.x

 结果:x{1}x{2}分别等于7和13, max f1=2x{1}+3x{2} =53, min f2= x{1}+2x{2} =33

方法二:理想点法

        以每个单目标最优值为该目标的理想值,使每个目标函数值与理想值的差的加权平方和最小。

 

 

clc,clear
prob=optimproblem;%默认目标函数最小化
x=optimvar('x',2,1,'LowerBound',0);%决策变量2*1
prob.Objective = -2*x(1)-3*x(2);%目标函数
%约束条件
prob.Constraints.cons1 = 0.5*x(1)+0.25*x(2)<=8;
prob.Constraints.cons2 = 0.2*x(1)+0.2*x(2)<=4;
prob.Constraints.cons3 = x(1)+5*x(2)<=72;
prob.Constraints.cons4 = x(1)+x(2)>=10;
[sol,fval,flag,out]=solve(prob)
sol.x

 结果:x{1}x{2}分别等于7和13, 最优解f1=-2x{1}-3x{2} =-53

clc,clear
prob=optimproblem;%默认目标函数最小化
x=optimvar('x',2,1,'LowerBound',0);%决策变量2*1
prob.Objective = x(1)+2*x(2);%目标函数
%约束条件
prob.Constraints.cons1 = 0.5*x(1)+0.25*x(2)<=8;
prob.Constraints.cons2 = 0.2*x(1)+0.2*x(2)<=4;
prob.Constraints.cons3 = x(1)+5*x(2)<=72;
prob.Constraints.cons4 = x(1)+x(2)>=10;
[sol,fval,flag,out]=solve(prob)
sol.x

 

  结果:x{1}x{2}分别等于10和0, 最优解 f2= x{1}+2x{2} =10

构造每个目标与最优值的差的平方和,作为新的目标函数,求解二次规划问题

clc,clear
prob=optimproblem;%默认目标函数最小化
x=optimvar('x',2,1,'LowerBound',0);%决策变量2*1
prob.Objective = (-2*x(1)-3*x(2)+53)^2+(x(1)+2*x(2)-10)^2;%目标函数
%约束条件
prob.Constraints.cons1 = 0.5*x(1)+0.25*x(2)<=8;
prob.Constraints.cons2 = 0.2*x(1)+0.2*x(2)<=4;
prob.Constraints.cons3 = x(1)+5*x(2)<=72;
prob.Constraints.cons4 = x(1)+x(2)>=10;
[sol,fval,flag,out]=solve(prob)
sol.x

   结果:x{1}x{2}分别等于13.36和5.28, max f1=2x{1}+3x{2} =42.56, min f2= x{1}+2x{2} =23.92

方法三:优先级法

根据目标重要性分成不同优先级,先求优先级高的目标函数的最优值,在确保优先级高的目标获得不低于最优值的条件下,再求优先级低的目标函数。该方法适用于目标有明显轻重之分的问题,也就是说,各目标的重要性差距比较大,首先确保最重要的目标,然后再考虑其他目标。在同一等级的目标可能会有多个,这些目标的重要性没有明显差的距,可以用加权方法求解。

由理想点解知,第一个目标函数的最优值为-53。以第二个目标函数作为目标函数,问题的原始约束条件再加第一个目标函数等于其最优值的约束条件,构造如下的线性规划模型

 

clc,clear
prob=optimproblem;%默认目标函数最小化
x=optimvar('x',2,1,'LowerBound',0);%决策变量2*1
prob.Objective = x(1)+2*x(2);%目标函数
%约束条件
prob.Constraints.cons1 = 0.5*x(1)+0.25*x(2)<=8;
prob.Constraints.cons2 = 0.2*x(1)+0.2*x(2)<=4;
prob.Constraints.cons3 = x(1)+5*x(2)<=72;
prob.Constraints.cons4 = x(1)+x(2)>=10;
prob.Constraints.cons5 = -2*x(1)-3*x(2)==-53;
[sol,fval,flag,out]=solve(prob)
sol.x

  结果:x{1}x{2}分别等于7和13, max f1=2x{1}+3x{2} =53, min f2= x{1}+2x{2} =33

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值