<?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 Solver in Mathematical Optimization, Discrete-Event Simulation, and OR</title>
    <link>https://communities.sas.com/t5/Mathematical-Optimization/Solver/m-p/697822#M3216</link>
    <description>&lt;P&gt;Hello guys,&lt;/P&gt;&lt;P&gt;My data looks like this :&lt;/P&gt;&lt;DIV class="mceNonEditable lia-copypaste-placeholder"&gt;&amp;nbsp;&lt;/DIV&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="data.PNG" style="width: 323px;"&gt;&lt;img src="https://communities.sas.com/t5/image/serverpage/image-id/51547i034ACDB8EB505FBD/image-size/large?v=v2&amp;amp;px=999" role="button" title="data.PNG" alt="data.PNG" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I have four flights, and for each flight i have a segment. Segment means where i have a passengers. For example, for flight number 2, i have passengers in two segments, NYC-AMS and NYC-LON, i.e some passengers fly from NYC to AMS and others from NYC to LON.&lt;/P&gt;&lt;P&gt;Capacity means maximum number of seats in aircraft. In other words the number of passengers cannot be more than the number of seats.&lt;/P&gt;&lt;P&gt;For each station, AMS and LON, i have a total number of passengers.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;My &lt;SPAN style="font-family: inherit;"&gt;&amp;nbsp;goal is to divide the passengers between each segment. I want that the percent of passengers divided by capacity for each segment(NYC-AMS, NYC-LON) will be identical. For example, let's take NYC-AMS.&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: inherit;"&gt;There are two segments NYC-AMS, 150 passengers, because both segments have the same capacity, each segment will have 75 passengers. 75/166=0.4518 percent. Percent we get is identical for all&amp;nbsp;NYC-AMS. Of course the capacity can be different.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: inherit;"&gt;Another problem, that flight number two has another segment NYC-LON, i.e flight NYC-AMS-LON cannot be more than 166 seats. In other words, when you calculate passengers for segment&amp;nbsp;NYC-AMS, you take into account also other segments. You cannot divide the number of passengers for each segment separately.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;To summarize, this problem has three conditions :&lt;/P&gt;&lt;P&gt;1. for each flight the number of passengers no more than the capacity&lt;/P&gt;&lt;P&gt;2. the total number of passengers for each segment is equal to total number of passengers in station.&lt;/P&gt;&lt;P&gt;3. as i told early, percent of passengers divided by capacity have to be identical for each segment.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I will be very happy for your help to solve this task.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Tue, 10 Nov 2020 08:22:46 GMT</pubDate>
    <dc:creator>AlexeyS</dc:creator>
    <dc:date>2020-11-10T08:22:46Z</dc:date>
    <item>
      <title>Solver</title>
      <link>https://communities.sas.com/t5/Mathematical-Optimization/Solver/m-p/697822#M3216</link>
      <description>&lt;P&gt;Hello guys,&lt;/P&gt;&lt;P&gt;My data looks like this :&lt;/P&gt;&lt;DIV class="mceNonEditable lia-copypaste-placeholder"&gt;&amp;nbsp;&lt;/DIV&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="data.PNG" style="width: 323px;"&gt;&lt;img src="https://communities.sas.com/t5/image/serverpage/image-id/51547i034ACDB8EB505FBD/image-size/large?v=v2&amp;amp;px=999" role="button" title="data.PNG" alt="data.PNG" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I have four flights, and for each flight i have a segment. Segment means where i have a passengers. For example, for flight number 2, i have passengers in two segments, NYC-AMS and NYC-LON, i.e some passengers fly from NYC to AMS and others from NYC to LON.&lt;/P&gt;&lt;P&gt;Capacity means maximum number of seats in aircraft. In other words the number of passengers cannot be more than the number of seats.&lt;/P&gt;&lt;P&gt;For each station, AMS and LON, i have a total number of passengers.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;My &lt;SPAN style="font-family: inherit;"&gt;&amp;nbsp;goal is to divide the passengers between each segment. I want that the percent of passengers divided by capacity for each segment(NYC-AMS, NYC-LON) will be identical. For example, let's take NYC-AMS.&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: inherit;"&gt;There are two segments NYC-AMS, 150 passengers, because both segments have the same capacity, each segment will have 75 passengers. 75/166=0.4518 percent. Percent we get is identical for all&amp;nbsp;NYC-AMS. Of course the capacity can be different.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: inherit;"&gt;Another problem, that flight number two has another segment NYC-LON, i.e flight NYC-AMS-LON cannot be more than 166 seats. In other words, when you calculate passengers for segment&amp;nbsp;NYC-AMS, you take into account also other segments. You cannot divide the number of passengers for each segment separately.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;To summarize, this problem has three conditions :&lt;/P&gt;&lt;P&gt;1. for each flight the number of passengers no more than the capacity&lt;/P&gt;&lt;P&gt;2. the total number of passengers for each segment is equal to total number of passengers in station.&lt;/P&gt;&lt;P&gt;3. as i told early, percent of passengers divided by capacity have to be identical for each segment.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I will be very happy for your help to solve this task.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 10 Nov 2020 08:22:46 GMT</pubDate>
      <guid>https://communities.sas.com/t5/Mathematical-Optimization/Solver/m-p/697822#M3216</guid>
      <dc:creator>AlexeyS</dc:creator>
      <dc:date>2020-11-10T08:22:46Z</dc:date>
    </item>
    <item>
      <title>Re: Solver</title>
      <link>https://communities.sas.com/t5/Mathematical-Optimization/Solver/m-p/697910#M3217</link>
      <description>&lt;P&gt;You cannot get exactly identical, but here is a way to minimize the error:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data stationData;
   input station $ demand;
   datalines;
