<?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: AssetMix_Continued in Mathematical Optimization, Discrete-Event Simulation, and OR</title>
    <link>https://communities.sas.com/t5/Mathematical-Optimization/AssetMix-Continued/m-p/820854#M3752</link>
    <description>&lt;P&gt;Hi Rob&lt;/P&gt;&lt;P&gt;I have attached the dataset herewith. This has just only 1 ISN (Shipment) that I was experimenting.&amp;nbsp; The SAS code is same. No change.&lt;/P&gt;&lt;P&gt;The BOXrates and BOXspecs are also there in the file. The 30 Volume, if we can ship 1x20F (29 Volume in this 20F BOX) for a cost of $880 and the remaining 1 x LCL for a cost of $1X31=$31 the total would be $880+$31=$911. The model says $930 with everything shipped as LCL. What changes should we make to get the model to chose the lowest cost option?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Below is my log:&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=""&gt;WARNING: The Decomposition algorithm was not run because the automated method was unable to find block-angular form.
NOTE: The Branch and Cut algorithm is used.
          Node   Active   Sols    BestInteger      BestBound      Gap    Time
             0        1      1    930.0000000    910.3448276    2.16%       0
NOTE: Optimal.
NOTE: Objective = 930.&lt;/CODE&gt;&lt;/PRE&gt;</description>
    <pubDate>Wed, 29 Jun 2022 04:28:37 GMT</pubDate>
    <dc:creator>Santha</dc:creator>
    <dc:date>2022-06-29T04:28:37Z</dc:date>
    <item>
      <title>AssetMix_Continued</title>
      <link>https://communities.sas.com/t5/Mathematical-Optimization/AssetMix-Continued/m-p/820643#M3747</link>
      <description>&lt;P&gt;Hi Rob&lt;/P&gt;&lt;P&gt;This is continuation of the problem that you helped to solve. I am doing some tweaks. I have attached my dataset here. I am specifically looking for ISN='SHA_SEA_10' that has a volume of 30 and Weight of 100. All Box types are available for this lane (SHA-SEA). The model gives the answer as all LCL with a cost of $930 ($31 x 30 Volume) . But there is another solution that is cheaper than that:&lt;/P&gt;&lt;P&gt;Load the 20 F with it maximum, that is 29 Vol. The remaining 1 CBM in LCL. This way we get (1x880) + (1X31)=$911 that is cheaper that what model says. But the way I set up model does not get to it because of reasons that I can't figure out. As a side note I get this warning message :&amp;nbsp;&lt;SPAN&gt;WARNING: The Decomposition algorithm was not run because the automated method was unable to find block-angular form.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;Here is my code below.&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=""&gt;proc optmodel;

set &amp;lt;str&amp;gt; ORG;
read data CASUSER.Unique_ORG into ORG = [ORG];

set &amp;lt;str&amp;gt; DES; 
read data CASUSER.Unique_DES into DES = [DES];

set &amp;lt;str&amp;gt; BOX; 
read data CASUSER.Unique_BOX into BOX = [BOX];

/*Read ISN Wt and Volume for a given ISN* - START */
set &amp;lt;str&amp;gt; ISN;
str Org_ISN {ISN};
str Des_ISN {ISN};
num Vol_ISN {ISN} init 0;
num Wt_ISN {ISN} init 0;
read data CASUSER.InputData_AssetMix into ISN=[ISN] Org_ISN=ORG Des_ISN=DES Vol_ISN=Volume Wt_ISN=Weight;
/*Read ISN Wt and Volume for a given ISN* - END*/

/*Read Wt and Volume Capacity for a given ORG, DES, BOX - START */
num Volume_Capacity {ORG,DES,BOX} init 0;  num Volume_Min {ORG,DES,BOX} init 0;
num Wt_Capacity {ORG,DES,BOX} init 0; 
read data CASUSER.BOXSPECS into [ORG DES BOX] 
Volume_Capacity=Volume_Capacity
Wt_Capacity=Weight_Capacity
Volume_Min=Volume_Min;
/*Read Wt and Volume Capacity for a given ORG, DES, BOX - END */

