<?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: distance in weber multisource in Mathematical Optimization, Discrete-Event Simulation, and OR</title>
    <link>https://communities.sas.com/t5/Mathematical-Optimization/distance-in-weber-multisource/m-p/636281#M3094</link>
    <description>&lt;P&gt;Please let me know if my distance calculation is not correct.&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Tue, 31 Mar 2020 16:17:30 GMT</pubDate>
    <dc:creator>Santha</dc:creator>
    <dc:date>2020-03-31T16:17:30Z</dc:date>
    <item>
      <title>distance in weber multisource</title>
      <link>https://communities.sas.com/t5/Mathematical-Optimization/distance-in-weber-multisource/m-p/636087#M3091</link>
      <description>&lt;P&gt;Rob:&lt;/P&gt;&lt;P&gt;here is the code that you had. i am having 2 questions (a) in the create data step, i was trying various options to print the distance between the customer and its assigned facility. One of the example, is fro Miami to Newark, where the distance should have been 1,268 (miles) but it gave me 3,493. I used Distance[i,j] to come up with this number. I also tried using GEODIST to calculate the distance between the final X and customers but it did not work either. (b) Is there a way to specify to the model to pick a facility that is no more than 500 miles&amp;nbsp; or any prefixed number. I was thinking to have this constraint like this in NLP :- con radius{i in CUSTOMERS, j in FACILITIES}: Distance[i,j] &amp;lt;= 500;&lt;/P&gt;&lt;P&gt;Will that be ok. I ran the model but it gave me same result as without the constraint "radius"&lt;/P&gt;&lt;PRE class="language-sas"&gt;&lt;CODE&gt;%let m = 3;
proc optmodel;
   set DIMS = 1..2;
   set CUSTOMERS;
   set FACILITIES = 1..&amp;amp;m;
   num a {CUSTOMERS, DIMS};
   num demand {CUSTOMERS};
   read data cdata into CUSTOMERS=[_N_] {d in DIMS} &amp;lt;a[_N_,d]=col('a'||d)&amp;gt; demand;

   num Xlb {d in DIMS} = min {i in CUSTOMERS} a[i,d];
   num Xub {d in DIMS} = max {i in CUSTOMERS} a[i,d];
   var X {FACILITIES, d in DIMS} &amp;gt;= Xlb[d] &amp;lt;= Xub[d];
   var W {CUSTOMERS, FACILITIES} &amp;gt;= 0;
   impvar Distance {i in CUSTOMERS, j in FACILITIES} = 
      sqrt(sum {d in DIMS}(a[i,d]-X[j,d])^2);
   min Z = sum {i in CUSTOMERS, j in FACILITIES} W[i,j]*Distance[i,j];
   con DemandCon {i in CUSTOMERS}:
      sum {j in FACILITIES} W[i,j] = demand[i];

   solve with nlp / ms;
   print X;
   put _OBJ_=;

   /* post-processing: assign each customer to closest facility */
   set CUSTOMERS_j {FACILITIES} init {};
   num minDistance, argminDistance;
   for {i in CUSTOMERS} do;
      minDistance = constant('BIG');
      argminDistance = .;
      for {j in FACILITIES} do;
         if minDistance &amp;gt; Distance[i,j] then do;
            minDistance = Distance[i,j];
            argminDistance = j;
         end;
      end;
      for {j in FACILITIES} W[i,j] = 0;
      W[i,argminDistance] = demand[i];
      CUSTOMERS_j[argminDistance] = CUSTOMERS_j[argminDistance] union {i};
   end;
   put _OBJ_=;

   /* post-processing: solve each facility separately */
   min SingleFacilityObjective {j in FACILITIES} = 
      sum {i in CUSTOMERS_j[j]} demand[i]*Distance[i,j];
   problem SingleFacilityProblem {j in FACILITIES} include
      {d in DIMS} X[j,d]
      SingleFacilityObjective[j];
   for {j in FACILITIES} do;
      put j=;
      use problem SingleFacilityProblem[j];
      solve;
   end;
   put (sum {j in FACILITIES} SingleFacilityObjective[j])=;
   print X;

   create data Xdata from [j]=FACILITIES {d in DIMS} &amp;lt;col('X'||d)=X[j,d].sol&amp;gt;;
   create data assignments from [j i]={j in FACILITIES, i in CUSTOMERS_j[j]} W[i,j]
      x1=a[i,1] y1=a[i,2] x2=X[j,1] y2=X[j,2];