AMS 150
LON 220
;

data flightSegmentData;
   input flight rotation $11. segment $ capacity;
   datalines;
1 NYC-AMS     NYC-AMS 166
2 NYC-AMS-LON NYC-AMS 166
2 NYC-AMS-LON NYC-LON 166
3 NYC-LON     NYC-LON 175
4 NYC-LON     NYC-LON 175
;

proc optmodel;
   set &amp;lt;str&amp;gt; STATIONS;
   num demand {STATIONS};
   read data stationData into STATIONS=[station] demand;

   set &amp;lt;num,str&amp;gt; FLIGHTS_SEGMENTS;
   num capacity {FLIGHTS_SEGMENTS};
   read data flightSegmentData into FLIGHTS_SEGMENTS=[flight segment] capacity;

   set SEGMENTS = setof {&amp;lt;f,s&amp;gt; in FLIGHTS_SEGMENTS} s;

   var NumPassengers {&amp;lt;f,s&amp;gt; in FLIGHTS_SEGMENTS} &amp;gt;= 0 &amp;lt;= capacity[f,s] integer;

   var Ratio {SEGMENTS} &amp;gt;= 0;

   var Surplus {FLIGHTS_SEGMENTS} &amp;gt;= 0;
   var Slack {FLIGHTS_SEGMENTS} &amp;gt;= 0;

   min Error = sum {&amp;lt;f,s&amp;gt; in FLIGHTS_SEGMENTS} (Surplus[f,s] + Slack[f,s]);

   con SatisfyDemand {station in STATIONS}:
      sum {&amp;lt;f,s&amp;gt; in FLIGHTS_SEGMENTS: scan(s,2,'-') = station} NumPassengers[f,s] = demand[station];

   con EqualRatio {&amp;lt;f,s&amp;gt; in FLIGHTS_SEGMENTS}:
      NumPassengers[f,s] - capacity[f,s] * Ratio[s] = Surplus[f,s] - Slack[f,s];

   solve;
   print Ratio NumPassengers Surplus Slack;
