<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: PROC OPTMODEL problem to be infeasible in Mathematical Optimization, Discrete-Event Simulation, and OR</title>
    <link>https://communities.sas.com/t5/Mathematical-Optimization/PROC-OPTMODEL-problem-to-be-infeasible/m-p/890937#M4018</link>
    <description>&lt;P&gt;Your Mycon1 looks like an attempt to do that:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;   con Mycon1 {i in OBS}:
      sum {j in OBS} Optimized_Budget[j] &amp;lt;= &amp;amp;overall_input_budget * (1+&amp;amp;allowed_budget_inc) * (1-&amp;amp;value_add_pct);&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;This family of constraints is indexed by i, but nothing in the constraint refers to i, so you end up with the exact same constraint over and over again.&amp;nbsp; Instead, I think you intended to declare a single constraint:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;   con Mycon1:
      sum {j in OBS} Optimized_Budget[j] &amp;lt;= &amp;amp;overall_input_budget * (1+&amp;amp;allowed_budget_inc) * (1-&amp;amp;value_add_pct);
&lt;/CODE&gt;&lt;/PRE&gt;</description>
    <pubDate>Fri, 25 Aug 2023 02:58:14 GMT</pubDate>
    <dc:creator>RobPratt</dc:creator>
    <dc:date>2023-08-25T02:58:14Z</dc:date>
    <item>
      <title>PROC OPTMODEL problem to be infeasible</title>
      <link>https://communities.sas.com/t5/Mathematical-Optimization/PROC-OPTMODEL-problem-to-be-infeasible/m-p/890874#M4015</link>
      <description>&lt;P&gt;I don't understand why the my CON 7 is causing the problem to be infeasible?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Here's my code&amp;nbsp; LOG:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;OPTIONS NONOTES NOSTIMER NOSOURCE NOSYNTAXCHECK;&lt;/DIV&gt;&lt;DIV class=""&gt;72&lt;/DIV&gt;&lt;DIV class=""&gt;73 /*===============================================================================&lt;/DIV&gt;&lt;DIV class=""&gt;73 ! ==========================================================*/&lt;/DIV&gt;&lt;DIV class=""&gt;74 /* 8. Perform the optimization to allocate the daily budget per campaign line&lt;/DIV&gt;&lt;DIV class=""&gt;74 ! item based on the WAMM media allocation and maximize iROAS */&lt;/DIV&gt;&lt;DIV class=""&gt;75 /*===============================================================================&lt;/DIV&gt;&lt;DIV class=""&gt;75 ! ==========================================================*/&lt;/DIV&gt;&lt;DIV class=""&gt;76 proc optmodel;&lt;/DIV&gt;&lt;DIV class=""&gt;77&lt;/DIV&gt;&lt;DIV class=""&gt;78 setOBS;&lt;/DIV&gt;&lt;DIV class=""&gt;79&lt;/DIV&gt;&lt;DIV class=""&gt;80 /* Define the in character variables from the input dataset to be used in the&lt;/DIV&gt;&lt;DIV class=""&gt;80 ! optimization model */&lt;/DIV&gt;&lt;DIV class=""&gt;81&lt;/DIV&gt;&lt;DIV class=""&gt;82 strCampaign_Line_Item {OBS};&lt;/DIV&gt;&lt;DIV class=""&gt;83 strMedia_Tactics {OBS};&lt;/DIV&gt;&lt;DIV class=""&gt;84&lt;/DIV&gt;&lt;DIV class=""&gt;85 set TACTICS = setof {i in OBS} Campaign_Line_Item[i];&lt;/DIV&gt;&lt;DIV class=""&gt;86 set TACTICS2 = setof {j in OBS} Media_Tactics[j];&lt;/DIV&gt;&lt;DIV class=""&gt;87&lt;/DIV&gt;&lt;DIV class=""&gt;88 /* Define the numeric variables from the input dataset to be used in the&lt;/DIV&gt;&lt;DIV class=""&gt;88 ! optimization model */&lt;/DIV&gt;&lt;DIV class=""&gt;89&lt;/DIV&gt;&lt;DIV class=""&gt;90 numInput_Budget {OBS};&lt;/DIV&gt;&lt;DIV class=""&gt;91 num Cost_Adj_Input_Budget {OBS};&lt;/DIV&gt;&lt;DIV class=""&gt;92 numiROAS {OBS};&lt;/DIV&gt;&lt;DIV class=""&gt;93 numUnique_Media_Tactics {OBS};&lt;/DIV&gt;&lt;DIV class=""&gt;94 numInput_Min_Number_of_Days {OBS};&lt;/DIV&gt;&lt;DIV class=""&gt;95 numPct_WAMM_Optimized_Spend {OBS};&lt;/DIV&gt;&lt;DIV class=""&gt;96 numAvg_Pct_WAMM_Optimized_Spend {OBS};&lt;/DIV&gt;&lt;DIV class=""&gt;97 numPct_WAMM_Optimized_by_Line_Item {OBS};&lt;/DIV&gt;&lt;DIV class=""&gt;98 numInput_End_Date {OBS};&lt;/DIV&gt;&lt;DIV class=""&gt;99 numInput_Start_Date {OBS};&lt;/DIV&gt;&lt;DIV class=""&gt;100 numCost_Per_Imp_Or_Click {OBS};&lt;/DIV&gt;&lt;DIV class=""&gt;101 numSaturation_Point {OBS};&lt;/DIV&gt;&lt;DIV class=""&gt;102 numInflection_Point {OBS};&lt;/DIV&gt;&lt;DIV class=""&gt;103&lt;/DIV&gt;&lt;DIV class=""&gt;104 /* Read in the input dataset to be used in the optimization model */&lt;/DIV&gt;&lt;DIV class=""&gt;105&lt;/DIV&gt;&lt;DIV class=""&gt;106 read data CI_Optimization_Data_2 into OBS=[_N_]&lt;/DIV&gt;&lt;DIV class=""&gt;107&lt;/DIV&gt;&lt;DIV class=""&gt;108 /* Include the variables from the input dataset to be used in the optimization&lt;/DIV&gt;&lt;DIV class=""&gt;108 ! model */&lt;/DIV&gt;&lt;DIV class=""&gt;109&lt;/DIV&gt;&lt;DIV class=""&gt;110 Campaign_Line_Item&lt;/DIV&gt;&lt;DIV class=""&gt;111 Input_Budget&lt;/DIV&gt;&lt;DIV class=""&gt;112 Cost_Adj_Input_Budget&lt;/DIV&gt;&lt;DIV class=""&gt;113 Media_Tactics&lt;/DIV&gt;&lt;DIV class=""&gt;114 iROAS&lt;/DIV&gt;&lt;DIV class=""&gt;115 Unique_Media_Tactics&lt;/DIV&gt;&lt;DIV class=""&gt;116 Input_Min_Number_of_Days&lt;/DIV&gt;&lt;DIV class=""&gt;117 Pct_WAMM_Optimized_Spend&lt;/DIV&gt;&lt;DIV class=""&gt;118 Avg_Pct_WAMM_Optimized_Spend&lt;/DIV&gt;&lt;DIV class=""&gt;119 Pct_WAMM_Optimized_by_Line_Item&lt;/DIV&gt;&lt;DIV class=""&gt;120 Input_End_Date&lt;/DIV&gt;&lt;DIV class=""&gt;121 Input_Start_Date&lt;/DIV&gt;&lt;DIV class=""&gt;122 Cost_Per_Imp_Or_Click&lt;/DIV&gt;&lt;DIV class=""&gt;123 Saturation_Point&lt;/DIV&gt;&lt;DIV class=""&gt;124 Inflection_Point;&lt;/DIV&gt;&lt;DIV class=""&gt;NOTE: There were 37 observations read from the data set WORK.CI_OPTIMIZATION_DATA_2.&lt;/DIV&gt;&lt;DIV class=""&gt;125&lt;/DIV&gt;&lt;DIV class=""&gt;126 /* Set the optimization variable to be maximized for the model */&lt;/DIV&gt;&lt;DIV class=""&gt;127&lt;/DIV&gt;&lt;DIV class=""&gt;128 var Optimized_Budget {OBS} &amp;gt;= 0;&lt;/DIV&gt;&lt;DIV class=""&gt;129&lt;/DIV&gt;&lt;DIV class=""&gt;130 /* Create additional variables to be used for optimization and/or contraints&lt;/DIV&gt;&lt;DIV class=""&gt;130 ! in the model */&lt;/DIV&gt;&lt;DIV class=""&gt;131&lt;/DIV&gt;&lt;DIV class=""&gt;132 impvar Input_Incremental_Sales {i in OBS}=iROAS[i] * Input_Budget[i];&lt;/DIV&gt;&lt;DIV class=""&gt;133 impvar Optimized_Incremental_Sales {i in OBS}=iROAS[i] * Optimized_Budget[i];&lt;/DIV&gt;&lt;DIV class=""&gt;134&lt;/DIV&gt;&lt;DIV class=""&gt;135 impvar Optimized_iROAS {i in OBS} =if Cost_Adj_Input_Budget[i] &amp;gt;0 and&lt;/DIV&gt;&lt;DIV class=""&gt;135 ! Optimized_Incremental_Sales[i]&amp;gt;0&lt;/DIV&gt;&lt;DIV class=""&gt;136 then Optimized_Incremental_Sales[i] /&lt;/DIV&gt;&lt;DIV class=""&gt;136 ! Cost_Adj_Input_Budget[i]&lt;/DIV&gt;&lt;DIV class=""&gt;137 else Input_Incremental_Sales[i]&lt;/DIV&gt;&lt;DIV class=""&gt;137 ! / Input_Budget[i];&lt;/DIV&gt;&lt;DIV class=""&gt;138&lt;/DIV&gt;&lt;DIV class=""&gt;139 impvar Input_Number_of_Days {i in&lt;/DIV&gt;&lt;DIV class=""&gt;139 ! OBS}=max(Input_End_Date[i]-Input_Start_Date[i],1);&lt;/DIV&gt;&lt;DIV class=""&gt;140 impvar Total_Campaign_Days {i in OBS}=&amp;amp;Total_Campaign_Days;&lt;/DIV&gt;&lt;DIV class=""&gt;141 impvarDaily_Spend_Per_Min_Days {i in OBS}=Optimized_Budget[i] /&lt;/DIV&gt;&lt;DIV class=""&gt;141 ! Input_Min_Number_of_Days[i];&lt;/DIV&gt;&lt;DIV class=""&gt;142&lt;/DIV&gt;&lt;DIV class=""&gt;143 /***&lt;/DIV&gt;&lt;DIV class=""&gt;144 impvar Offsite_Budget {i in OBS}=if Media_Tactics[i]='Offsite Display&lt;/DIV&gt;&lt;DIV class=""&gt;144 ! Walmart Network' then Input_Budget[i] else 0;&lt;/DIV&gt;&lt;DIV class=""&gt;145 impvar SP_KWB_Budget {i in OBS}=if Media_Tactics[i]='SP KWB' then&lt;/DIV&gt;&lt;DIV class=""&gt;145 ! Input_Budget[i] else 0;&lt;/DIV&gt;&lt;DIV class=""&gt;146 impvar Search_Budget {i in OBS}=SP_KWB_Budget[i] + SP_Auto_Budget [i] +&lt;/DIV&gt;&lt;DIV class=""&gt;146 ! SBA_Budget [i];&lt;/DIV&gt;&lt;DIV class=""&gt;147 ***/&lt;/DIV&gt;&lt;DIV class=""&gt;148&lt;/DIV&gt;&lt;DIV class=""&gt;149 /*-------------------------------------------------------------------------*/&lt;/DIV&gt;&lt;DIV class=""&gt;150 /* Optimization function */&lt;/DIV&gt;&lt;DIV class=""&gt;151 /*-------------------------------------------------------------------------*/&lt;/DIV&gt;&lt;DIV class=""&gt;152 max Total_iROAS = sum {i in OBS} iROAS[i] * Optimized_Budget[i];&lt;/DIV&gt;&lt;DIV class=""&gt;153&lt;/DIV&gt;&lt;DIV class=""&gt;154 /* MAXIMUM BUDGET ALLOWED -&amp;gt; Optimized Budget to comply with the maximum WAMM&lt;/DIV&gt;&lt;DIV class=""&gt;154 ! budget allowed */&lt;/DIV&gt;&lt;DIV class=""&gt;155 con Mycon1 {i in OBS}:&lt;/DIV&gt;&lt;DIV class=""&gt;156 sum {j in OBS} Optimized_Budget[j] &amp;lt;= &amp;amp;overall_input_budget *&lt;/DIV&gt;&lt;DIV class=""&gt;157 (1+&amp;amp;allowed_budget_inc) *&lt;/DIV&gt;&lt;DIV class=""&gt;158 (1-&amp;amp;value_add_pct);&lt;/DIV&gt;&lt;DIV class=""&gt;159&lt;/DIV&gt;&lt;DIV class=""&gt;160 con Mycon2 {i in OBS}:&lt;/DIV&gt;&lt;DIV class=""&gt;161 Optimized_Budget[i] &amp;lt;= Input_Budget[i] *&lt;/DIV&gt;&lt;DIV class=""&gt;162 (1+&amp;amp;wamm_deviation_pct) *&lt;/DIV&gt;&lt;DIV class=""&gt;163 (1-&amp;amp;value_add_pct);&lt;/DIV&gt;&lt;DIV class=""&gt;164&lt;/DIV&gt;&lt;DIV class=""&gt;165 /* ONLY WHEN ALL WAMM TACTICS ARE CONSIDERED -&amp;gt; Optimized Budget to comply with&lt;/DIV&gt;&lt;DIV class=""&gt;165 ! the WAMM % allocation plus an allowed increase ratio */&lt;/DIV&gt;&lt;DIV class=""&gt;166 *con Mycon2 {i in OBS}:&lt;/DIV&gt;&lt;DIV class=""&gt;167 Optimized_Budget[i] &amp;lt;= Input_Budget[i] *&lt;/DIV&gt;&lt;DIV class=""&gt;168 Pct_WAMM_Optimized_by_Line_Item[i] *&lt;/DIV&gt;&lt;DIV class=""&gt;169 (&amp;amp;total_input_ci_allocation) *&lt;/DIV&gt;&lt;DIV class=""&gt;170 (1+&amp;amp;wamm_deviation_pct) *&lt;/DIV&gt;&lt;DIV class=""&gt;171 (1+&amp;amp;allowed_budget_inc) *&lt;/DIV&gt;&lt;DIV class=""&gt;172 (1-&amp;amp;value_add_pct);&lt;/DIV&gt;&lt;DIV class=""&gt;173&lt;/DIV&gt;&lt;DIV class=""&gt;174 /* ONLY WHEN NO INPUT BUDGET GIVEN AND ALL WAMM TACTICS ARE CONSIDERED -&amp;gt;&lt;/DIV&gt;&lt;DIV class=""&gt;174 ! Optimized Budget to comply with the overall WAMM budget */&lt;/DIV&gt;&lt;DIV class=""&gt;175 *con Mycon2 {i in OBS}:&lt;/DIV&gt;&lt;DIV class=""&gt;176 Optimized_Budget[i] &amp;lt;= &amp;amp;overall_input_budget *&lt;/DIV&gt;&lt;DIV class=""&gt;177 Pct_WAMM_Optimized_by_Line_Item[i] *&lt;/DIV&gt;&lt;DIV class=""&gt;178 (&amp;amp;total_input_ci_allocation) *&lt;/DIV&gt;&lt;DIV class=""&gt;179 (1+&amp;amp;wamm_deviation_pct) *&lt;/DIV&gt;&lt;DIV class=""&gt;180 (1+&amp;amp;allowed_budget_inc) *&lt;/DIV&gt;&lt;DIV class=""&gt;181 (1-&amp;amp;value_add_pct);&lt;/DIV&gt;&lt;DIV class=""&gt;182&lt;/DIV&gt;&lt;DIV class=""&gt;183 /* SATURATION -&amp;gt; Ensure each tactic does not exceed the Point of Saturation&lt;/DIV&gt;&lt;DIV class=""&gt;183 ! based on WAMM */&lt;/DIV&gt;&lt;DIV class=""&gt;184 con Mycon3 {i in OBS}:&lt;/DIV&gt;&lt;DIV class=""&gt;185 Optimized_Budget[i]&amp;lt;=Saturation_Point[i] *&lt;/DIV&gt;&lt;DIV class=""&gt;186 Total_Campaign_Days[i] *&lt;/DIV&gt;&lt;DIV class=""&gt;187 (1+&amp;amp;allowed_budget_inc);&lt;/DIV&gt;&lt;DIV class=""&gt;188&lt;/DIV&gt;&lt;DIV class=""&gt;189 /*-------------------------------------------------------------------------*/&lt;/DIV&gt;&lt;DIV class=""&gt;190 /* Tactic Specific Mininum Constraints not to exceed 50000 or greater than */&lt;/DIV&gt;&lt;DIV class=""&gt;191 /*-------------------------------------------------------------------------*/&lt;/DIV&gt;&lt;DIV class=""&gt;192 /* MINIMUM SPEND BY TACTIC -&amp;gt; Ensure every tactic has at least a certain % of&lt;/DIV&gt;&lt;DIV class=""&gt;192 ! the Inout Budget contraint */&lt;/DIV&gt;&lt;DIV class=""&gt;193 con Mycon4 {i in OBS}:&lt;/DIV&gt;&lt;DIV class=""&gt;194 Optimized_Budget[i]&amp;gt;=if Media_Tactics[i] ne ' ' and Media_Tactics[i]&lt;/DIV&gt;&lt;DIV class=""&gt;194 ! ne 'Onsite Display Run-Of-Site'&lt;/DIV&gt;&lt;DIV class=""&gt;195 then Input_Budget[i]*&amp;amp;wamm_deviation_pct;&lt;/DIV&gt;&lt;DIV class=""&gt;196&lt;/DIV&gt;&lt;DIV class=""&gt;197 /* MINIMUM SPEND BY TACTIC -&amp;gt; Ensure every tactic has at least a certain $ of&lt;/DIV&gt;&lt;DIV class=""&gt;197 ! the Inout Budget contraint */&lt;/DIV&gt;&lt;DIV class=""&gt;198 con Mycon5 {i in OBS}:&lt;/DIV&gt;&lt;DIV class=""&gt;199 Optimized_Budget[i]&amp;gt;=if Media_Tactics[i] ne ' ' and Media_Tactics[i]&lt;/DIV&gt;&lt;DIV class=""&gt;199 ! ne 'Onsite Display Run-Of-Site'&lt;/DIV&gt;&lt;DIV class=""&gt;200 then 10000;&lt;/DIV&gt;&lt;DIV class=""&gt;201&lt;/DIV&gt;&lt;DIV class=""&gt;202 /* MAXIMUM SPEND BY TACTIC -&amp;gt; Ensure every tactic has at least a certain $ of&lt;/DIV&gt;&lt;DIV class=""&gt;202 ! the Inout Budget contraint */&lt;/DIV&gt;&lt;DIV class=""&gt;203 *con Mycon6 {i in OBS}:&lt;/DIV&gt;&lt;DIV class=""&gt;204 Optimized_Budget[i]&amp;lt;=if Media_Tactics[i] ne ' ' then 20900;&lt;/DIV&gt;&lt;DIV class=""&gt;205&lt;/DIV&gt;&lt;DIV class=""&gt;206 /* MAXIMUM SPEND BY TACTIC -&amp;gt; Onsite Display Contextual Targeting contraint */&lt;/DIV&gt;&lt;DIV class=""&gt;207 con Mycon7 {i in OBS}:&lt;/DIV&gt;&lt;DIV class=""&gt;208 Optimized_Budget[i]&amp;lt;=if Media_Tactics[i]='Offsite Display Walmart&lt;/DIV&gt;&lt;DIV class=""&gt;208 ! Network' then 2000000;&lt;/DIV&gt;&lt;DIV class=""&gt;209&lt;/DIV&gt;&lt;DIV class=""&gt;210 /* sum of Search_Budget not to exceed 150000 */&lt;/DIV&gt;&lt;DIV class=""&gt;211 *con Mycon10 {i in OBS}:&lt;/DIV&gt;&lt;DIV class=""&gt;212 sum {j in OBS} Search_Budget[j] &amp;lt;= 149000;&lt;/DIV&gt;&lt;DIV class=""&gt;213&lt;/DIV&gt;&lt;DIV class=""&gt;214 solve;&lt;/DIV&gt;&lt;DIV class=""&gt;NOTE: Problem generation will use 4 threads.&lt;/DIV&gt;&lt;DIV class=""&gt;NOTE: The problem has 37 variables (0 free, 0 fixed).&lt;/DIV&gt;&lt;DIV class=""&gt;NOTE: The problem has 222 linear constraints (148 LE, 0 EQ, 74 GE, 0 range).&lt;/DIV&gt;&lt;DIV class=""&gt;NOTE: The problem has 1554 linear constraint coefficients.&lt;/DIV&gt;&lt;DIV class=""&gt;NOTE: The problem has 0 nonlinear constraints (0 LE, 0 EQ, 0 GE, 0 range).&lt;/DIV&gt;&lt;DIV class=""&gt;NOTE: The OPTMODEL presolver is disabled for linear problems.&lt;/DIV&gt;&lt;DIV class=""&gt;NOTE: The LP presolver value AUTOMATIC is applied.&lt;/DIV&gt;&lt;DIV class=""&gt;NOTE: The LP presolver time is 0.00 seconds.&lt;/DIV&gt;&lt;DIV class=""&gt;NOTE: Constraint Mycon7[1] causes the problem to be infeasible.&lt;/DIV&gt;&lt;DIV class=""&gt;NOTE: The LP presolver found this problem to be infeasible.&lt;/DIV&gt;&lt;DIV class=""&gt;NOTE: Infeasible.&lt;/DIV&gt;&lt;DIV class=""&gt;NOTE: The IIS= option can be used to help diagnose the cause of infeasibility.&lt;/DIV&gt;&lt;DIV class=""&gt;215&lt;/DIV&gt;&lt;DIV class=""&gt;216 create data CI_Optimization_Data_3(drop=i) from [i]=OBS&lt;/DIV&gt;&lt;DIV class=""&gt;217&lt;/DIV&gt;&lt;DIV class=""&gt;218 Media_Tactics&lt;/DIV&gt;&lt;DIV class=""&gt;219 Campaign_Line_Item&lt;/DIV&gt;&lt;DIV class=""&gt;220 Optimized_Budget&lt;/DIV&gt;&lt;DIV class=""&gt;221 Input_Budget&lt;/DIV&gt;&lt;DIV class=""&gt;222 Cost_Adj_Input_Budget&lt;/DIV&gt;&lt;DIV class=""&gt;223 iROAS&lt;/DIV&gt;&lt;DIV class=""&gt;224 Unique_Media_Tactics&lt;/DIV&gt;&lt;DIV class=""&gt;225 Pct_WAMM_Optimized_Spend&lt;/DIV&gt;&lt;DIV class=""&gt;226 Avg_Pct_WAMM_Optimized_Spend&lt;/DIV&gt;&lt;DIV class=""&gt;227 Pct_WAMM_Optimized_by_Line_Item&lt;/DIV&gt;&lt;DIV class=""&gt;228 Input_Number_of_Days&lt;/DIV&gt;&lt;DIV class=""&gt;229 Input_Min_Number_of_Days&lt;/DIV&gt;&lt;DIV class=""&gt;230 Saturation_Point&lt;/DIV&gt;&lt;DIV class=""&gt;231 Inflection_Point&lt;/DIV&gt;&lt;DIV class=""&gt;232&lt;/DIV&gt;&lt;DIV class=""&gt;233 Input_Incremental_Sales&lt;/DIV&gt;&lt;DIV class=""&gt;234 Optimized_Incremental_Sales&lt;/DIV&gt;&lt;DIV class=""&gt;235 Optimized_iROAS&lt;/DIV&gt;&lt;DIV class=""&gt;236&lt;/DIV&gt;&lt;DIV class=""&gt;237 Total_Campaign_Days&lt;/DIV&gt;&lt;DIV class=""&gt;238 Daily_Spend_Per_Min_Days&lt;/DIV&gt;&lt;DIV class=""&gt;239 ;&lt;/DIV&gt;&lt;DIV class=""&gt;NOTE: Division by zero at line 137 column 82.&lt;/DIV&gt;&lt;DIV class=""&gt;NOTE: The data set WORK.CI_OPTIMIZATION_DATA_3 has 37 observations and 19 variables.&lt;/DIV&gt;&lt;DIV class=""&gt;240 quit;&lt;/DIV&gt;&lt;DIV class=""&gt;NOTE: PROCEDURE OPTMODEL used (Total process time):&lt;/DIV&gt;&lt;DIV class=""&gt;real time 0.20 seconds&lt;/DIV&gt;&lt;DIV class=""&gt;cpu time 0.03 seconds&lt;/DIV&gt;&lt;DIV class=""&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV class=""&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV class=""&gt;241&lt;/DIV&gt;&lt;DIV class=""&gt;242&lt;/DIV&gt;&lt;DIV class=""&gt;243 OPTIONS NONOTES NOSTIMER NOSOURCE NOSYNTAXCHECK;&lt;/DIV&gt;&lt;DIV class=""&gt;255&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV class=""&gt;User: Michael Kaushansky&lt;/DIV&gt;&lt;SPAN class=""&gt;&lt;SPAN class=""&gt;&lt;SPAN class=""&gt;&lt;SPAN class=""&gt;Messages: 77&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV class=""&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV class=""&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV class=""&gt;&amp;nbsp;&lt;/DIV&gt;</description>
      <pubDate>Thu, 24 Aug 2023 18:55:46 GMT</pubDate>
      <guid>https://communities.sas.com/t5/Mathematical-Optimization/PROC-OPTMODEL-problem-to-be-infeasible/m-p/890874#M4015</guid>
      <dc:creator>Kaushansky</dc:creator>
      <dc:date>2023-08-24T18:55:46Z</dc:date>
    </item>
    <item>
      <title>Re: PROC OPTMODEL problem to be infeasible</title>
      <link>https://communities.sas.com/t5/Mathematical-Optimization/PROC-OPTMODEL-problem-to-be-infeasible/m-p/890891#M4016</link>
      <description>&lt;P&gt;It is hard to tell for sure from just looking at your log, but here is what I suspect is going on.&amp;nbsp; You declared this constraint:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;   con Mycon7 {i in OBS}:
      Optimized_Budget[i]&amp;lt;=if Media_Tactics[i]='Offsite Display Walmart Network' then 2000000;
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;For the IF-THEN/ELSE expression, there is a default of ELSE 0, so what you declared is equivalent to this:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;   con Mycon7 {i in OBS}:
      Optimized_Budget[i]&amp;lt;=if Media_Tactics[i]='Offsite Display Walmart Network' then 2000000 else 0;
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Because Optimized_Budget[i] is declared with &amp;gt;= 0 and this constraint forces that variable to be &amp;lt;= 0 if Media_Tactics[i] is not 'Offsite Display Walmart Network', the effect is that&amp;nbsp;Optimized_Budget[i] = 0 in that case.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I think you instead meant for the constraint to be enforced only if the condition is satisfied, which you can do as follows:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;   con Mycon7 {i in OBS: Media_Tactics[i]='Offsite Display Walmart Network'}:
      Optimized_Budget[i] &amp;lt;= 2000000;
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;And for a constraint with only one variable, it is more efficient to instead omit the constraint and just change the variable bounds:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;   for {i in OBS: Media_Tactics[i]='Offsite Display Walmart Network'}
      Optimized_Budget[i].ub = 2000000;
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;If I guessed wrong about your intent, I recommend trying the suggestion in the log to use the IIS= option to help diagnose infeasibility:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;   solve with lp / iis=1;
   expand / iis;
