sas软件求解线性、非线性和整数问题

来源:互联网 发布:网络教育报考学校 编辑:程序博客网 时间:2024/05/17 00:52

1)  用LP过程求解线性规划
      max z=-5*x1+5*x2+13*x3
          -x1+x2+3*x3<=20
          12*x1+4*x2+10*x3<=90
          x1,x2,x3>=0
  程序:
      data lp1;
      input _row_$ x1 x2 x3 _type_$ _rhs_;
      cards;
      object   -5   5   13   max   .
      proc1    -1   1    3   le   20
      proc2    12   4   10   le   90
      ;
      proc lp;
      run;
答案:*x1=0  *x2=20  *x3=0

 


2)   用LP过程求解整数线性规划
     max 2*x1+3*x2
       5*x1+7*x2<=35
       4*x1+9*x2<=36
       x1,x2>=0  x1,x2为整数
  程序:
       data lp1;
       input _row_$ x1 x2  _type_$ _rhs_;
       cards;
       object  2    3    max   .
       proc1   5    7    le   35
       proc2   4    9    le   36
       bound   10   10   upperbd      .
       inbd    1    2    integer     .
       ;
       proc lp;
       run;
答案:x1=7  x2=0

 

3)  用NLP过程求解无约束优化问题
    min z=1.5*x1*x1+0.5*x2*x2-x1*x2+2*x1
 程序:
      proc nlp;
      min y;
      parms  x1  x2=-1;
      bounds 0<=x1,0<=x2;
      y1=1.5*x1*x1;
      y2=0.5*x2*x2;
      y3=-1*x1*x2;
      y4=-2*x1;
      y=y1+y2+y3+y4;
      run;

答案:x1=x2=1

 


4)   用NLP过程求解无约束优化问题
      min z=-2*x1-x2
        25-x1*x1-x2*x2>=0
        7-x1*x1+x2*x2>=0
        0<=x1<=5
        0<=x2<=10
  程序:
        proc nlp;
        min y;
        parms x1 x2=-1;
        bounds 0<=x1<=5,0<=x2<=10;
        y1=-2*x1;
        y2=-1*x2;
        y3=25-x1*x1-x2*x2;
        y4=7-x1*X1+x2*x2;
    Nlincon y3>=0,
            y4>=0;
    y=y1+y2+y3+y4;
    run;
答案:x1=4  x2=3    minz=-11

 


5)   用NLP过程解非线性规划
      min z=2*x1*x1-4*x1*x2+4*x2*x2-6*x1-3*x2
      x1+x2<=3
      4*x1+x2<=9
      x1,x2>=0
程序:
   proc nlp;
   min y;
   parms x1 x2=-1;
   bounds 0<=x1,0<=x2;
   y1=2*x1*x1;
   y2=-4*x1*x2;
   y3=4*x2*x2;
   y4=-6*x1-3*x2;
   y5=4*x1+x2;
   y6=x1+x2;
   Nlincon y5<=9,     (注意:Nlincon 不能有y5+y6>9等形式出现,只有y>c的形式)
           y6<=3;
   y=y1+y2+y3+y4;
   run;
答案:x1=1.95  x2=1.05   minz=-11.025

 


6)   求解下面线性目标规划模型
       min z=p1*d11+p2*d22+p3*(5*d31+3*d41)+p4*d12
            x1+2*x2+d11-d12=6
            x1+2*x2+d21-d22=9
            x1-2*x2+d31-d32=4
               x2+d41-d42=2
                x1,x2,dij>=0 ,i=1,2,3,4  j=1,2
   程序:
        data hua;
      input _row_$ x1 x2 d11 d12 d21 d22 d31 d32 d41 d42 _type_$ _rhs_;
      cards;
      object 0   0   0.99   0.000001   0   0.0099    0.000061875  0   0.000037125   0   min     .  (可能由于版本原因,不能用其他运算符,只能是数据)
      con1   1   2    1    -1    0    0     0     0     0     0    eq  6
      con2   1   2    0     0    1    -1    0     0     0     0    eq  9
      con3   1   -2   0     0    0    0     1     -1    0     0    eq  4
      con4   0   1    0     0    0    0     0     0     1    -1    eq  2
       ;
      proc lp;
      run;

 


7)   求解下面0-1规划模型
       max z=3*x1+2*x2-5*x3-2*x4+3*x5
        x1+x2+x3+2*x4+x5<=4
        7*x1+  3*x3-4*x4+3*x5<=8
        11*x1-6*x2  +3*x4-3*x5>=3
         xj=0或1 (j=1,...,5)
  程序:
      data cat;
      input  _row_$ x1-x5 _type_$ _rhs_;
      cards;
      object 3  2 -5 -2 3 max     .
      con1 1 1 1 2 1 le 4
      con2 7 0 3 -4 3 le 8
      con3 11 -6 0 3 -3 ge 3
      bound 1 1 1 1 1  upperbd   .
      inbd  1 2 3 4 5  integer   .
      proc lp;
      run;


灵敏度分析
max z=2*x1+x2
3*x1+5*x2<=15+0.8@
6*x1+2*x2<=24+1.9@
x1,x2>=0

 程序:
   data rhsen;
   input _row_$ x1 x2 _type_$  _rhs_  cc;
   cards;
   object  2    1   max      .  .
   con1    3    5   le    15   0.8
   con2    6    2   le    24   1.9
   ;
   proc lp
   data=rhsen;
   rhssen cc;
   run;


lp过程先求出@=0时的原问题的解( x1*=3.750   x28=0.750)
接着进行灵敏度分析,并输出右端向量灵敏度分析概要(RHS SENSITIVITITY ANALYSIS SUMMARY)
这个概要包含:@=@min的值,当@=@min时的离基变量(即从基变量变成非基变量),@=@min时的
目标函数值,@=@max 的值及其它相应值,每个变量的列数编号(COL),@=@min时变量的最优解值,
@=@max时变量的最优解值。
这个分析概要表明,当@min=-11.3924时,最优解为x1*=0.0   x2*=1.177215.当@max=20.0时,最优
解为x1*=10.333   x2*=0.0

 


max z=(2+1.2@)*x1+(1+@)*x2
3*x1+5*x2<=15
6*x1+2*x2<=24
x1,x2>=0

 程序:
   data rhsen;
   input _row_$ x1 x2 _type_$  _rhs_  ;
   cards;
   object  2     1     max       . 
   con1    3     5     le       15 
   con2    6     2     le       24 
   price   1.2   1     pricesen  .      (这个点一定要加)
   ;
   proc lp;
   run;


输出含有价值向量灵敏度分析概要(RHS SENSITIVITITY ANALYSIS SUMMARY)
它包括:@min的值,当@=@min时的进基变量(即从非基变量变成基变量),@=@min时目标函数的值,
@max的值,当@=@max时的进基变量,@=@max时目标函数值,每个变量的列编号及名称(Col,Name),
@=@min时价值系数(price)和最优条件检验数(reduced cost),@=@max时价值系数(price)和最
优条件检验数(reduced cost) 。输出结果表明,当@属于(-0.55556,+&)时,最优解仍为x1*=3.750
x2*=0.750

原创粉丝点击