Page 294 - 数学建模算法与应用
P. 294
Mathematical Modeling Algorithms and Applications
数学建模算法与应用
s_con_num/1..4/:g,dplus,dminus;
h_con(h_con_num,variable):a;
s_con(s_con_num,variable):c;
obj(level,s_con_num)/1 1,2 2,3 3,3 4/:wplus,wminus;
endsets
data:
ctr=?;
goal=? ? 0;
b=12;
g=1500 0 16 15;
a=2 2;
c=200 300 2 -1 4 0 0 5;
wplus=0 1 3 1;
wminus=1 1 3 0;
enddata
min=@sum(level:p*z);
p(ctr)=1;
@for(level(i)|i#ne#ctr:p(i)=0);
@for(level(i):z(i)=@sum(obj(i,j):wplus(i,j)*dplus(j)+wminus(i,j)*dminus(j)));
@for(h_con_num(i):@sum(variable(j):a(i,j)*x(j))<b(i));
@for(s_con_num(i):@sum(variable(j):c(i,j)*x(j))+dminus(i)-dplus(i)=g(i));
@for(level(i)|i #lt# @size(level):@bnd(0,z(i),goal(i)));
end
当程序运行时,会出现一个对话框。
在做第一级目标计算时,ctr 输入 1,goal(1) 和 goal(2) 输入两个较大的值,
表明这两项约束不起作用。求得第一级的最优偏差为 0,进行第二轮计算。
在第二级目标的运算中,ctr 输入 2。由于第一级的偏差为 0,因此 goal(1)
的输入值为 0,goal(2) 输入一个较大的值。求得第二级的最优偏差仍为 0,进行
第三级计算。
在第三级的计算中,ctr 输入 3。由于第一级、第二级的偏差均是 0,因此,
284