&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Thu, 24 Aug 2023 19:13:15 GMT</pubDate>
      <guid>https://communities.sas.com/t5/Mathematical-Optimization/PROC-OPTMODEL-problem-to-be-infeasible/m-p/890891#M4016</guid>
      <dc:creator>RobPratt</dc:creator>
      <dc:date>2023-08-24T19:13:15Z</dc:date>
    </item>
    <item>
      <title>Re: PROC OPTMODEL problem to be infeasible</title>
      <link>https://communities.sas.com/t5/Mathematical-Optimization/PROC-OPTMODEL-problem-to-be-infeasible/m-p/890930#M4017</link>
      <description>Thank you for your email. This was very helpful.&lt;BR /&gt;&lt;BR /&gt;How can I set global constraints, for several rows as a group Vs by each&lt;BR /&gt;Obs (row from the input dataset).&lt;BR /&gt;</description>
      <pubDate>Fri, 25 Aug 2023 01:33:41 GMT</pubDate>
      <guid>https://communities.sas.com/t5/Mathematical-Optimization/PROC-OPTMODEL-problem-to-be-infeasible/m-p/890930#M4017</guid>
      <dc:creator>Kaushansky</dc:creator>
      <dc:date>2023-08-25T01:33:41Z</dc:date>
    </item>
    <item>
      <title>Re: PROC OPTMODEL problem to be infeasible</title>
      <link>https://communities.sas.com/t5/Mathematical-Optimization/PROC-OPTMODEL-problem-to-be-infeasible/m-p/890937#M4018</link>
      <description>&lt;P&gt;Your Mycon1 looks like an attempt to do that:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;   con Mycon1 {i in OBS}:
      sum {j in OBS} Optimized_Budget[j] &amp;lt;= &amp;amp;overall_input_budget * (1+&amp;amp;allowed_budget_inc) * (1-&amp;amp;value_add_pct);&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;This family of constraints is indexed by i, but nothing in the constraint refers to i, so you end up with the exact same constraint over and over again.&amp;nbsp; Instead, I think you intended to declare a single constraint:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;   con Mycon1:
      sum {j in OBS} Optimized_Budget[j] &amp;lt;= &amp;amp;overall_input_budget * (1+&amp;amp;allowed_budget_inc) * (1-&amp;amp;value_add_pct);