/* A Binary variable that is 0 or 1 for a given asset for a given lane, 0 indicated not available, 1- available */
num Is_BoxAvalable_for_a_lane {ORG,DES,Box};
read data CASUSER.BOXSpecs into [ORG Des Box] Is_BoxAvalable_for_a_lane = BoxAvailability;


/* Decision Variable - START */
var BoxesNeeded {ISN,BOX}&amp;gt;=0 integer;
/* Decision Variable - END */


/*Define Rates and Implicit Variables - START */
set &amp;lt;str,str,str&amp;gt; PerBox_Based_Rate_NoZeroes;
num PerBox_Based_Rate {PerBox_Based_Rate_NoZeroes}; 
read data CASUSER.BOXRATE
(where=(RateBasis="PerBox" and Ratetype='Linehaul' and Rate&amp;gt;0)) 
into PerBox_Based_Rate_NoZeroes=[ORG DES BOX] PerBox_Based_Rate=Rate;
impvar PerBox_Based_Costs = sum {i in ISN, b in BOX: &amp;lt;Org_ISN[i],Des_ISN[i],b&amp;gt; in PerBox_Based_Rate_NoZeroes}
      PerBox_Based_Rate[Org_ISN[i],Des_ISN[i],b] * BoxesNeeded[i,b];

set &amp;lt;str,str,str&amp;gt; PerVol_Based_Rate_NoZeroes;
num PerVol_Based_Rate {PerVol_Based_Rate_NoZeroes}; 
read data CASUSER.BOXRATE
(where=(RateBasis="PerVolUOM" and Ratetype='Linehaul' and Rate&amp;gt;0)) 
into PerVol_Based_Rate_NoZeroes=[ORG DES BOX] PerVol_Based_Rate=Rate;
impvar PerVol_Based_Costs = sum {i in ISN, b in BOX: &amp;lt;Org_ISN[i],Des_ISN[i],b&amp;gt; in PerVol_Based_Rate_NoZeroes}
      PerVol_Based_Rate[Org_ISN[i],Des_ISN[i],b] * Vol_ISN[i]* BoxesNeeded[i,b];

/*Define Implicit Variables - END */
print PerBox_Based_Rate;

Min TotalCost = PerBox_Based_Costs + PerVol_Based_Costs;

/* Constraints - START */
   for {i in ISN, b in BOX: Is_BoxAvalable_for_a_lane[Org_ISN[i],Des_ISN[i],b] = 0}
      fix BoxesNeeded[i,b] = 0;

   con Vol_Constraint {i in ISN}:
      sum {b in BOX} Volume_Capacity[Org_ISN[i],Des_ISN[i],b] * BoxesNeeded[i,b] &amp;gt;= Vol_ISN[i];

   con Wt_Constraint {i in ISN}:
      sum {b in BOX} Wt_Capacity[Org_ISN[i],Des_ISN[i],b] * BoxesNeeded[i,b] &amp;gt;= Wt_ISN[i];

/* Constraints - END */

solve with milp / decomp=(method=concomp);
  print BoxesNeeded;
