proc optmodel;
set <str,str> REGIONS_CARS;
num msrp {REGIONS_CARS};
num invoice {REGIONS_CARS};
num discount {REGIONS_CARS};
read data indata into REGIONS_CARS=[region make] msrp invoice discount;
set <str> REGIONS;
num target {REGIONS};
read data regiondata into REGIONS=[region] target;
var Multiplier {REGIONS};
impvar AdjInvoice {<reg,car> in REGIONS_CARS} = invoice[reg,car] * Multiplier[reg];
con MyCon {reg in REGIONS}:
1 - (sum {<(reg),car> in REGIONS_CARS} AdjInvoice[reg,car]) / (sum {<(reg),car> in REGIONS_CARS} msrp[reg,car]) = target[reg];
solve noobj;
print Multiplier;
/* or just skip the solver call and algebraically solve for Multiplier */
for {reg in REGIONS} Multiplier[reg] =
((1 - target[reg]) * (sum {<(reg),car> in REGIONS_CARS} msrp[reg,car]) / (sum {<(reg),car> in REGIONS_CARS} invoice[reg,car]));
print Multiplier;
create data outdata from [region make] msrp invoice discount AdjInvoice;
quit;
... View more