Update v0.5 docs

docs
Alinson S. Xavier 5 years ago
parent 9cadabbe81
commit 4dbf20c1fa

@ -59,7 +59,9 @@
<!-- Main title --> <!-- Main title -->
<a class="navbar-brand" href="/.">RELOG</a>
<a class="navbar-brand" href="/.">RELOG</a>
</div> </div>
<!-- Expanded navigation --> <!-- Expanded navigation -->
@ -127,18 +129,22 @@
</div> </div>
<footer class="col-md-12 text-center">
<hr> <footer class="col-md-12 text-center">
<p>
<small>Copyright © 2020, UChicago Argonne, LLC. All Rights Reserved.</small><br>
<hr>
<p>
<small>Copyright © 2020, UChicago Argonne, LLC. All Rights Reserved.</small><br>
<small>Documentation built with <a href="http://www.mkdocs.org/">MkDocs</a>.</small>
</p>
<small>Documentation built with <a href="http://www.mkdocs.org/">MkDocs</a>.</small>
</p>
</footer>
</footer>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> <script src="//ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script src="/js/bootstrap-3.0.3.min.js"></script> <script src="/js/bootstrap-3.0.3.min.js"></script>

@ -1,12 +1,9 @@
body { html {
padding-top: 70px; scroll-padding-top: 70px;
} }
h1[id]:before, h2[id]:before, h3[id]:before, h4[id]:before, h5[id]:before, h6[id]:before { body {
content: ""; padding-top: 70px;
display: block;
margin-top: -75px;
height: 75px;
} }
p > img { p > img {
@ -103,7 +100,8 @@ div.source-links {
.bs-sidebar.affix { .bs-sidebar.affix {
position: fixed; /* Undo the static from mobile first approach */ position: fixed; /* Undo the static from mobile first approach */
top: 80px; top: 80px;
max-height: calc(100% - 90px); max-height: calc(100% - 180px);
overflow-y: auto;
} }
.bs-sidebar.affix-bottom { .bs-sidebar.affix-bottom {
position: absolute; /* Undo the static from mobile first approach */ position: absolute; /* Undo the static from mobile first approach */
@ -228,6 +226,16 @@ div.source-links {
} }
/* End Bootstrap Callouts CSS Source by Chris Pratt */ /* End Bootstrap Callouts CSS Source by Chris Pratt */
/* Headerlinks */
.headerlink {
display: none;
padding-left: .5em;
}
h1:hover .headerlink, h2:hover .headerlink, h3:hover .headerlink, h4:hover .headerlink, h5:hover .headerlink, h6:hover .headerlink {
display: inline-block;
}
/* Admonitions */ /* Admonitions */
.admonition { .admonition {
padding: 20px; padding: 20px;

@ -1 +1 @@
body{padding-top:70px}h1[id]:before,h2[id]:before,h3[id]:before,h4[id]:before,h5[id]:before,h6[id]:before{content:"";display:block;margin-top:-75px;height:75px}p>img{max-width:100%;height:auto}ul.nav li.first-level{font-weight:bold}ul.nav li.third-level{padding-left:12px}div.col-md-3{padding-left:0}div.col-md-9{padding-bottom:100px}div.source-links{float:right}.bs-sidebar.affix{position:static}.bs-sidebar.well{padding:0}.bs-sidenav{margin-top:30px;margin-bottom:30px;padding-top:10px;padding-bottom:10px;border-radius:5px}.bs-sidebar .nav>li>a{display:block;padding:5px 20px;z-index:1}.bs-sidebar .nav>li>a:hover,.bs-sidebar .nav>li>a:focus{text-decoration:none;border-right:1px solid}.bs-sidebar .nav>.active>a,.bs-sidebar .nav>.active:hover>a,.bs-sidebar .nav>.active:focus>a{font-weight:bold;background-color:transparent;border-right:1px solid}.bs-sidebar .nav .nav{display:none;margin-bottom:8px}.bs-sidebar .nav .nav>li>a{padding-top:3px;padding-bottom:3px;padding-left:30px;font-size:90%}@media(min-width:992px){.bs-sidebar .nav>.active>ul{display:block}.bs-sidebar.affix,.bs-sidebar.affix-bottom{width:213px}.bs-sidebar.affix{position:fixed;top:80px;max-height:calc(100% - 90px)}.bs-sidebar.affix-bottom{position:absolute}.bs-sidebar.affix-bottom .bs-sidenav,.bs-sidebar.affix .bs-sidenav{margin-top:0;margin-bottom:0}}@media(min-width:1200px){.bs-sidebar.affix-bottom,.bs-sidebar.affix{width:263px}}.dropdown-submenu{position:relative}.dropdown-submenu>.dropdown-menu{top:0;left:100%;margin-top:0;margin-left:0}.dropdown-submenu:hover>.dropdown-menu{display:block}.dropdown-submenu>a:after{display:block;content:" ";float:right;width:0;height:0;border-color:transparent;border-style:solid;border-width:5px 0 5px 5px;border-left-color:#ccc;margin-top:5px;margin-right:-10px}.dropdown-submenu:hover>a:after{border-left-color:#fff}.dropdown-submenu.pull-left{float:none}.dropdown-submenu.pull-left>.dropdown-menu{left:-100%;margin-left:00px}.bs-callout{padding:20px;margin:20px 0;border:1px solid #eee;border-left-width:5px;border-radius:3px;background-color:#fcfdff}.bs-callout h4{font-style:normal;font-weight:400;margin-top:0;margin-bottom:5px}.bs-callout p:last-child{margin-bottom:0}.bs-callout code{border-radius:3px}.bs-callout+.bs-callout{margin-top:-5px}.bs-callout-default{border-left-color:#fa023c}.bs-callout-default h4{color:#fa023c}.bs-callout-primary{border-left-color:#428bca}.bs-callout-primary h4{color:#428bca}.bs-callout-success{border-left-color:#5cb85c}.bs-callout-success h4{color:#5cb85c}.bs-callout-danger{border-left-color:#d9534f}.bs-callout-danger h4{color:#d9534f}.bs-callout-warning{border-left-color:#f0ad4e}.bs-callout-warning h4{color:#f0ad4e}.bs-callout-info{border-left-color:#5bc0de}.bs-callout-info h4{color:#5bc0de}.admonition{padding:20px;margin:20px 0;border:1px solid #eee;border-left-width:5px;border-radius:3px;background-color:#fcfdff}.admonition p:last-child{margin-bottom:0}.admonition code{border-radius:3px}.admonition+.admonition{margin-top:-5px}.admonition.note{border-left-color:#428bca}.admonition.warning{border-left-color:#f0ad4e}.admonition.danger{border-left-color:#d9534f}.admonition-title{font-size:19px;font-style:normal;font-weight:400;margin-top:0;margin-bottom:5px}.admonition.note>.admonition-title{color:#428bca}.admonition.warning>.admonition-title{color:#f0ad4e}.admonition.danger>.admonition-title{color:#d9534f} html{scroll-padding-top:70px}body{padding-top:70px}p>img{max-width:100%;height:auto}ul.nav li.first-level{font-weight:bold}ul.nav li.third-level{padding-left:12px}div.col-md-3{padding-left:0}div.col-md-9{padding-bottom:100px}div.source-links{float:right}.bs-sidebar.affix{position:static}.bs-sidebar.well{padding:0}.bs-sidenav{margin-top:30px;margin-bottom:30px;padding-top:10px;padding-bottom:10px;border-radius:5px}.bs-sidebar .nav>li>a{display:block;padding:5px 20px;z-index:1}.bs-sidebar .nav>li>a:hover,.bs-sidebar .nav>li>a:focus{text-decoration:none;border-right:1px solid}.bs-sidebar .nav>.active>a,.bs-sidebar .nav>.active:hover>a,.bs-sidebar .nav>.active:focus>a{font-weight:bold;background-color:transparent;border-right:1px solid}.bs-sidebar .nav .nav{display:none;margin-bottom:8px}.bs-sidebar .nav .nav>li>a{padding-top:3px;padding-bottom:3px;padding-left:30px;font-size:90%}@media(min-width:992px){.bs-sidebar .nav>.active>ul{display:block}.bs-sidebar.affix,.bs-sidebar.affix-bottom{width:213px}.bs-sidebar.affix{position:fixed;top:80px;max-height:calc(100% - 180px);overflow-y:auto}.bs-sidebar.affix-bottom{position:absolute}.bs-sidebar.affix-bottom .bs-sidenav,.bs-sidebar.affix .bs-sidenav{margin-top:0;margin-bottom:0}}@media(min-width:1200px){.bs-sidebar.affix-bottom,.bs-sidebar.affix{width:263px}}.dropdown-submenu{position:relative}.dropdown-submenu>.dropdown-menu{top:0;left:100%;margin-top:0;margin-left:0}.dropdown-submenu:hover>.dropdown-menu{display:block}.dropdown-submenu>a:after{display:block;content:" ";float:right;width:0;height:0;border-color:transparent;border-style:solid;border-width:5px 0 5px 5px;border-left-color:#ccc;margin-top:5px;margin-right:-10px}.dropdown-submenu:hover>a:after{border-left-color:#fff}.dropdown-submenu.pull-left{float:none}.dropdown-submenu.pull-left>.dropdown-menu{left:-100%;margin-left:00px}.bs-callout{padding:20px;margin:20px 0;border:1px solid #eee;border-left-width:5px;border-radius:3px;background-color:#fcfdff}.bs-callout h4{font-style:normal;font-weight:400;margin-top:0;margin-bottom:5px}.bs-callout p:last-child{margin-bottom:0}.bs-callout code{border-radius:3px}.bs-callout+.bs-callout{margin-top:-5px}.bs-callout-default{border-left-color:#fa023c}.bs-callout-default h4{color:#fa023c}.bs-callout-primary{border-left-color:#428bca}.bs-callout-primary h4{color:#428bca}.bs-callout-success{border-left-color:#5cb85c}.bs-callout-success h4{color:#5cb85c}.bs-callout-danger{border-left-color:#d9534f}.bs-callout-danger h4{color:#d9534f}.bs-callout-warning{border-left-color:#f0ad4e}.bs-callout-warning h4{color:#f0ad4e}.bs-callout-info{border-left-color:#5bc0de}.bs-callout-info h4{color:#5bc0de}.headerlink{display:none;padding-left:.5em}h1:hover .headerlink,h2:hover .headerlink,h3:hover .headerlink,h4:hover .headerlink,h5:hover .headerlink,h6:hover .headerlink{display:inline-block}.admonition{padding:20px;margin:20px 0;border:1px solid #eee;border-left-width:5px;border-radius:3px;background-color:#fcfdff}.admonition p:last-child{margin-bottom:0}.admonition code{border-radius:3px}.admonition+.admonition{margin-top:-5px}.admonition.note{border-left-color:#428bca}.admonition.warning{border-left-color:#f0ad4e}.admonition.danger{border-left-color:#d9534f}.admonition-title{font-size:19px;font-style:normal;font-weight:400;margin-top:0;margin-bottom:5px}.admonition.note>.admonition-title{color:#428bca}.admonition.warning>.admonition-title{color:#f0ad4e}.admonition.danger>.admonition-title{color:#d9534f}

@ -59,7 +59,9 @@
<!-- Main title --> <!-- Main title -->
<a class="navbar-brand" href="..">RELOG</a>
<a class="navbar-brand" href="..">RELOG</a>
</div> </div>
<!-- Expanded navigation --> <!-- Expanded navigation -->
@ -166,14 +168,13 @@
</tbody> </tbody>
</table> </table>
<h4 id="example">Example</h4> <h4 id="example">Example</h4>
<pre><code class="json">{ <pre><code class="language-json">{
&quot;parameters&quot;: { &quot;parameters&quot;: {
&quot;time horizon (years)&quot;: 2, &quot;time horizon (years)&quot;: 2,
&quot;building period (years)&quot;: [1] &quot;building period (years)&quot;: [1]
} }
} }
</code></pre> </code></pre>
<h3 id="products">Products</h3> <h3 id="products">Products</h3>
<p>The <strong>products</strong> section describes all products and subproducts in the simulation. The field <code>instance["Products"]</code> is a dictionary mapping the name of the product to a dictionary which describes its characteristics. Each product description contains the following keys:</p> <p>The <strong>products</strong> section describes all products and subproducts in the simulation. The field <code>instance["Products"]</code> is a dictionary mapping the name of the product to a dictionary which describes its characteristics. Each product description contains the following keys:</p>
<table> <table>
@ -226,7 +227,7 @@
</tbody> </tbody>
</table> </table>
<h4 id="example_1">Example</h4> <h4 id="example_1">Example</h4>
<pre><code class="json">{ <pre><code class="language-json">{
&quot;products&quot;: { &quot;products&quot;: {
&quot;P1&quot;: { &quot;P1&quot;: {
&quot;initial amounts&quot;: { &quot;initial amounts&quot;: {
@ -265,7 +266,6 @@
} }
} }
</code></pre> </code></pre>
<h3 id="processing-plants">Processing plants</h3> <h3 id="processing-plants">Processing plants</h3>
<p>The <strong>plants</strong> section describes the available types of reverse manufacturing plants, their potential locations and associated costs, as well as their inputs and outputs. The field <code>instance["Plants"]</code> is a dictionary mapping the name of the plant to a dictionary with the following keys:</p> <p>The <strong>plants</strong> section describes the available types of reverse manufacturing plants, their potential locations and associated costs, as well as their inputs and outputs. The field <code>instance["Plants"]</code> is a dictionary mapping the name of the plant to a dictionary with the following keys:</p>
<table> <table>
@ -391,7 +391,7 @@
</tbody> </tbody>
</table> </table>
<h4 id="example_2">Example</h4> <h4 id="example_2">Example</h4>
<pre><code class="json">{ <pre><code class="language-json">{
&quot;plants&quot;: { &quot;plants&quot;: {
&quot;F1&quot;: { &quot;F1&quot;: {
&quot;input&quot;: &quot;P1&quot;, &quot;input&quot;: &quot;P1&quot;,
@ -436,7 +436,6 @@
} }
} }
</code></pre> </code></pre>
<h3 id="current-limitations">Current limitations</h3> <h3 id="current-limitations">Current limitations</h3>
<ul> <ul>
<li>Each plant can only be opened exactly once. After open, the plant remains open until the end of the simulation.</li> <li>Each plant can only be opened exactly once. After open, the plant remains open until the end of the simulation.</li>
@ -450,18 +449,22 @@
</div> </div>
<footer class="col-md-12 text-center">
<hr> <footer class="col-md-12 text-center">
<p>
<small>Copyright © 2020, UChicago Argonne, LLC. All Rights Reserved.</small><br>
<hr>
<p>
<small>Copyright © 2020, UChicago Argonne, LLC. All Rights Reserved.</small><br>
<small>Documentation built with <a href="http://www.mkdocs.org/">MkDocs</a>.</small>
</p>
<small>Documentation built with <a href="http://www.mkdocs.org/">MkDocs</a>.</small>
</p>
</footer>
</footer>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> <script src="//ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script src="../js/bootstrap-3.0.3.min.js"></script> <script src="../js/bootstrap-3.0.3.min.js"></script>

@ -59,7 +59,9 @@
<!-- Main title --> <!-- Main title -->
<a class="navbar-brand" href=".">RELOG</a>
<a class="navbar-brand" href=".">RELOG</a>
</div> </div>
<!-- Expanded navigation --> <!-- Expanded navigation -->
@ -161,7 +163,7 @@
<li><strong>Nwike Iloeje,</strong> Argonne National Laboratory &lt;<a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#99;&#105;&#108;&#111;&#101;&#106;&#101;&#64;&#97;&#110;&#108;&#46;&#103;&#111;&#118;">&#99;&#105;&#108;&#111;&#101;&#106;&#101;&#64;&#97;&#110;&#108;&#46;&#103;&#111;&#118;</a>&gt;</li> <li><strong>Nwike Iloeje,</strong> Argonne National Laboratory &lt;<a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#99;&#105;&#108;&#111;&#101;&#106;&#101;&#64;&#97;&#110;&#108;&#46;&#103;&#111;&#118;">&#99;&#105;&#108;&#111;&#101;&#106;&#101;&#64;&#97;&#110;&#108;&#46;&#103;&#111;&#118;</a>&gt;</li>
</ul> </ul>
<h3 id="license">License</h3> <h3 id="license">License</h3>
<pre><code class="text">RELOG: Reverse Logistics Optimization <pre><code class="language-text">RELOG: Reverse Logistics Optimization
Copyright © 2020, UChicago Argonne, LLC. All Rights Reserved. Copyright © 2020, UChicago Argonne, LLC. All Rights Reserved.
Redistribution and use in source and binary forms, with or without modification, are permitted Redistribution and use in source and binary forms, with or without modification, are permitted
@ -190,18 +192,22 @@ POSSIBILITY OF SUCH DAMAGE.
</div> </div>
<footer class="col-md-12 text-center">
<hr> <footer class="col-md-12 text-center">
<p>
<small>Copyright © 2020, UChicago Argonne, LLC. All Rights Reserved.</small><br>
<hr>
<p>
<small>Copyright © 2020, UChicago Argonne, LLC. All Rights Reserved.</small><br>
<small>Documentation built with <a href="http://www.mkdocs.org/">MkDocs</a>.</small>
</p>
<small>Documentation built with <a href="http://www.mkdocs.org/">MkDocs</a>.</small>
</p>
</footer>
</footer>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> <script src="//ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script src="js/bootstrap-3.0.3.min.js"></script> <script src="js/bootstrap-3.0.3.min.js"></script>
@ -290,5 +296,5 @@ POSSIBILITY OF SUCH DAMAGE.
<!-- <!--
MkDocs version : 1.1.2 MkDocs version : 1.1.2
Build Date UTC : 2020-10-29 20:20:05.378362+00:00 Build Date UTC : 2021-01-06 15:17:22.880432+00:00
--> -->

@ -59,7 +59,9 @@
<!-- Main title --> <!-- Main title -->
<a class="navbar-brand" href="..">RELOG</a>
<a class="navbar-brand" href="..">RELOG</a>
</div> </div>
<!-- Expanded navigation --> <!-- Expanded navigation -->
@ -319,18 +321,22 @@ In the fourth line, we have the disposal costs.</p>
</div> </div>
<footer class="col-md-12 text-center">
<hr> <footer class="col-md-12 text-center">
<p>
<small>Copyright © 2020, UChicago Argonne, LLC. All Rights Reserved.</small><br>
<hr>
<p>
<small>Copyright © 2020, UChicago Argonne, LLC. All Rights Reserved.</small><br>
<small>Documentation built with <a href="http://www.mkdocs.org/">MkDocs</a>.</small>
</p>
<small>Documentation built with <a href="http://www.mkdocs.org/">MkDocs</a>.</small>
</p>
</footer>
</footer>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> <script src="//ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script src="../js/bootstrap-3.0.3.min.js"></script> <script src="../js/bootstrap-3.0.3.min.js"></script>

@ -59,7 +59,9 @@
<!-- Main title --> <!-- Main title -->
<a class="navbar-brand" href="..">RELOG</a>
<a class="navbar-brand" href="..">RELOG</a>
</div> </div>
<!-- Expanded navigation --> <!-- Expanded navigation -->
@ -236,7 +238,7 @@
<ul> <ul>
<li>Bar plot with total plant costs per year, grouped by plant type (in Python):</li> <li>Bar plot with total plant costs per year, grouped by plant type (in Python):</li>
</ul> </ul>
<pre><code class="python">import pandas as pd <pre><code class="language-python">import pandas as pd
import seaborn as sns; sns.set() import seaborn as sns; sns.set()
data = pd.read_csv(&quot;plants_report.csv&quot;) data = pd.read_csv(&quot;plants_report.csv&quot;)
@ -247,12 +249,11 @@ sns.barplot(x=&quot;year&quot;,
.sum() .sum()
.reset_index()); .reset_index());
</code></pre> </code></pre>
<p><img src="../images/ex_plant_cost_per_year.png" width="500px"/></p> <p><img src="../images/ex_plant_cost_per_year.png" width="500px"/></p>
<ul> <ul>
<li>Map showing plant locations (in Python):</li> <li>Map showing plant locations (in Python):</li>
</ul> </ul>
<pre><code class="python">import pandas as pd <pre><code class="language-python">import pandas as pd
import geopandas as gp import geopandas as gp
# Plot base map # Plot base map
@ -267,7 +268,6 @@ points = gp.points_from_xy(data[&quot;longitude (deg)&quot;],
data[&quot;latitude (deg)&quot;]) data[&quot;latitude (deg)&quot;])
gp.GeoDataFrame(data, geometry=points).plot(ax=ax); gp.GeoDataFrame(data, geometry=points).plot(ax=ax);
</code></pre> </code></pre>
<p><img src="../images/ex_plant_locations.png" width="1000px"/></p> <p><img src="../images/ex_plant_locations.png" width="1000px"/></p>
<h2 id="plant-outputs-report">Plant outputs report</h2> <h2 id="plant-outputs-report">Plant outputs report</h2>
<p>Report showing amount of products produced, sent and disposed of by each plant, as well as disposal costs.</p> <p>Report showing amount of products produced, sent and disposed of by each plant, as well as disposal costs.</p>
@ -318,7 +318,7 @@ gp.GeoDataFrame(data, geometry=points).plot(ax=ax);
<ul> <ul>
<li>Bar plot showing total amount produced for each product, grouped by year (in Python):</li> <li>Bar plot showing total amount produced for each product, grouped by year (in Python):</li>
</ul> </ul>
<pre><code class="python">import pandas as pd <pre><code class="language-python">import pandas as pd
import seaborn as sns; sns.set() import seaborn as sns; sns.set()
data = pd.read_csv(&quot;plant_outputs_report.csv&quot;) data = pd.read_csv(&quot;plant_outputs_report.csv&quot;)
@ -329,7 +329,6 @@ sns.barplot(x=&quot;amount produced (tonne)&quot;,
.sum() .sum()
.reset_index()); .reset_index());
</code></pre> </code></pre>
<p><img src="../images/ex_amount_produced.png" width="500px"/></p> <p><img src="../images/ex_amount_produced.png" width="500px"/></p>
<h2 id="plant-emissions-report">Plant emissions report</h2> <h2 id="plant-emissions-report">Plant emissions report</h2>
<p>Report showing amount of emissions produced by each plant.</p> <p>Report showing amount of emissions produced by each plant.</p>
@ -368,7 +367,7 @@ sns.barplot(x=&quot;amount produced (tonne)&quot;,
<ul> <ul>
<li>Bar plot showing total emission by plant type, grouped type of emissions (in Python):</li> <li>Bar plot showing total emission by plant type, grouped type of emissions (in Python):</li>
</ul> </ul>
<pre><code class="python">import pandas as pd <pre><code class="language-python">import pandas as pd
import seaborn as sns; sns.set() import seaborn as sns; sns.set()
data = pd.read_csv(&quot;plant_emissions_report.csv&quot;) data = pd.read_csv(&quot;plant_emissions_report.csv&quot;)
@ -379,7 +378,6 @@ sns.barplot(x=&quot;plant type&quot;,
.sum() .sum()
.reset_index()); .reset_index());
</code></pre> </code></pre>
<p><img src="../images/ex_emissions.png" width="500px"/></p> <p><img src="../images/ex_emissions.png" width="500px"/></p>
<h2 id="transportation-report">Transportation report</h2> <h2 id="transportation-report">Transportation report</h2>
<p>Report showing amount of product sent from initial locations to plants, and from one plant to another. Includes the distance between each pair of locations, amount-distance shipped, transportation costs and energy expenditure.</p> <p>Report showing amount of product sent from initial locations to plants, and from one plant to another. Includes the distance between each pair of locations, amount-distance shipped, transportation costs and energy expenditure.</p>
@ -458,7 +456,7 @@ sns.barplot(x=&quot;plant type&quot;,
<ul> <ul>
<li>Bar plot showing total amount-distance for each product type, grouped by year (in Python):</li> <li>Bar plot showing total amount-distance for each product type, grouped by year (in Python):</li>
</ul> </ul>
<pre><code class="python">import pandas as pd <pre><code class="language-python">import pandas as pd
import seaborn as sns; sns.set() import seaborn as sns; sns.set()
data = pd.read_csv(&quot;transportation_report.csv&quot;) data = pd.read_csv(&quot;transportation_report.csv&quot;)
@ -469,12 +467,11 @@ sns.barplot(x=&quot;product&quot;,
.sum() .sum()
.reset_index()); .reset_index());
</code></pre> </code></pre>
<p><img src="../images/ex_transportation_amount_distance.png" width="500px"/></p> <p><img src="../images/ex_transportation_amount_distance.png" width="500px"/></p>
<ul> <ul>
<li>Map of transportation lines (in Python):</li> <li>Map of transportation lines (in Python):</li>
</ul> </ul>
<pre><code class="python">import pandas as pd <pre><code class="language-python">import pandas as pd
import geopandas as gp import geopandas as gp
from shapely.geometry import Point, LineString from shapely.geometry import Point, LineString
import matplotlib.pyplot as plt import matplotlib.pyplot as plt
@ -511,7 +508,6 @@ gp.GeoDataFrame(data, geometry=points).plot(ax=ax,
color=&quot;red&quot;, color=&quot;red&quot;,
markersize=50); markersize=50);
</code></pre> </code></pre>
<p><img src="../images/ex_transportation.png" width="1000px"/></p> <p><img src="../images/ex_transportation.png" width="1000px"/></p>
<h2 id="transportation-emissions-report">Transportation emissions report</h2> <h2 id="transportation-emissions-report">Transportation emissions report</h2>
<p>Report showing emissions for each trip between initial locations and plants, and between pairs of plants.</p> <p>Report showing emissions for each trip between initial locations and plants, and between pairs of plants.</p>
@ -590,7 +586,7 @@ gp.GeoDataFrame(data, geometry=points).plot(ax=ax,
<ul> <ul>
<li>Bar plot showing total emission amount by emission type, grouped by type of product being transported (in Python):</li> <li>Bar plot showing total emission amount by emission type, grouped by type of product being transported (in Python):</li>
</ul> </ul>
<pre><code class="python">import pandas as pd <pre><code class="language-python">import pandas as pd
import seaborn as sns; sns.set() import seaborn as sns; sns.set()
data = pd.read_csv(&quot;transportation_emissions_report.csv&quot;) data = pd.read_csv(&quot;transportation_emissions_report.csv&quot;)
@ -601,24 +597,27 @@ sns.barplot(x=&quot;emission type&quot;,
.sum() .sum()
.reset_index()); .reset_index());
</code></pre> </code></pre>
<p><img src="../images/ex_transportation_emissions.png" width="500px"/></p></div> <p><img src="../images/ex_transportation_emissions.png" width="500px"/></p></div>
</div> </div>
<footer class="col-md-12 text-center">
<hr> <footer class="col-md-12 text-center">
<p>
<small>Copyright © 2020, UChicago Argonne, LLC. All Rights Reserved.</small><br>
<hr>
<p>
<small>Copyright © 2020, UChicago Argonne, LLC. All Rights Reserved.</small><br>
<small>Documentation built with <a href="http://www.mkdocs.org/">MkDocs</a>.</small>
</p>
<small>Documentation built with <a href="http://www.mkdocs.org/">MkDocs</a>.</small>
</p>
</footer>
</footer>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> <script src="//ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script src="../js/bootstrap-3.0.3.min.js"></script> <script src="../js/bootstrap-3.0.3.min.js"></script>

@ -1,23 +1,23 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"><url> <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"><url>
<loc>None</loc> <loc>None</loc>
<lastmod>2020-10-29</lastmod> <lastmod>2021-01-06</lastmod>
<changefreq>daily</changefreq> <changefreq>daily</changefreq>
</url><url> </url><url>
<loc>None</loc> <loc>None</loc>
<lastmod>2020-10-29</lastmod> <lastmod>2021-01-06</lastmod>
<changefreq>daily</changefreq> <changefreq>daily</changefreq>
</url><url> </url><url>
<loc>None</loc> <loc>None</loc>
<lastmod>2020-10-29</lastmod> <lastmod>2021-01-06</lastmod>
<changefreq>daily</changefreq> <changefreq>daily</changefreq>
</url><url> </url><url>
<loc>None</loc> <loc>None</loc>
<lastmod>2020-10-29</lastmod> <lastmod>2021-01-06</lastmod>
<changefreq>daily</changefreq> <changefreq>daily</changefreq>
</url><url> </url><url>
<loc>None</loc> <loc>None</loc>
<lastmod>2020-10-29</lastmod> <lastmod>2021-01-06</lastmod>
<changefreq>daily</changefreq> <changefreq>daily</changefreq>
</url> </url>
</urlset> </urlset>

Binary file not shown.

@ -59,7 +59,9 @@
<!-- Main title --> <!-- Main title -->
<a class="navbar-brand" href="..">RELOG</a>
<a class="navbar-brand" href="..">RELOG</a>
</div> </div>
<!-- Expanded navigation --> <!-- Expanded navigation -->
@ -146,17 +148,14 @@
<h1 id="usage">Usage</h1> <h1 id="usage">Usage</h1>
<h2 id="1-installation">1. Installation</h2> <h2 id="1-installation">1. Installation</h2>
<p>To use RELOG, the first step is to install the <a href="https://julialang.org/">Julia programming language</a> on your machine. Note that RELOG was developed and tested with Julia 1.5 and may not be compatible with newer versions. After Julia is installed, launch the Julia console, type <code>]</code> to switch to package manger mode, then run:</p> <p>To use RELOG, the first step is to install the <a href="https://julialang.org/">Julia programming language</a> on your machine. Note that RELOG was developed and tested with Julia 1.5 and may not be compatible with newer versions. After Julia is installed, launch the Julia console, type <code>]</code> to switch to package manger mode, then run:</p>
<pre><code class="text">(@v1.5) pkg&gt; add https://github.com/ANL-CEEESA/RELOG.git <pre><code class="language-text">(@v1.5) pkg&gt; add https://github.com/ANL-CEEESA/RELOG.git
</code></pre> </code></pre>
<p>After the package and all its dependencies have been installed, please run the RELOG test suite, as shown below, to make sure that the package has been correctly installed:</p> <p>After the package and all its dependencies have been installed, please run the RELOG test suite, as shown below, to make sure that the package has been correctly installed:</p>
<pre><code class="text">(@v1.5) pkg&gt; test RELOG <pre><code class="language-text">(@v1.5) pkg&gt; test RELOG
</code></pre> </code></pre>
<p>To update the package to a newer version, type <code>]</code> to enter the package manager mode, then run:</p> <p>To update the package to a newer version, type <code>]</code> to enter the package manager mode, then run:</p>
<pre><code class="text">(@v1.5) pkg&gt; update RELOG <pre><code class="language-text">(@v1.5) pkg&gt; update RELOG
</code></pre> </code></pre>
<h2 id="2-modeling-the-problem">2. Modeling the problem</h2> <h2 id="2-modeling-the-problem">2. Modeling the problem</h2>
<p>The two main model components in RELOG are <strong>products</strong> and <strong>plants</strong>.</p> <p>The two main model components in RELOG are <strong>products</strong> and <strong>plants</strong>.</p>
<p>A <strong>product</strong> is any material that needs to be recycled, any intermediary product produced during the recycling process, or any product recovered at the end of the process. For example, in a NiMH battery recycling study case, products could include (i) the original batteries to be recycled; (ii) the cathode and anode parts of the battery; (iii) rare-earth elements and (iv) scrap metals.</p> <p>A <strong>product</strong> is any material that needs to be recycled, any intermediary product produced during the recycling process, or any product recovered at the end of the process. For example, in a NiMH battery recycling study case, products could include (i) the original batteries to be recycled; (ii) the cathode and anode parts of the battery; (iii) rare-earth elements and (iv) scrap metals.</p>
@ -189,7 +188,7 @@
<p>All user parameters specified above must be provided to RELOG as a JSON file, which is fully described in the <a href="../format/">data format page</a>.</p> <p>All user parameters specified above must be provided to RELOG as a JSON file, which is fully described in the <a href="../format/">data format page</a>.</p>
<h2 id="3-running-the-optimization">3. Running the optimization</h2> <h2 id="3-running-the-optimization">3. Running the optimization</h2>
<p>After creating a JSON file describing the reverse manufacturing process and the input data, the following example illustrates how to use the package to find the optimal set of decisions:</p> <p>After creating a JSON file describing the reverse manufacturing process and the input data, the following example illustrates how to use the package to find the optimal set of decisions:</p>
<pre><code class="julia"># Import package <pre><code class="language-julia"># Import package
using RELOG using RELOG
# Solve optimization problem # Solve optimization problem
@ -202,12 +201,11 @@ RELOG.write(solution, &quot;solution.json&quot;)
RELOG.write_plants_report(solution, &quot;plants.csv&quot;) RELOG.write_plants_report(solution, &quot;plants.csv&quot;)
RELOG.write_transportation_report(solution, &quot;transportation.csv&quot;) RELOG.write_transportation_report(solution, &quot;transportation.csv&quot;)
</code></pre> </code></pre>
<p>For a complete description of the file formats above, and for a complete list of available reports, see the <a href="../format/">data format page</a>.</p> <p>For a complete description of the file formats above, and for a complete list of available reports, see the <a href="../format/">data format page</a>.</p>
<h2 id="4-advanced-options">4. Advanced options</h2> <h2 id="4-advanced-options">4. Advanced options</h2>
<h3 id="41-changing-the-solver">4.1 Changing the solver</h3> <h3 id="41-changing-the-solver">4.1 Changing the solver</h3>
<p>By default, RELOG internally uses <a href="https://github.com/coin-or/Cbc">Cbc</a>, an open-source and freely-available Mixed-Integer Linear Programming solver developed by the <a href="https://www.coin-or.org/">COIN-OR Project</a>. For larger-scale test cases, a commercial solver such as Gurobi, CPLEX or XPRESS is recommended. The following snippet shows how to switch from Cbc to Gurobi, for example:</p> <p>By default, RELOG internally uses <a href="https://github.com/coin-or/Cbc">Cbc</a>, an open-source and freely-available Mixed-Integer Linear Programming solver developed by the <a href="https://www.coin-or.org/">COIN-OR Project</a>. For larger-scale test cases, a commercial solver such as Gurobi, CPLEX or XPRESS is recommended. The following snippet shows how to switch from Cbc to Gurobi, for example:</p>
<pre><code class="julia">using RELOG, Gurobi, JuMP <pre><code class="language-julia">using RELOG, Gurobi, JuMP
gurobi = optimizer_with_attributes(Gurobi.Optimizer, gurobi = optimizer_with_attributes(Gurobi.Optimizer,
&quot;TimeLimit&quot; =&gt; 3600, &quot;TimeLimit&quot; =&gt; 3600,
@ -217,7 +215,6 @@ RELOG.solve(&quot;instance.json&quot;,
output=&quot;solution.json&quot;, output=&quot;solution.json&quot;,
optimizer=gurobi) optimizer=gurobi)
</code></pre> </code></pre>
<h3 id="42-multi-period-heuristics">4.2 Multi-period heuristics</h3> <h3 id="42-multi-period-heuristics">4.2 Multi-period heuristics</h3>
<p>For large-scale instances, it may be too time-consuming to find an exact optimal solution to the multi-period version of the problem. For these situations, RELOG includes a heuristic solution method, which proceeds as follows:</p> <p>For large-scale instances, it may be too time-consuming to find an exact optimal solution to the multi-period version of the problem. For these situations, RELOG includes a heuristic solution method, which proceeds as follows:</p>
<ol> <ol>
@ -229,7 +226,7 @@ RELOG.solve(&quot;instance.json&quot;,
</li> </li>
</ol> </ol>
<p>To solve an instance using this heuristic, use the option <code>heuristic=true</code>, as shown below.</p> <p>To solve an instance using this heuristic, use the option <code>heuristic=true</code>, as shown below.</p>
<pre><code class="julia">using RELOG <pre><code class="language-julia">using RELOG
solution = RELOG.solve(&quot;/home/user/instance.json&quot;, solution = RELOG.solve(&quot;/home/user/instance.json&quot;,
heuristic=true) heuristic=true)
@ -238,18 +235,22 @@ solution = RELOG.solve(&quot;/home/user/instance.json&quot;,
</div> </div>
<footer class="col-md-12 text-center">
<hr> <footer class="col-md-12 text-center">
<p>
<small>Copyright © 2020, UChicago Argonne, LLC. All Rights Reserved.</small><br>
<hr>
<p>
<small>Copyright © 2020, UChicago Argonne, LLC. All Rights Reserved.</small><br>
<small>Documentation built with <a href="http://www.mkdocs.org/">MkDocs</a>.</small>
</p>
<small>Documentation built with <a href="http://www.mkdocs.org/">MkDocs</a>.</small>
</p>
</footer>
</footer>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> <script src="//ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script src="../js/bootstrap-3.0.3.min.js"></script> <script src="../js/bootstrap-3.0.3.min.js"></script>

@ -1 +1 @@
<meta http-equiv="Refresh" content="0; url='/RELOG/0.4'" /> <meta http-equiv="Refresh" content="0; url='/RELOG/0.5'" />

Loading…
Cancel
Save