expand;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Tue, 28 Jun 2022 06:04:35 GMT</pubDate>
      <guid>https://communities.sas.com/t5/Mathematical-Optimization/AssetMix-Continued/m-p/820643#M3747</guid>
      <dc:creator>Santha</dc:creator>
      <dc:date>2022-06-28T06:04:35Z</dc:date>
    </item>
    <item>
      <title>Re: AssetMix_Continued</title>
      <link>https://communities.sas.com/t5/Mathematical-Optimization/AssetMix-Continued/m-p/820644#M3748</link>
      <description>&lt;P&gt;The link to the original probem is &lt;A href="https://communities.sas.com/t5/Mathematical-Optimization/asset-mix/m-p/817621#M3727" target="_self"&gt;here&lt;/A&gt;&lt;/P&gt;</description>
      <pubDate>Tue, 28 Jun 2022 06:06:02 GMT</pubDate>
      <guid>https://communities.sas.com/t5/Mathematical-Optimization/AssetMix-Continued/m-p/820644#M3748</guid>
      <dc:creator>Santha</dc:creator>
      <dc:date>2022-06-28T06:06:02Z</dc:date>
    </item>
    <item>
      <title>Re: AssetMix_Continued</title>
      <link>https://communities.sas.com/t5/Mathematical-Optimization/AssetMix-Continued/m-p/820648#M3749</link>
      <description>&lt;DIV class=""&gt;Here are some log messages that I thought will be useful.&amp;nbsp;&lt;/DIV&gt;&lt;DIV class=""&gt;WARNING: The Decomposition algorithm was not run because the automated method was unable to find block-angular form.&lt;/DIV&gt;&lt;DIV class=""&gt;NOTE: The Branch and Cut algorithm is used.&lt;/DIV&gt;&lt;DIV class=""&gt;Node Active Sols&amp;nbsp; &amp;nbsp; &amp;nbsp; BestInteger&amp;nbsp; &amp;nbsp; &amp;nbsp;BestBound&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Gap&amp;nbsp; &amp;nbsp; &amp;nbsp;Time&lt;/DIV&gt;&lt;DIV class=""&gt;0&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 1&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;1&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 930.0000000&amp;nbsp; &amp;nbsp;910.3448276&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;2.16%&amp;nbsp; &amp;nbsp; 0&lt;/DIV&gt;&lt;DIV class=""&gt;NOTE: Optimal.&lt;/DIV&gt;&lt;DIV class=""&gt;NOTE: Objective = 930.&lt;/DIV&gt;&lt;PRE class=""&gt;&amp;nbsp;&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 28 Jun 2022 06:38:42 GMT</pubDate>
      <guid>https://communities.sas.com/t5/Mathematical-Optimization/AssetMix-Continued/m-p/820648#M3749</guid>
      <dc:creator>Santha</dc:creator>
      <dc:date>2022-06-28T06:38:42Z</dc:date>
    </item>
    <item>
      <title>Re: AssetMix_Continued</title>
      <link>https://communities.sas.com/t5/Mathematical-Optimization/AssetMix-Continued/m-p/820692#M3750</link>
      <description>&lt;P&gt;Please double-check your data and code.&amp;nbsp; I get a different log:&lt;/P&gt;
&lt;PRE&gt;NOTE: Problem generation will use 4 threads.
NOTE: The problem has 225 variables (0 free, 12 fixed).
NOTE: The problem uses 2 implicit variables.
NOTE: The problem has 12 binary and 213 integer variables.
NOTE: The problem has 50 linear constraints (0 LE, 0 EQ, 50 GE, 0 range).
NOTE: The problem has 250 linear constraint coefficients.
NOTE: The problem has 0 nonlinear constraints (0 LE, 0 EQ, 0 GE, 0 range).
NOTE: The initial MILP heuristics are applied.
NOTE: The MILP presolver value AUTOMATIC is applied.
NOTE: The MILP presolver removed 140 variables and 22 constraints.
NOTE: The MILP presolver removed 148 constraint coefficients.
NOTE: The MILP presolver modified 4 constraint coefficients.
NOTE: The presolved problem has 85 variables, 28 constraints, and 102 constraint coefficients.
NOTE: The MILP solver is called.
NOTE: The Decomposition algorithm is used.
NOTE: The Decomposition algorithm is executing in single-machine mode.
NOTE: The DECOMP method value CONCOMP is applied.
NOTE: The decomposition identification used 0.00 (cpu: 0.00) seconds.
NOTE: The problem has a decomposable structure with 24 blocks. The largest block covers 7.143% of
      the constraints in the problem.
NOTE: The decomposition subproblems cover 85 (100%) variables and 28 (100%) constraints.
NOTE: The deterministic parallel mode is enabled.
NOTE: The Decomposition algorithm is using up to 4 threads.
      Iter         Best       Master         Best       LP       IP  CPU Real
                  Bound    Objective      Integer      Gap      Gap Time Time
         1   51842.0000   51842.0000   51842.0000    0.00%    0.00%    0    0
         Node  Active   Sols         Best         Best      Gap    CPU   Real
                                  Integer        Bound            Time   Time
            0       1      5   51842.0000   51842.0000    0.00%      0      0
