实验三:多目标规划
一、实验目的:多目标规划建模及其优化软件求解。 二、实验要求:
1.了解求解多目标规划的常用方法:图解法、序贯式算法、单纯形法; 2.掌握多目标规划模型的建立;
3.会用 matlab、lingo软件求解多目标规划问题;
三、实验内容:
先分别算单个目标的的最小值,再将两个目标的最小值作为goal
1、已知多目标线性规划问题如下:
maxz1?100x1?90x2?80x3?70x4minz2?3x2?2x4?x1?x2?30??x3?x4?30??3x1?2x3?120?3x?2x?484?2??xj?0,j?1,,4
(1)给出求解上述问题的matlab原始代码;
(提示:参看求解多目标规划的 matlab 函数 fgoalattain);
fun='[-100*x(1)-90*x(2)-80*x(3)-70*x(4),3*x(2)+2*x(4)]';
a=[1 1 0 0 0 0 1 1 3 0 2 0 0 3 0 2]; b=[-30 -30 120 48]'; goal=[30 5960]; weight=goal; x0=[20 20 20 20]; lb=[0 0 0 0]';
[x,fval,attainfactor,exitflag,output,ambda]=fgoalattain(fun,x0,goal,weight,a,b,[],[],lb,[])
(2)求解结果粘贴,并对计算结果分析。
x =
20.0422 20.0422 20.0422 20.0422
fval =
1.0e+003 *
-6.8143 0.1002
attainfactor =
-0.1026
exitflag =
0
2、某彩电组装工厂,生产A,B,C三种规格电视机。装配工作在同一生产线上完成,3种产品装配每台的工时消耗分别为6h,8h和10h。生产线每月正常工作时间为200h;每台彩电的利润分别为500元、650元和800元。每月销售量预计分别为12台、10台、6台。该厂经营目标如下: 第一目标:利润指标为1.6?104元/月;
第二目标:充分利用生产能力; 第三目标:加班时间不超过24h; 第四目标:产量以预计销量为标准。
(1) 为确定生产计划,试建立该问题的目标规划模型;
min z?p1d1?p2d2?p3d3?p4(d4?d4?d5?d5?d6?d6)500x1?650x2?800x3?p1d1?p1d1?160006x1?8x2?10x3?p2d2?p2d2?2006x1?8x2?10x3?p3d3?p3d3?240x1?d4?d4?12x2?d5?d5?10x3?d6?d6?6 di?0,di?0( i?1,2...6)xj?0 (j?1,2,3)
???????????????????????
(2) 给出求解上述模型的lingo原始代码; 第一级目标 代码
model : sets:
variable/1..3/:x;
S_Con_Num/1..6/:g,dplus,dminus; S_con(S_Con_Num,Variable):c; endsets data:
g=16000 200 24 12 10 6;
c=500 650 800 6 8 10 6 8 10 1 0 0 0 1 0 0 0 1; enddata
min =dminus(1);
@for(S_Con_Num(i):@sum(Variable(j):c(i,j)*x(j))+dminus(i)-dplus(i)=g(i)); end
第二级目标 代码
model : sets:
variable/1..3/:x;
S_Con_Num/1..6/:g,dplus,dminus; S_con(S_Con_Num,Variable):c; endsets data:
g=16000 200 24 12 10 6;
c=500 650 800 6 8 10 6 8 10 1 0 0 0 1 0 0 0 1; enddata
min =dminus(2); !二级目标函数; dminus(1)=0; !一级目标约束;
@for(S_Con_Num(i):@sum(Variable(j):c(i,j)*x(j))+dminus(i)-dplus(i)=g(i)); end
第三级目标 代码
model : sets:
variable/1..3/:x;
S_Con_Num/1..6/:g,dplus,dminus; S_con(S_Con_Num,Variable):c; endsets data:
g=16000 200 24 12 10 6;
c=500 650 800 6 8 10 6 8 10 1 0 0 0 1 0 0 0 1; enddata
min =dplus(3); !三级目标函数; dminus(2)=0; !二级目标约束; dminus(1)=0; !一级目标约束;
@for(S_Con_Num(i):@sum(Variable(j):c(i,j)*x(j))+dminus(i)-dplus(i)=g(i)); end 第四级目标 model : sets:
variable/1..3/:x;
S_Con_Num/1..6/:g,dplus,dminus; S_con(S_Con_Num,Variable):c; endsets data:
g=16000 200 24 12 10 6;
c=500 650 800 6 8 10 6 8 10 1 0 0 0 1 0 0 0 1; enddata
min =dplus(4)+dminus(4)+dplus(5)+dminus(5)+dplus(6)+dminus(6); !三级目标函数;
dplus(3)=0; !三级目标函数;
代码
dminus(2)=0; !二级目标约束; dminus(1)=0; !一级目标约束;
@for(S_Con_Num(i):@sum(Variable(j):c(i,j)*x(j))+dminus(i)-dplus(i)=g(i)); end
实验三:多目标规划- 副本
![](/skin/haowen/images/icon_star.png)
![](/skin/haowen/images/icon_star.png)
![](/skin/haowen/images/icon_star.png)
![](/skin/haowen/images/icon_star.png)