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
   289   290   291   292   293   294   295   296   297   298   299