NOTE: The Decomposition algorithm used 4 threads.
NOTE: The Decomposition algorithm time is 0.26 seconds.
NOTE: Optimal.
NOTE: Objective = 51842.
&lt;/PRE&gt;</description>
      <pubDate>Tue, 28 Jun 2022 14:02:28 GMT</pubDate>
      <guid>https://communities.sas.com/t5/Mathematical-Optimization/AssetMix-Continued/m-p/820692#M3750</guid>
      <dc:creator>RobPratt</dc:creator>
      <dc:date>2022-06-28T14:02:28Z</dc:date>
    </item>
    <item>
      <title>Re: AssetMix_Continued</title>
      <link>https://communities.sas.com/t5/Mathematical-Optimization/AssetMix-Continued/m-p/820702#M3751</link>
      <description>&lt;P&gt;oops. my bad. let me check the data and the code . get back to you on this thanks a lot&lt;/P&gt;</description>
      <pubDate>Tue, 28 Jun 2022 14:56:58 GMT</pubDate>
      <guid>https://communities.sas.com/t5/Mathematical-Optimization/AssetMix-Continued/m-p/820702#M3751</guid>
      <dc:creator>Santha</dc:creator>
      <dc:date>2022-06-28T14:56:58Z</dc:date>
    </item>
    <item>
      <title>Re: AssetMix_Continued</title>
      <link>https://communities.sas.com/t5/Mathematical-Optimization/AssetMix-Continued/m-p/820854#M3752</link>
      <description>&lt;P&gt;Hi Rob&lt;/P&gt;&lt;P&gt;I have attached the dataset herewith. This has just only 1 ISN (Shipment) that I was experimenting.&amp;nbsp; The SAS code is same. No change.&lt;/P&gt;&lt;P&gt;The BOXrates and BOXspecs are also there in the file. The 30 Volume, if we can ship 1x20F (29 Volume in this 20F BOX) for a cost of $880 and the remaining 1 x LCL for a cost of $1X31=$31 the total would be $880+$31=$911. The model says $930 with everything shipped as LCL. What changes should we make to get the model to chose the lowest cost option?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Below is my log:&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=""&gt;WARNING: The Decomposition algorithm was not run because the automated method was unable to find block-angular form.
NOTE: The Branch and Cut algorithm is used.
          Node   Active   Sols    BestInteger      BestBound      Gap    Time
             0        1      1    930.0000000    910.3448276    2.16%       0
NOTE: Optimal.
NOTE: Objective = 930.&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Wed, 29 Jun 2022 04:28:37 GMT</pubDate>
      <guid>https://communities.sas.com/t5/Mathematical-Optimization/AssetMix-Continued/m-p/820854#M3752</guid>
      <dc:creator>Santha</dc:creator>
      <dc:date>2022-06-29T04:28:37Z</dc:date>
    </item>
    <item>
      <title>Re: AssetMix_Continued</title>
      <link>https://communities.sas.com/t5/Mathematical-Optimization/AssetMix-Continued/m-p/820855#M3753</link>
      <description>&lt;P&gt;Here is the code anycase:&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=""&gt;proc optmodel;

set &amp;lt;str&amp;gt; ORG;
read data CASUSER.Unique_ORG into ORG = [ORG];

set &amp;lt;str&amp;gt; DES; 
read data CASUSER.Unique_DES into DES = [DES];

set &amp;lt;str&amp;gt; BOX; 
read data CASUSER.Unique_BOX into BOX = [BOX];

/*Read ISN Wt and Volume for a given ISN* - START */
set &amp;lt;str&amp;gt; ISN;
str Org_ISN {ISN};
str Des_ISN {ISN};
num Vol_ISN {ISN} init 0;
num Wt_ISN {ISN} init 0;
read data CASUSER.InputData_AssetMix into ISN=[ISN] Org_ISN=ORG Des_ISN=DES Vol_ISN=Volume Wt_ISN=Weight;
/*Read ISN Wt and Volume for a given ISN* - END*/

/*Read Wt and Volume Capacity for a given ORG, DES, BOX - START */
num Volume_Capacity {ORG,DES,BOX} init 0;  num Volume_Min {ORG,DES,BOX} init 0;
num Wt_Capacity {ORG,DES,BOX} init 0; 
read data CASUSER.BOXSPECS into [ORG DES BOX] 
Volume_Capacity=Volume_Capacity
Wt_Capacity=Weight_Capacity
Volume_Min=Volume_Min;
/*Read Wt and Volume Capacity for a given ORG, DES, BOX - END */