quit;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;i&amp;nbsp;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 31 Mar 2020 05:44:47 GMT</pubDate>
      <guid>https://communities.sas.com/t5/Mathematical-Optimization/distance-in-weber-multisource/m-p/636087#M3091</guid>
      <dc:creator>Santha</dc:creator>
      <dc:date>2020-03-31T05:44:47Z</dc:date>
    </item>
    <item>
      <title>Re: distance in weber multisource</title>
      <link>https://communities.sas.com/t5/Mathematical-Optimization/distance-in-weber-multisource/m-p/636277#M3092</link>
      <description>&lt;P&gt;Please provide the code you used, especially the declaration of Distance and the CREATE DATA statement.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The radius constraint you suggested looks correct but won't yield the results you want if the Distance calculation is wrong.&amp;nbsp; A more efficient approach is to use &lt;A href="https://go.documentation.sas.com/?docsetId=ormpug&amp;amp;docsetTarget=ormpug_optmodel_examples07.htm&amp;amp;docsetVersion=15.1&amp;amp;locale=en" target="_self"&gt;sparse modeling&lt;/A&gt;.&lt;/P&gt;</description>
      <pubDate>Tue, 31 Mar 2020 16:12:26 GMT</pubDate>
      <guid>https://communities.sas.com/t5/Mathematical-Optimization/distance-in-weber-multisource/m-p/636277#M3092</guid>
      <dc:creator>RobPratt</dc:creator>
      <dc:date>2020-03-31T16:12:26Z</dc:date>
    </item>
    <item>
      <title>Re: distance in weber multisource</title>
      <link>https://communities.sas.com/t5/Mathematical-Optimization/distance-in-weber-multisource/m-p/636280#M3093</link>
      <description>&lt;P&gt;Rob&lt;/P&gt;&lt;P&gt;Thank you. I will do sparse modeling.&amp;nbsp;&lt;/P&gt;&lt;P&gt;Here is the code:&lt;/P&gt;&lt;P&gt;impvar Distance {i in CUSTOMERS, j in FACILITIES} = sum{d in DIMS} GEODIST(a[i,1],a[i,2],X[j,1],X[j,2]);&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;min Z = sum {i in CUSTOMERS, j in FACILITIES} W[i,j]*Distance[i,j];&lt;BR /&gt;con DemandCon {i in CUSTOMERS}: sum {j in FACILITIES} W[i,j] = demand[i];&lt;BR /&gt;con radius{i in CUSTOMERS, j in FACILITIES}: Distance[i,j] &amp;lt;= 500;&lt;BR /&gt;solve with nlp / ms=(maxtime=10) timetype=real;&lt;BR /&gt;**print X;&lt;BR /&gt;put _OBJ_=;&lt;/P&gt;&lt;P&gt;/* post-processing: assign each customer to closest facility */&lt;BR /&gt;set CUSTOMERS_j {FACILITIES} init {};&lt;BR /&gt;num minDistance, argminDistance;&lt;BR /&gt;for {i in CUSTOMERS} do;&lt;BR /&gt;minDistance = constant('BIG');&lt;BR /&gt;argminDistance = .;&lt;BR /&gt;for {j in FACILITIES} do;&lt;BR /&gt;if minDistance &amp;gt; Distance[i,j] then do;&lt;BR /&gt;minDistance = Distance[i,j];&lt;BR /&gt;argminDistance = j;&lt;BR /&gt;end;&lt;BR /&gt;end;&lt;BR /&gt;for {j in FACILITIES} W[i,j] = 0;&lt;BR /&gt;W[i,argminDistance] = demand[i];&lt;BR /&gt;CUSTOMERS_j[argminDistance] = CUSTOMERS_j[argminDistance] union {i};&lt;BR /&gt;end;&lt;BR /&gt;put _OBJ_=;&lt;/P&gt;&lt;P&gt;/* post-processing: solve each facility separately */&lt;BR /&gt;min SingleFacilityObjective {j in FACILITIES} = sum {i in CUSTOMERS_j[j]} demand[i]*Distance[i,j];&lt;BR /&gt;problem SingleFacilityProblem {j in FACILITIES} include&lt;BR /&gt;{d in DIMS} X[j,d]&lt;BR /&gt;SingleFacilityObjective[j];&lt;BR /&gt;for {j in FACILITIES} do;&lt;BR /&gt;put j=;&lt;BR /&gt;use problem SingleFacilityProblem[j];&lt;BR /&gt;solve;&lt;BR /&gt;end;&lt;BR /&gt;put (sum {j in FACILITIES} SingleFacilityObjective[j])=;&lt;BR /&gt;print X;&lt;/P&gt;&lt;P&gt;create data STDOPT.WinnersCOG from [j]=FACILITIES {d in DIMS} &amp;lt;col('X'||d)=X[j,d].sol&amp;gt;;&lt;BR /&gt;&lt;BR /&gt;create data STDOPT.COG_Output from [j i]={j in FACILITIES, i in CUSTOMERS_j[j]} W[i,j]&lt;BR /&gt;Cust_Lat=a[i,1] Cust_Lon=a[i,2] Fac_Lat=X[j,1] Fac_Lon=X[j,2] Distance[i,j]&lt;BR /&gt;SiteState=SiteState[i] SiteRegion=SiteRegion[i] SiteComment1=SiteComment1[i];&lt;/P&gt;&lt;P&gt;quit;&lt;/P&gt;</description>
      <pubDate>Tue, 31 Mar 2020 16:16:28 GMT</pubDate>
      <guid>https://communities.sas.com/t5/Mathematical-Optimization/distance-in-weber-multisource/m-p/636280#M3093</guid>
      <dc:creator>Santha</dc:creator>
      <dc:date>2020-03-31T16:16:28Z</dc:date>
    </item>
    <item>
      <title>Re: distance in weber multisource</title>
      <link>https://communities.sas.com/t5/Mathematical-Optimization/distance-in-weber-multisource/m-p/636281#M3094</link>
      <description>&lt;P&gt;Please let me know if my distance calculation is not correct.&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 31 Mar 2020 16:17:30 GMT</pubDate>
      <guid>https://communities.sas.com/t5/Mathematical-Optimization/distance-in-weber-multisource/m-p/636281#M3094</guid>
      <dc:creator>Santha</dc:creator>
      <dc:date>2020-03-31T16:17:30Z</dc:date>
    </item>
    <item>
      <title>Re: distance in weber multisource</title>
      <link>https://communities.sas.com/t5/Mathematical-Optimization/distance-in-weber-multisource/m-p/636286#M3095</link>
      <description>&lt;P&gt;You should not sum over DIMS.&amp;nbsp; That was for the Euclidean distance.&amp;nbsp; Also, the default units for &lt;A href="https://go.documentation.sas.com/?docsetId=ds2ref&amp;amp;docsetTarget=p075pupdd9jz7wn13r4x1o4lrd4o.htm&amp;amp;docsetVersion=9.4&amp;amp;locale=en#p0stze3mxswuf9n1ks363sb38lpa" target="_self"&gt;GEODIST&lt;/A&gt; are kilometers.&amp;nbsp; To get miles instead, use the 'M' option.&lt;/P&gt;</description>
      <pubDate>Tue, 31 Mar 2020 16:25:03 GMT</pubDate>
      <guid>https://communities.sas.com/t5/Mathematical-Optimization/distance-in-weber-multisource/m-p/636286#M3095</guid>
      <dc:creator>RobPratt</dc:creator>
      <dc:date>2020-03-31T16:25:03Z</dc:date>
    </item>
    <item>
      <title>Re: distance in weber multisource</title>
      <link>https://communities.sas.com/t5/Mathematical-Optimization/distance-in-weber-multisource/m-p/636294#M3096</link>
      <description>&lt;P&gt;perfect .it worked. thank you rob.&amp;nbsp;&lt;/P&gt;&lt;P&gt;for the constraint radius, let me do that and get back to you next week about how it went. thank u for everything&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 31 Mar 2020 16:43:35 GMT</pubDate>
      <guid>https://communities.sas.com/t5/Mathematical-Optimization/distance-in-weber-multisource/m-p/636294#M3096</guid>
      <dc:creator>Santha</dc:creator>
      <dc:date>2020-03-31T16:43:35Z</dc:date>
    </item>
  </channel>
</rss>

