I know some on Solver/EXCEL. New to SAS/OPTMODEL.
Anyone can help me on this?!
I have two datasets(4 Entities, 2 States(exclusive), 2 performance measurements/State/Entity). How to find the max sum of cross product?!
Dataset1
State E1 E2 E3 E4 E5
S1 5.2 5.8 8.2 3.1 7.2
S2 8.1 3.6 5.0 4.9 1.8
Dataset2
State E1 E2 E3 E4 E5
S1 2.3 3.1 9.1 7.3 4.0
S2 4.2 5.3 7.1 4.7 7.3
Thanks
Not quite sure I understand, but does the following do what you want?
%let numEntities = 5;
data indata;
input dataset state $ e1-e&numEntities;
datalines;
1 S1 5.2 5.8 8.2 3.1 7.2
1 S2 8.1 3.6 5.0 4.9 1.8
2 S1 2.3 3.1 9.1 7.3 4.0
2 S2 4.2 5.3 7.1 4.7 7.3
;
proc optmodel;
set DATASETS;
read data indata into DATASETS=[dataset];
set <str> STATES;
read data indata into STATES=[state];
set ENTITIES = 1..&numEntities;
num performance {DATASETS, STATES, ENTITIES};
read data indata into [dataset state] {entity in ENTITIES} <performance[dataset,state,entity]=col('e'||entity)>;
var IsState {ENTITIES, STATES} binary;
max Objective = sum {e in ENTITIES, s in STATES} (prod {d in DATASETS} performance[d,s,e]) * IsState[e,s];
con OneStatePerEntity {e in ENTITIES}:
sum {s in STATES} IsState[e,s] = 1;
for {e in ENTITIES, s in STATES: min {d in DATASETS} performance[d,s,e] < 2} fix IsState[e,s] = 0;
solve;
print IsState;
print {e in ENTITIES, s in STATES: IsState[e,s].sol > 0.5} (prod {d in DATASETS} performance[d,s,e]);
quit;
Which numbers are input, and which are output (decision variables)? What are the restrictions on the decision variables? Without any restrictions (constraints), the sum of cross products can be as large as you want.
Rob:
The variables are binary(0/1) for each entity [either state1 or state 2]. S(i), S stands for State to Entity(i).
The goal is to maximize the sum of entity performance(two performance measurements, the product as the final performance.
Say Performance A is the project performance; Performance B is the leadership performance.
Entity(1)'s performance for State(1) is 5.2*2.3; for State(2) is 8.1*4.2. The goal the to maximize the team's performance.
The constraints for
1) binary exclusive input, 1/0
2) performance measurement cannot be below a threshold 2.0. Entity(4) performance A on State(2) are 1.8 below the threshold 2.0,
then Entity(4) must not be on State(2) , Entity(4) must be on State(1).
Could you help me on this?!
Not quite sure I understand, but does the following do what you want?
%let numEntities = 5;
data indata;
input dataset state $ e1-e&numEntities;
datalines;
1 S1 5.2 5.8 8.2 3.1 7.2
1 S2 8.1 3.6 5.0 4.9 1.8
2 S1 2.3 3.1 9.1 7.3 4.0
2 S2 4.2 5.3 7.1 4.7 7.3
;
proc optmodel;
set DATASETS;
read data indata into DATASETS=[dataset];
set <str> STATES;
read data indata into STATES=[state];
set ENTITIES = 1..&numEntities;
num performance {DATASETS, STATES, ENTITIES};
read data indata into [dataset state] {entity in ENTITIES} <performance[dataset,state,entity]=col('e'||entity)>;
var IsState {ENTITIES, STATES} binary;
max Objective = sum {e in ENTITIES, s in STATES} (prod {d in DATASETS} performance[d,s,e]) * IsState[e,s];
con OneStatePerEntity {e in ENTITIES}:
sum {s in STATES} IsState[e,s] = 1;
for {e in ENTITIES, s in STATES: min {d in DATASETS} performance[d,s,e] < 2} fix IsState[e,s] = 0;
solve;
print IsState;
print {e in ENTITIES, s in STATES: IsState[e,s].sol > 0.5} (prod {d in DATASETS} performance[d,s,e]);
quit;
Thanks a huge. It is. I verify with puppy Sovler/Excel, though hard to digest in SAS yet.
SAS Innovate 2025 is scheduled for May 6-9 in Orlando, FL. Sign up to be first to learn about the agenda and registration!
Learn how to run multiple linear regression models with and without interactions, presented by SAS user Alex Chaplin.
Find more tutorials on the SAS Users YouTube channel.