/* A Binary variable that is 0 or 1 for a given asset for a given lane, 0 indicated not available, 1- available */
num Is_BoxAvalable_for_a_lane {ORG,DES,Box};
read data CASUSER.BOXSpecs into [ORG Des Box] Is_BoxAvalable_for_a_lane = BoxAvailability;


/* Decision Variable - START */
var BoxesNeeded {ISN,BOX}&amp;gt;=0 integer;
/* Decision Variable - END */


/*Define Rates and Implicit Variables - START */
set &amp;lt;str,str,str&amp;gt; PerBox_Based_Rate_NoZeroes;
num PerBox_Based_Rate {PerBox_Based_Rate_NoZeroes}; 
read data CASUSER.BOXRATE
(where=(RateBasis="PerBox" and Ratetype='Linehaul' and Rate&amp;gt;0)) 
into PerBox_Based_Rate_NoZeroes=[ORG DES BOX] PerBox_Based_Rate=Rate;
impvar PerBox_Based_Costs = sum {i in ISN, b in BOX: &amp;lt;Org_ISN[i],Des_ISN[i],b&amp;gt; in PerBox_Based_Rate_NoZeroes}
      PerBox_Based_Rate[Org_ISN[i],Des_ISN[i],b] * BoxesNeeded[i,b];

set &amp;lt;str,str,str&amp;gt; PerVol_Based_Rate_NoZeroes;
num PerVol_Based_Rate {PerVol_Based_Rate_NoZeroes}; 
read data CASUSER.BOXRATE
(where=(RateBasis="PerVolUOM" and Ratetype='Linehaul' and Rate&amp;gt;0)) 
into PerVol_Based_Rate_NoZeroes=[ORG DES BOX] PerVol_Based_Rate=Rate;
impvar PerVol_Based_Costs = sum {i in ISN, b in BOX: &amp;lt;Org_ISN[i],Des_ISN[i],b&amp;gt; in PerVol_Based_Rate_NoZeroes}
      PerVol_Based_Rate[Org_ISN[i],Des_ISN[i],b] * Vol_ISN[i]* BoxesNeeded[i,b];

/*Define Implicit Variables - END */
print PerBox_Based_Rate;

Min TotalCost = PerBox_Based_Costs + PerVol_Based_Costs;

/* Constraints - START */
   for {i in ISN, b in BOX: Is_BoxAvalable_for_a_lane[Org_ISN[i],Des_ISN[i],b] = 0}
      fix BoxesNeeded[i,b] = 0;

   con Vol_Constraint {i in ISN}:
      sum {b in BOX} Volume_Capacity[Org_ISN[i],Des_ISN[i],b] * BoxesNeeded[i,b] &amp;gt;= Vol_ISN[i];

   con Wt_Constraint {i in ISN}:
      sum {b in BOX} Wt_Capacity[Org_ISN[i],Des_ISN[i],b] * BoxesNeeded[i,b] &amp;gt;= Wt_ISN[i];
/* Constraints - END */
solve with milp / decomp=(method=concomp);&lt;BR /&gt;&amp;nbsp;print BoxesNeeded;&lt;BR /&gt;expand;&lt;BR /&gt;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Wed, 29 Jun 2022 04:31:18 GMT</pubDate>
      <guid>https://communities.sas.com/t5/Mathematical-Optimization/AssetMix-Continued/m-p/820855#M3753</guid>
      <dc:creator>Santha</dc:creator>
      <dc:date>2022-06-29T04:31:18Z</dc:date>
    </item>
    <item>
      <title>Re: AssetMix_Continued</title>
      <link>https://communities.sas.com/t5/Mathematical-Optimization/AssetMix-Continued/m-p/820957#M3754</link>
      <description>&lt;P&gt;I recommend two changes.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;1. Change the&amp;nbsp;PerVol_Based_Costs declaration to omit Vol_ISN[i]:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;   impvar PerVol_Based_Costs = sum {i in ISN, b in BOX: &amp;lt;Org_ISN[i],Des_ISN[i],b&amp;gt; in PerVol_Based_Rate_NoZeroes}
