全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
1976 0
2012-03-16
SAS proc optmodel provides easy to use interface to the optimization solver. Here is a general example for linear programming for maximize profit given cost structure and selling price.

R (n)=unit cost of type n material (labor, material1, material2 ....)
cost (n) = price of the cost of type n material
p(m) = price of selling price of type m product

Availability(n)= total resource available of type n material.


%let nresource=3;
%let nproduct=5;

%let seed1=123;
%let seed2=897;
%let seed3=784;


data resource;
  length resource $10;
  do i=1 to &nresource;   
     resource=catt('R',i);
     Cost=ranuni(&seed1)*10;
     Available=ranuni(&seed1)*400;
         output;
  end;
  drop i;
run;

proc print data=resource;run;

data product;
  retain product     Price;
  array R R1-R&nresource;
  length product $10;
  do i=1 to &nproduct;   
     product=catt('P',i);
     do j=1 to &nresource;
       R[j]=ranuni(&seed2)*3;
         end;
     Price=ranuni(&seed2)*100;
         output;
  end;
  drop i j;
run;

proc print data=product;run;

proc optmodel;

   set <str> Products, Resources;
   num Cost{Resources}, Availability{Resources};
   num Price{Products};
   num Required{Resources,Products};

   read data resource into Resources=[Resource]
     Cost Availability=Available;

   read data product into Products=[product]  
     {r in Resources} <Required[r,product]=col(r)>
     Price;

   var x{Products} >= 0;

   impvar Revenue = sum{p in Products}
     Price[p]*x[p];

   impvar Amount_Used{r in Resources} =
     sum{p in Products} Required[r,p]*x[p];

   impvar Total_Cost = sum{r in Resources}
     Cost[r]*Amount_Used[r];

   impvar Profit{p in Products} = ( Price[p] -
     sum{r in Resources} Cost[r]*Required[r,p] ) * x[p];

   con Usage{r in Resources}:
     Amount_Used[r] <= Availability[r] ;

         reset printlevel=2;
   max Net_Profit = Revenue - Total_Cost;

   solve;

     print 'Profit:' (Net_Profit) dollar.      'Revenue:' (Revenue) dollar.  'Total Cost:' (Total_Cost) dollar7.;

   print {p in Products: x[p] > 0} x {p in Products: x[p] > 0} Profit;

   quit;
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群