Could someone help me figure out how to add a constraint that requires at least one of adwords 3,5,7 to be bought?
Also how to force the model to never buy adword 35?
Thank you in advance!
proc optmodel;
set ADWORDS = 1..100;
num cost_per_click{ADWORDS} = ranuni(123);
num clicks{ADWORDS} = ranuni(567);
num conversions{ADWORDS} = ranuni(789);
num revperconversion=10;
var buy{ADWORDS} >=0;
max effectiveness =sum{a in ADWORDS}((revperconversion*conversions[a])-(clicks[a]*cost_per_click[a]))*buy[a];
con buyAtMost50: sum{a in ADWORDS}buy[a]<=50;
con buyAtMostOfEven: sum{a in ADWORDS: mod(a,2) = 0}buy[a]<=10;
con buyAtMostOfOdd: sum{a in ADWORDS: mod(a,1) = 0}buy[a]<=20;
solve;
Quit;
First a correction to your constraint:
con buyAtMostOfOdd: sum{a in ADWORDS: mod(a,2) = 1}buy[a]<=20;
Now here is a way to force 3, 5, 7:
con AtLeastOne357: sum {a in {3,5,7}} buy[a] >= 1;
And here are four alternative ways to avoid 35.
Explicit constraint:
con No35: buy[35] = 0;
Fixed variable:
fix buy[35] = 0;
Change index set declaration:
set ADWORDS = 1..100 diff {35};
Modify index set after declaration:
set ADWORDS init 1..100;
ADWORDS = ADWORDS diff {35};
First a correction to your constraint:
con buyAtMostOfOdd: sum{a in ADWORDS: mod(a,2) = 1}buy[a]<=20;
Now here is a way to force 3, 5, 7:
con AtLeastOne357: sum {a in {3,5,7}} buy[a] >= 1;
And here are four alternative ways to avoid 35.
Explicit constraint:
con No35: buy[35] = 0;
Fixed variable:
fix buy[35] = 0;
Change index set declaration:
set ADWORDS = 1..100 diff {35};
Modify index set after declaration:
set ADWORDS init 1..100;
ADWORDS = ADWORDS diff {35};
Thank you again!
Registration is open! SAS is returning to Vegas for an AI and analytics experience like no other! Whether you're an executive, manager, end user or SAS partner, SAS Innovate is designed for everyone on your team. Register for just $495 by 12/31/2023.
If you are interested in speaking, there is still time to submit a session idea. More details are posted on the website.
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.