&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Fri, 25 Aug 2023 02:58:14 GMT</pubDate>
      <guid>https://communities.sas.com/t5/Mathematical-Optimization/PROC-OPTMODEL-problem-to-be-infeasible/m-p/890937#M4018</guid>
      <dc:creator>RobPratt</dc:creator>
      <dc:date>2023-08-25T02:58:14Z</dc:date>
    </item>
    <item>
      <title>Re: PROC OPTMODEL problem to be infeasible</title>
      <link>https://communities.sas.com/t5/Mathematical-Optimization/PROC-OPTMODEL-problem-to-be-infeasible/m-p/892019#M4022</link>
      <description>&lt;P&gt;Thank you.&lt;/P&gt;&lt;P&gt;And assuming I can set global constraint (if/then) conditions using this single constraint?&lt;/P&gt;</description>
      <pubDate>Thu, 31 Aug 2023 17:42:33 GMT</pubDate>
      <guid>https://communities.sas.com/t5/Mathematical-Optimization/PROC-OPTMODEL-problem-to-be-infeasible/m-p/892019#M4022</guid>
      <dc:creator>Kaushansky</dc:creator>
      <dc:date>2023-08-31T17:42:33Z</dc:date>
    </item>
    <item>
      <title>Re: PROC OPTMODEL problem to be infeasible</title>
      <link>https://communities.sas.com/t5/Mathematical-Optimization/PROC-OPTMODEL-problem-to-be-infeasible/m-p/892029#M4023</link>
      <description>&lt;P&gt;Not sure I follow.&amp;nbsp; Do you mean that you want to use a logical condition with respect to the input data to determine whether to impose a single constraint?&lt;/P&gt;</description>
      <pubDate>Thu, 31 Aug 2023 18:36:40 GMT</pubDate>
      <guid>https://communities.sas.com/t5/Mathematical-Optimization/PROC-OPTMODEL-problem-to-be-infeasible/m-p/892029#M4023</guid>
      <dc:creator>RobPratt</dc:creator>
      <dc:date>2023-08-31T18:36:40Z</dc:date>
    </item>
    <item>
      <title>Re: PROC OPTMODEL problem to be infeasible</title>
      <link>https://communities.sas.com/t5/Mathematical-Optimization/PROC-OPTMODEL-problem-to-be-infeasible/m-p/892031#M4024</link>
      <description>&lt;P&gt;Meaning - could I do this:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;con Mycon1 {sum {j in OBS} Optimized_Budget[j]='Offsite Display Walmart Network'}: Optimized_Budget[i]&amp;lt;=200000;&lt;/P&gt;</description>
      <pubDate>Thu, 31 Aug 2023 18:42:03 GMT</pubDate>
      <guid>https://communities.sas.com/t5/Mathematical-Optimization/PROC-OPTMODEL-problem-to-be-infeasible/m-p/892031#M4024</guid>
      <dc:creator>Kaushansky</dc:creator>
      <dc:date>2023-08-31T18:42:03Z</dc:date>
    </item>
    <item>
      <title>Re: PROC OPTMODEL problem to be infeasible</title>
      <link>https://communities.sas.com/t5/Mathematical-Optimization/PROC-OPTMODEL-problem-to-be-infeasible/m-p/892033#M4025</link>
      <description>&lt;P&gt;No, that syntax will yield errors, and the logical condition compares a sum of decision variables to a string, so it would never be true.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Do you maybe want the following?&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;con Mycon1: sum {i in OBS: &lt;SPAN&gt;Media_Tactics[i]=&lt;/SPAN&gt;'Offsite Display Walmart Network'} Optimized_Budget[i] &amp;lt;= 200000;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;If not, what is the business rule that you are trying to enforce?&lt;/P&gt;</description>
      <pubDate>Thu, 31 Aug 2023 18:56:20 GMT</pubDate>
      <guid>https://communities.sas.com/t5/Mathematical-Optimization/PROC-OPTMODEL-problem-to-be-infeasible/m-p/892033#M4025</guid>
      <dc:creator>RobPratt</dc:creator>
      <dc:date>2023-08-31T18:56:20Z</dc:date>
    </item>
    <item>
      <title>Re: PROC OPTMODEL problem to be infeasible</title>
      <link>https://communities.sas.com/t5/Mathematical-Optimization/PROC-OPTMODEL-problem-to-be-infeasible/m-p/892037#M4026</link>
      <description>&lt;P&gt;Here's the example of data I am trying to model:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I would like to set a global constraint for&amp;nbsp;&amp;nbsp;Media_Tactics&amp;nbsp;Offsite Display Walmart Network to be less than $350K, but also additional sub-constraints Campaign_Line_Item criteria.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;&amp;nbsp;Media_Tactics&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;Campaign_Line_Item&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;Input_Budget&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Offsite Display Walmart Network&lt;/TD&gt;&lt;TD&gt;Walmart DSP|Display|Cross Device|Standard Audience|In Market Ornaments|47490|7974158&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;$&amp;nbsp;&amp;nbsp; 25,000.00&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Offsite Display Walmart Network&lt;/TD&gt;&lt;TD&gt;Walmart DSP|Display|Cross Device|Custom Audience|Ornaments Heavy Spenders|47490|7974159&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;$&amp;nbsp;&amp;nbsp; 30,000.00&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Offsite Display Walmart Network&lt;/TD&gt;&lt;TD&gt;Walmart DSP|Display|Cross Device|Propensity Audience|Ornaments|47490|7974160&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;$&amp;nbsp;&amp;nbsp; 30,000.00&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Offsite Display Walmart Network&lt;/TD&gt;&lt;TD&gt;Walmart DSP|Display|Cross Device|Standard Audience|Persona Gifters|47490|7974165&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;$&amp;nbsp;&amp;nbsp; 25,000.00&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Offsite Display Walmart Network&lt;/TD&gt;&lt;TD&gt;Walmart DSP|Display|Cross Device|Custom Audience|Ornaments Previous Purchasers|47490|7974169&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;$&amp;nbsp;&amp;nbsp; 25,000.00&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Offsite Display Walmart Network&lt;/TD&gt;&lt;TD&gt;Walmart DSP|Display|Cross Device|Custom Audience|Collectibles Heavy Spenders|47490|7974171&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;$&amp;nbsp;&amp;nbsp; 25,000.00&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Offsite Display Walmart Network&lt;/TD&gt;&lt;TD&gt;Walmart DSP|Display|Cross Device|Custom Audience|Families with Kids+Previous Ornaments Purchasers|47490|7974174&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;$&amp;nbsp;&amp;nbsp; 25,000.00&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Offsite Display Walmart Network&lt;/TD&gt;&lt;TD&gt;Walmart DSP|Display|Cross Device|Propensity Audience|Gifting Supplies|47490|7974175&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;$&amp;nbsp;&amp;nbsp; 25,000.00&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Offsite Display Walmart Network&lt;/TD&gt;&lt;TD&gt;Walmart DSP|Display|Cross Device|Custom Audience|Nov&amp;amp;DecShoppers|47490|7974178&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;$&amp;nbsp;&amp;nbsp; 25,000.00&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Offsite Display Walmart Network&lt;/TD&gt;&lt;TD&gt;Walmart DSP|Display|Cross Device|Custom Audience|GenZMillenial&amp;amp;PopCulture|47490|7974179&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;$&amp;nbsp;&amp;nbsp; 20,000.00&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Offsite Display Walmart Network&lt;/TD&gt;&lt;TD&gt;Walmart DSP|Display|Cross Device|Custom Audience|Heavy Spenders Home Decor|47490|8003807&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;$&amp;nbsp;&amp;nbsp; 20,000.00&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Offsite Display Walmart Network&lt;/TD&gt;&lt;TD&gt;Walmart DSP|Display|Cross Device|Propensity Audience|Holiday Decor|47490|8005360&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;$&amp;nbsp;&amp;nbsp; 25,000.00&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Offsite Display Walmart Network&lt;/TD&gt;&lt;TD&gt;Walmart DSP|Display|Cross Device|Standard Audience|In Market Christmas|47490|7974163&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;$&amp;nbsp;&amp;nbsp; 25,000.00&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Offsite Display Walmart Network&lt;/TD&gt;&lt;TD&gt;Walmart DSP|Display|Cross Device|Custom Audience|Contextual Holidays and Celebrations|47490|7974199&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;$&amp;nbsp;&amp;nbsp; 20,000.00&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Offsite Display Walmart Network&lt;/TD&gt;&lt;TD&gt;Walmart DSP|Pre-roll|Cross Device|Standard Audience|In Market Ornaments|47490|7974313&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;$&amp;nbsp;&amp;nbsp; 20,000.00&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Offsite Display Walmart Network&lt;/TD&gt;&lt;TD&gt;Walmart DSP|Pre-roll|Cross Device|Propensity Audience| Ornaments|47490|7974314&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;$&amp;nbsp;&amp;nbsp; 20,000.00&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Offsite Display Walmart Network&lt;/TD&gt;&lt;TD&gt;Walmart DSP|Pre-roll|Cross Device|Custom Audience|Ornaments Heavy Spenders|47490|7974315&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;$&amp;nbsp;&amp;nbsp; 20,000.00&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;</description>
      <pubDate>Thu, 31 Aug 2023 19:01:52 GMT</pubDate>
      <guid>https://communities.sas.com/t5/Mathematical-Optimization/PROC-OPTMODEL-problem-to-be-infeasible/m-p/892037#M4026</guid>
      <dc:creator>Kaushansky</dc:creator>
      <dc:date>2023-08-31T19:01:52Z</dc:date>
    </item>
    <item>
      <title>Re: PROC OPTMODEL problem to be infeasible</title>
      <link>https://communities.sas.com/t5/Mathematical-Optimization/PROC-OPTMODEL-problem-to-be-infeasible/m-p/892144#M4027</link>
      <description>&lt;P&gt;OK, I think you want the following:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;con Mycon1: sum {i in OBS: Media_Tactics[i]='Offsite Display Walmart Network'} Optimized_Budget[i] &amp;lt;= 350000;
