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;



雷达卡



京公网安备 11010802022788号