/*      PerVol_Based_Rate[Org_ISN[i],Des_ISN[i],b] * Vol_ISN[i] * BoxesNeeded[i,b];*/
      PerVol_Based_Rate[Org_ISN[i],Des_ISN[i],b] * BoxesNeeded[i,b];
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;2. Change Volume_Capacity from 10000 to 1 when Box = LCL in the BoxSpecs table.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;With these changes, each LCL box from SHA to SEA contributes 31 to the objective and 1 unit to the volume constraint, as you can see from the EXPAND output.&amp;nbsp; The resulting optimal solution matches what you expected:&lt;/P&gt;
&lt;DIV class="branch"&gt;
&lt;DIV&gt;
&lt;DIV align="center"&gt;
&lt;TABLE class="table" summary="Procedure Optmodel: Solution Summary" frame="box" rules="all" cellspacing="0" cellpadding="5"&gt;
&lt;THEAD&gt;
&lt;TR&gt;
&lt;TH class="c b header" colspan="2" scope="colgroup"&gt;Solution Summary&lt;/TH&gt;
&lt;/TR&gt;
&lt;/THEAD&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TH class="l rowheader" scope="row"&gt;Solver&lt;/TH&gt;
&lt;TD class="r data"&gt;MILP&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TH class="l rowheader" scope="row"&gt;Algorithm&lt;/TH&gt;
&lt;TD class="r data"&gt;Branch and Cut&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TH class="l rowheader" scope="row"&gt;Objective Function&lt;/TH&gt;
&lt;TD class="r data"&gt;TotalCost&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TH class="l rowheader" scope="row"&gt;Solution Status&lt;/TH&gt;
&lt;TD class="r data"&gt;Optimal&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TH class="l rowheader" scope="row"&gt;Objective Value&lt;/TH&gt;
&lt;TD class="r data"&gt;911&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TH class="l rowheader" scope="row"&gt;&amp;nbsp;&lt;/TH&gt;
&lt;TD class="r data"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TH class="l rowheader" scope="row"&gt;Relative Gap&lt;/TH&gt;
&lt;TD class="r data"&gt;0&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TH class="l rowheader" scope="row"&gt;Absolute Gap&lt;/TH&gt;
&lt;TD class="r data"&gt;0&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TH class="l rowheader" scope="row"&gt;Primal Infeasibility&lt;/TH&gt;
&lt;TD class="r data"&gt;0&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TH class="l rowheader" scope="row"&gt;Bound Infeasibility&lt;/TH&gt;
&lt;TD class="r data"&gt;0&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TH class="l rowheader" scope="row"&gt;Integer Infeasibility&lt;/TH&gt;
&lt;TD class="r data"&gt;0&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TH class="l rowheader" scope="row"&gt;&amp;nbsp;&lt;/TH&gt;
&lt;TD class="r data"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TH class="l rowheader" scope="row"&gt;Best Bound&lt;/TH&gt;
&lt;TD class="r data"&gt;911&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TH class="l rowheader" scope="row"&gt;Nodes&lt;/TH&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TH class="l rowheader" scope="row"&gt;Solutions Found&lt;/TH&gt;
&lt;TD class="r data"&gt;2&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TH class="l rowheader" scope="row"&gt;Iterations&lt;/TH&gt;
&lt;TD class="r data"&gt;5&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TH class="l rowheader" scope="row"&gt;Presolve Time&lt;/TH&gt;
&lt;TD class="r data"&gt;0.00&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TH class="l rowheader" scope="row"&gt;Solution Time&lt;/TH&gt;
&lt;TD class="r data"&gt;0.01&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;BR /&gt;&lt;A name="IDX221" target="_blank"&gt;&lt;/A&gt;
&lt;DIV&gt;
&lt;DIV align="center"&gt;
&lt;TABLE class="table" summary="Procedure Optmodel: BoxesNeeded" frame="box" rules="all" cellspacing="0" cellpadding="5"&gt;&lt;COLGROUP&gt; &lt;COL /&gt;&lt;/COLGROUP&gt; &lt;COLGROUP&gt; &lt;COL /&gt; &lt;COL /&gt; &lt;COL /&gt; &lt;COL /&gt; &lt;COL /&gt; &lt;COL /&gt; &lt;COL /&gt; &lt;COL /&gt; &lt;COL /&gt;&lt;/COLGROUP&gt;
&lt;THEAD&gt;
&lt;TR&gt;
&lt;TH class="c b header" colspan="10" scope="colgroup"&gt;BoxesNeeded&lt;/TH&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TH class="c headerempty" scope="col"&gt;&amp;nbsp;&lt;/TH&gt;
&lt;TH class="r b header" scope="col"&gt;20F&lt;/TH&gt;
&lt;TH class="r b header" scope="col"&gt;40F&lt;/TH&gt;
&lt;TH class="r b header" scope="col"&gt;40H&lt;/TH&gt;
&lt;TH class="r b header" scope="col"&gt;45F&lt;/TH&gt;
&lt;TH class="r b header" scope="col"&gt;Air_DEF_LD&lt;/TH&gt;
&lt;TH class="r b header" scope="col"&gt;Air_DEF_MD&lt;/TH&gt;
&lt;TH class="r b header" scope="col"&gt;Air_STD_LD&lt;/TH&gt;
&lt;TH class="r b header" scope="col"&gt;Air_STD_MD&lt;/TH&gt;
&lt;TH class="r b header" scope="col"&gt;LCL&lt;/TH&gt;
&lt;/TR&gt;
&lt;/THEAD&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TH class="l rowheader" scope="row"&gt;SHA_SEA_10&lt;/TH&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="r data"&gt;0&lt;/TD&gt;
&lt;TD class="r data"&gt;0&lt;/TD&gt;
&lt;TD class="r data"&gt;0&lt;/TD&gt;
&lt;TD class="r data"&gt;0&lt;/TD&gt;
&lt;TD class="r data"&gt;0&lt;/TD&gt;
&lt;TD class="r data"&gt;0&lt;/TD&gt;
&lt;TD class="r data"&gt;0&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;</description>
      <pubDate>Wed, 29 Jun 2022 15:47:05 GMT</pubDate>
      <guid>https://communities.sas.com/t5/Mathematical-Optimization/AssetMix-Continued/m-p/820957#M3754</guid>
      <dc:creator>RobPratt</dc:creator>
      <dc:date>2022-06-29T15:47:05Z</dc:date>
    </item>
    <item>
      <title>Re: AssetMix_Continued</title>
      <link>https://communities.sas.com/t5/Mathematical-Optimization/AssetMix-Continued/m-p/821063#M3755</link>
      <description>&lt;P&gt;Hi Rob&lt;/P&gt;&lt;P&gt;I did the 2 changes that you did. Model seems to work. I tried multiple Volumes and checked my hand calculations with SAS and it does match. Thanks a lot for the suggestions that you mentioned. It worked perfect.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;While at it, I want to see in my outputs the PerBox Cost and Per Vol costs so that I can play it back to the end user. I understand that for the modeling we have omitted Vol_ISN[i] for PerVolbased costs. This helps to get to the right answer directionally. But when i want to play it back , i want the PerVol based costs to include Vol_ISN[i] in my outputs. Here is what I have in my Create data step at the end of the model. Can you help me to get the right syntax.&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=""&gt;create data CASUSER.OptMix_RESULTS (where=(BoxesNeeded &amp;gt; 0.0000001)) from