quit;&lt;/CODE&gt;&lt;/PRE&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;Error&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;1&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;1.421085E-14&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;1&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;59&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.02&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;BR /&gt;&lt;A name="IDX38" target="_blank"&gt;&lt;/A&gt;
&lt;DIV&gt;
&lt;DIV align="center"&gt;
&lt;TABLE class="table" summary="Procedure Optmodel: PrintTable" 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;/COLGROUP&gt;
&lt;THEAD&gt;
&lt;TR&gt;
&lt;TH class="l b header" scope="col"&gt;[1]&lt;/TH&gt;
&lt;TH class="r b header" scope="col"&gt;Ratio&lt;/TH&gt;
&lt;/TR&gt;
&lt;/THEAD&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TH class="l rowheader" scope="row"&gt;NYC-AMS&lt;/TH&gt;
&lt;TD class="r data"&gt;0.45181&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TH class="l rowheader" scope="row"&gt;NYC-LON&lt;/TH&gt;
&lt;TD class="r data"&gt;0.42771&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;BR /&gt;&lt;A name="IDX39" target="_blank"&gt;&lt;/A&gt;
&lt;DIV&gt;
&lt;DIV align="center"&gt;
&lt;TABLE class="table" summary="Procedure Optmodel: PrintTable" frame="box" rules="all" cellspacing="0" cellpadding="5"&gt;&lt;COLGROUP&gt; &lt;COL /&gt; &lt;COL /&gt;&lt;/COLGROUP&gt; &lt;COLGROUP&gt; &lt;COL /&gt; &lt;COL /&gt; &lt;COL /&gt;&lt;/COLGROUP&gt;
&lt;THEAD&gt;
&lt;TR&gt;
&lt;TH class="l b header" scope="col"&gt;[1]&lt;/TH&gt;
&lt;TH class="l b header" scope="col"&gt;[2]&lt;/TH&gt;
&lt;TH class="r b header" scope="col"&gt;NumPassengers&lt;/TH&gt;
&lt;TH class="r b header" scope="col"&gt;Surplus&lt;/TH&gt;
&lt;TH class="r b header" scope="col"&gt;Slack&lt;/TH&gt;
&lt;/TR&gt;
&lt;/THEAD&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TH class="l rowheader" scope="row"&gt;1&lt;/TH&gt;
&lt;TH class="l rowheader" scope="row"&gt;NYC-AMS&lt;/TH&gt;
&lt;TD class="r data"&gt;75&lt;/TD&gt;
&lt;TD class="r data"&gt;0.0000&lt;/TD&gt;
&lt;TD class="r data"&gt;0.0000&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TH class="l rowheader" scope="row"&gt;2&lt;/TH&gt;
&lt;TH class="l rowheader" scope="row"&gt;NYC-AMS&lt;/TH&gt;
&lt;TD class="r data"&gt;75&lt;/TD&gt;
&lt;TD class="r data"&gt;0.0000&lt;/TD&gt;
&lt;TD class="r data"&gt;0.0000&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TH class="l rowheader" scope="row"&gt;2&lt;/TH&gt;
&lt;TH class="l rowheader" scope="row"&gt;NYC-LON&lt;/TH&gt;
&lt;TD class="r data"&gt;71&lt;/TD&gt;
&lt;TD class="r data"&gt;-0.0000&lt;/TD&gt;
&lt;TD class="r data"&gt;0.0000&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TH class="l rowheader" scope="row"&gt;3&lt;/TH&gt;
&lt;TH class="l rowheader" scope="row"&gt;NYC-LON&lt;/TH&gt;
&lt;TD class="r data"&gt;75&lt;/TD&gt;
&lt;TD class="r data"&gt;0.1506&lt;/TD&gt;
&lt;TD class="r data"&gt;0.0000&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TH class="l rowheader" scope="row"&gt;4&lt;/TH&gt;
&lt;TH class="l rowheader" scope="row"&gt;NYC-LON&lt;/TH&gt;
&lt;TD class="r data"&gt;74&lt;/TD&gt;
&lt;TD class="r data"&gt;0.0000&lt;/TD&gt;
&lt;TD class="r data"&gt;0.8494&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;</description>
      <pubDate>Tue, 10 Nov 2020 15:52:33 GMT</pubDate>
      <guid>https://communities.sas.com/t5/Mathematical-Optimization/Solver/m-p/697910#M3217</guid>
      <dc:creator>RobPratt</dc:creator>
      <dc:date>2020-11-10T15:52:33Z</dc:date>
    </item>
  </channel>
</rss>