&lt;BR /&gt;con Mycon2 {j in CAMPAIGNS}: sum {i in OBS: Campaign_Line_Item[i]=j} Optimized_Budget[i] &amp;lt;= Input_Budget[j];&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Thu, 31 Aug 2023 20:16:52 GMT</pubDate>
      <guid>https://communities.sas.com/t5/Mathematical-Optimization/PROC-OPTMODEL-problem-to-be-infeasible/m-p/892144#M4027</guid>
      <dc:creator>RobPratt</dc:creator>
      <dc:date>2023-08-31T20:16:52Z</dc:date>
    </item>
    <item>
      <title>Re: PROC OPTMODEL problem to be infeasible</title>
      <link>https://communities.sas.com/t5/Mathematical-Optimization/PROC-OPTMODEL-problem-to-be-infeasible/m-p/892148#M4028</link>
      <description>&lt;P&gt;Got it.&lt;/P&gt;&lt;P&gt;So this will ensure that:&lt;/P&gt;&lt;P&gt;1. Overall&amp;nbsp;Offsite Display Walmart Network will be less/eq $350K&lt;/P&gt;&lt;P&gt;2.&amp;nbsp;Campaign_Line_Item = to something can be &amp;gt; $50K if needed?&lt;/P&gt;</description>
      <pubDate>Thu, 31 Aug 2023 20:26:20 GMT</pubDate>
      <guid>https://communities.sas.com/t5/Mathematical-Optimization/PROC-OPTMODEL-problem-to-be-infeasible/m-p/892148#M4028</guid>
      <dc:creator>Kaushansky</dc:creator>
      <dc:date>2023-08-31T20:26:20Z</dc:date>
    </item>
    <item>
      <title>Re: PROC OPTMODEL problem to be infeasible</title>
      <link>https://communities.sas.com/t5/Mathematical-Optimization/PROC-OPTMODEL-problem-to-be-infeasible/m-p/892188#M4029</link>
      <description>&lt;P&gt;Yes, as long as 50000 is &amp;lt;= Input_Budget[j] for campaign j.&lt;/P&gt;</description>
      <pubDate>Thu, 31 Aug 2023 21:27:49 GMT</pubDate>
      <guid>https://communities.sas.com/t5/Mathematical-Optimization/PROC-OPTMODEL-problem-to-be-infeasible/m-p/892188#M4029</guid>
      <dc:creator>RobPratt</dc:creator>
      <dc:date>2023-08-31T21:27:49Z</dc:date>
    </item>
    <item>
      <title>Re: PROC OPTMODEL problem to be infeasible</title>
      <link>https://communities.sas.com/t5/Mathematical-Optimization/PROC-OPTMODEL-problem-to-be-infeasible/m-p/892376#M4032</link>
      <description>&lt;P&gt;This is giving me an error? Do you know why?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;DIV class=""&gt;con Mycon9: sum {i in OBS: Campaign_Line_Item[i] in&lt;/DIV&gt;&lt;DIV class=""&gt;187 ('Walmart DSP|Display|Cross Device|Standard Audience|In Market&lt;/DIV&gt;&lt;DIV class=""&gt;187 ! Christmas|47490|7974163'&lt;/DIV&gt;&lt;DIV class=""&gt;188 ,'Walmart DSP|Display|Cross Device|Custom Audience|Heavy Spenders Home&lt;/DIV&gt;&lt;DIV class=""&gt;_&lt;/DIV&gt;&lt;DIV class=""&gt;22&lt;/DIV&gt;&lt;DIV class=""&gt;76&lt;/DIV&gt;&lt;DIV class=""&gt;188 ! Decor|47490|8003807'&lt;/DIV&gt;&lt;DIV class=""&gt;ERROR 22-322: Syntax error, expecting one of the following: !, !!, &amp;amp;, ), *, **, +, -, .., /,&lt;/DIV&gt;&lt;DIV class=""&gt;&amp;lt;, &amp;lt;=, &amp;lt;&amp;gt;, =, &amp;gt;, &amp;gt;&amp;lt;, &amp;gt;=, AND, BY, CROSS, DIFF, ELSE, IN, INTER, NOT, OR,&lt;/DIV&gt;&lt;DIV class=""&gt;SYMDIFF, TO, UNION, WITHIN, ^, ^=, |, ||, ~, ~=.&lt;/DIV&gt;&lt;DIV class=""&gt;ERROR 76-322: Syntax error, statement will be ignored.&lt;/DIV&gt;&lt;DIV class=""&gt;189 ,'Walmart DSP|Display|Cross Device|Propensity Audience|Holiday&lt;/DIV&gt;&lt;DIV class=""&gt;189 ! Decor|47490|8005360'&lt;/DIV&gt;&lt;DIV class=""&gt;190 ,'Walmart DSP|Display|Cross Device|Propensity&lt;/DIV&gt;&lt;DIV class=""&gt;190 ! Audience|Ornaments|47490|7974160'&lt;/DIV&gt;&lt;DIV class=""&gt;191 ,'Walmart DSP|Display|Cross Device|Custom&lt;/DIV&gt;&lt;DIV class=""&gt;191 ! Audience|Nov&amp;amp;DecShoppers|47490|7974178'&lt;/DIV&gt;&lt;DIV class=""&gt;192 ,'Walmart|Display|Cross Device|Contextual Targeting|Holiday&lt;/DIV&gt;&lt;DIV class=""&gt;192 ! Decor|CY23|47490|7974064')} Optimized_Budget[i] &amp;lt;= 140000;&lt;/DIV&gt;&lt;DIV class=""&gt;193&lt;/DIV&gt;&lt;DIV class=""&gt;194 /*-------------------------------------------------------------------------*/&lt;/DIV&gt;&lt;DIV class=""&gt;195 /* CONDITIONAL CONSTRAINTS BY Tactic Specific Mininums and Maximums */&lt;/DIV&gt;&lt;DIV class=""&gt;196 /*-------------------------------------------------------------------------*/&lt;/DIV&gt;&lt;DIV class=""&gt;197&lt;/DIV&gt;&lt;DIV class=""&gt;198 /* OVERALL MAXIMUM SPEND BY TACTIC -&amp;gt; Ensure every tactic has at LEAST a certain %&lt;/DIV&gt;&lt;DIV class=""&gt;198 ! of the Input Budget contraint */&lt;/DIV&gt;&lt;DIV class=""&gt;199 con Mycon2: sum {i in OBS: Media_Tactics[i]='Offsite Display Walmart Network'}&lt;/DIV&gt;&lt;DIV class=""&gt;199 ! Optimized_Budget[i] &amp;lt;= 450000;&lt;/DIV&gt;&lt;DIV class=""&gt;200 con Mycon3: sum {i in OBS: Media_Tactics[i]='Offsite Display Social Media'}&lt;/DIV&gt;&lt;DIV class=""&gt;200 ! Optimized_Budget[i] &amp;lt;= 60000;&lt;/DIV&gt;&lt;DIV class=""&gt;201 con Mycon4: sum {i in OBS: find(Campaign_Line_Item[i],'Pre-roll')&amp;lt;=0}&lt;/DIV&gt;&lt;DIV class=""&gt;201 ! Optimized_Budget[i] &amp;gt;= 100000;&lt;/DIV&gt;&lt;DIV class=""&gt;202&lt;/DIV&gt;&lt;DIV class=""&gt;203 *con Mycon8: sum {i in OBS: find(Media_Tactics[i],'In Market&lt;/DIV&gt;&lt;DIV class=""&gt;203 ! Christmas|47490|7974163')&amp;gt;0 or&lt;/DIV&gt;&lt;DIV class=""&gt;204 find(Media_Tactics[i],'Standard Audience|In Market&lt;/DIV&gt;&lt;DIV class=""&gt;204 ! Christmas|47490|7974163')&amp;gt;0 or&lt;/DIV&gt;&lt;DIV class=""&gt;205 find(Media_Tactics[i],'Audience|Heavy Spenders Home Decor|47490|8003807')&amp;gt;0&lt;/DIV&gt;&lt;DIV class=""&gt;205 ! or&lt;/DIV&gt;&lt;DIV class=""&gt;206 find(Media_Tactics[i],'Audience|Holiday Decor|47490|8005360')&amp;gt;0 or&lt;/DIV&gt;&lt;DIV class=""&gt;207 find(Media_Tactics[i],'Audience|Ornaments|47490|7974160')&amp;gt;0 or&lt;/DIV&gt;&lt;DIV class=""&gt;208 find(Media_Tactics[i],'Audience|Nov&amp;amp;DecShoppers|47490|7974178')&amp;gt;0 or&lt;/DIV&gt;&lt;DIV class=""&gt;209 find(Media_Tactics[i],'Targeting|Holiday Decor|CY23|47490|7974064')&amp;gt;0}&lt;/DIV&gt;&lt;DIV class=""&gt;209 ! Optimized_Budget[i] &amp;lt;= 140000;&lt;/DIV&gt;&lt;PRE class=""&gt;&amp;nbsp;&lt;/PRE&gt;</description>
      <pubDate>Fri, 01 Sep 2023 19:43:58 GMT</pubDate>
      <guid>https://communities.sas.com/t5/Mathematical-Optimization/PROC-OPTMODEL-problem-to-be-infeasible/m-p/892376#M4032</guid>
      <dc:creator>Kaushansky</dc:creator>
      <dc:date>2023-09-01T19:43:58Z</dc:date>
    </item>
    <item>
      <title>Re: PROC OPTMODEL problem to be infeasible</title>
      <link>https://communities.sas.com/t5/Mathematical-Optimization/PROC-OPTMODEL-problem-to-be-infeasible/m-p/892380#M4033</link>
      <description>&lt;P&gt;You have parentheses where you should instead use curly braces.&amp;nbsp; Here is correct syntax:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;con Mycon9: sum {i in OBS: Campaign_Line_Item[i] in
{'Walmart DSP|Display|Cross Device|Standard Audience|In Market Christmas|47490|7974163'
,'Walmart DSP|Display|Cross Device|Custom Audience|Heavy Spenders Home Decor|47490|8003807'
,'Walmart DSP|Display|Cross Device|Propensity Audience|Holiday Decor|47490|8005360'
,'Walmart DSP|Display|Cross Device|Propensity Audience|Ornaments|47490|7974160'
,'Walmart DSP|Display|Cross Device|Custom Audience|Nov&amp;amp;DecShoppers|47490|7974178'
,'Walmart|Display|Cross Device|Contextual Targeting|Holiday Decor|CY23|47490|7974064'}} Optimized_Budget[i] &amp;lt;= 140000;
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;I recommend instead defining the set separately to make the code easier for human consumption:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;set CAMPAIGNS = {'Walmart DSP|Display|Cross Device|Standard Audience|In Market Christmas|47490|7974163'
,'Walmart DSP|Display|Cross Device|Custom Audience|Heavy Spenders Home Decor|47490|8003807'
,'Walmart DSP|Display|Cross Device|Propensity Audience|Holiday Decor|47490|8005360'
,'Walmart DSP|Display|Cross Device|Propensity Audience|Ornaments|47490|7974160'
,'Walmart DSP|Display|Cross Device|Custom Audience|Nov&amp;amp;DecShoppers|47490|7974178'
,'Walmart|Display|Cross Device|Contextual Targeting|Holiday Decor|CY23|47490|7974064'};

con Mycon9: sum {i in OBS: Campaign_Line_Item[i] in CAMPAIGNS} Optimized_Budget[i] &amp;lt;= 140000;
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 01 Sep 2023 20:16:39 GMT</pubDate>
      <guid>https://communities.sas.com/t5/Mathematical-Optimization/PROC-OPTMODEL-problem-to-be-infeasible/m-p/892380#M4033</guid>
      <dc:creator>RobPratt</dc:creator>
      <dc:date>2023-09-01T20:16:39Z</dc:date>
    </item>
  </channel>
</rss>