[ISN=i BOX=b]
Org=ORG_ISN[i]
Des=DES_ISN[i]
ShipmentVolume=Vol_ISN[i]
ShipmentWeight=Wt_ISN[i]
BoxesNeeded
Volume_Capacity[Org_ISN[i],Des_ISN[i],b]
Wt_Capacity[Org_ISN[i],Des_ISN[i],b]
BoxBasedCosts=(PerBox_Based_Rate[Org_ISN[i],Des_ISN[i],b] * sum (BoxesNeeded [i,b]))
VolBasedCosts=(PerVol_Based_Rate[Org_ISN[i],Des_ISN[i],b] * Vol_ISN*BoxesNeeded[i,b]);
;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;The&amp;nbsp;BoxBasedCosts and&amp;nbsp;VolBasedCosts above - I think i did not do it correctly because for BoxBasedCosts, there is no LCL&amp;nbsp; and so how do I specify it inside the create data step to include only those where we have a rate for PerBoxRate, similar to how we declared:&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=""&gt;impvar PerBox_Based_Costs = sum {i in ISN, b in BOX: &amp;lt;Org_ISN[i],Des_ISN[i],b&amp;gt; in PerBox_Based_Rate_NoZeroes}
PerBox_Based_Rate[Org_ISN[i],Des_ISN[i],b] * BoxesNeeded[i,b];&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;The same case for PerVol_Based_Costs as well how to do that correctly in create data step.&amp;nbsp;&lt;/P&gt;&lt;P&gt;Another thing that I would like to see in output table, is in this sample shipment that we used ISN='SHA_SEA_10' with 30 Volume, how much volume was stuffed in 20F container and how much volume was stuffed in LCL. This will be useful when I measure utilization of Boxes later on.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The last two steps that I am going to try to get this model to close is&amp;nbsp;&lt;/P&gt;&lt;P&gt;(a) I am going to add another cost category, that is Wt based cost but the logic is same.&amp;nbsp;&lt;/P&gt;&lt;P&gt;(b) will add Vol and Wt Max Capacities, so that a shipment does not exceed a given box's max limits. Will try these two and let you know if I face problems.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 30 Jun 2022 06:01:18 GMT</pubDate>
      <guid>https://communities.sas.com/t5/Mathematical-Optimization/AssetMix-Continued/m-p/821063#M3755</guid>
      <dc:creator>Santha</dc:creator>
      <dc:date>2022-06-30T06:01:18Z</dc:date>
    </item>
    <item>
      <title>Re: AssetMix_Continued</title>
      <link>https://communities.sas.com/t5/Mathematical-Optimization/AssetMix-Continued/m-p/821196#M3756</link>
      <description>&lt;P&gt;I'm glad it worked for you.&amp;nbsp; Please accept my answer and then open a new question for the CREATE DATA step.&lt;/P&gt;</description>
      <pubDate>Thu, 30 Jun 2022 19:17:35 GMT</pubDate>
      <guid>https://communities.sas.com/t5/Mathematical-Optimization/AssetMix-Continued/m-p/821196#M3756</guid>
      <dc:creator>RobPratt</dc:creator>
      <dc:date>2022-06-30T19:17:35Z</dc:date>
    </item>
    <item>
      <title>Re: AssetMix_Continued</title>
      <link>https://communities.sas.com/t5/Mathematical-Optimization/AssetMix-Continued/m-p/821227#M3758</link>
      <description>&lt;P&gt;Rob thanks a&amp;nbsp; lot. sorry i forgot to reply and do the "Accept Solution". Was too excited to see it work &lt;span class="lia-unicode-emoji" title=":slightly_smiling_face:"&gt;🙂&lt;/span&gt;&lt;/P&gt;&lt;P&gt;have opened a new ticket for create data step. btw, i tried minimum threshold constraints. seems to be working . checking with diff combo of vt and vol. so far so good. thanks always&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 01 Jul 2022 02:28:16 GMT</pubDate>
      <guid>https://communities.sas.com/t5/Mathematical-Optimization/AssetMix-Continued/m-p/821227#M3758</guid>
      <dc:creator>Santha</dc:creator>
      <dc:date>2022-07-01T02:28:16Z</dc:date>
    </item>
    <item>
      <title>Re: AssetMix_Continued</title>
      <link>https://communities.sas.com/t5/Mathematical-Optimization/AssetMix-Continued/m-p/821269#M3761</link>
      <description>&lt;P&gt;Hi&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/276974"&gt;@Santha&lt;/a&gt;: If you actually wanted to accept Rob's answer rather than your own post, this can be corrected easily:&amp;nbsp;Select his post&amp;nbsp;as the solution after clicking&amp;nbsp;"Not the Solution" in the option menu (see icon below) of the current solution.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="show_option_menu.png" style="width: 155px;"&gt;&lt;img src="https://communities.sas.com/t5/image/serverpage/image-id/72889i7E43B655564DD474/image-size/large?v=v2&amp;amp;px=999" role="button" title="show_option_menu.png" alt="show_option_menu.png" /&gt;&lt;/span&gt;&lt;/P&gt;</description>
      <pubDate>Fri, 01 Jul 2022 11:12:41 GMT</pubDate>
      <guid>https://communities.sas.com/t5/Mathematical-Optimization/AssetMix-Continued/m-p/821269#M3761</guid>
      <dc:creator>FreelanceReinh</dc:creator>
      <dc:date>2022-07-01T11:12:41Z</dc:date>
    </item>
  </channel>
</rss>

