|
35 | 35 |
|
36 | 36 | <section id="resource"> |
37 | 37 | <h1>Resource<a class="headerlink" href="#resource" title="Link to this heading">¶</a></h1> |
38 | | -<p>The <a class="reference internal" href="#piperabm.resource.Resource" title="piperabm.resource.Resource"><code class="xref py py-class docutils literal notranslate"><span class="pre">piperabm.resource.Resource</span></code></a> class provides a lightweight container |
39 | | -for resource quantities (food, water, energy) with validation and arithmetic |
| 38 | +<p>Resources may be provided as plain dictionaries (default) or as instances of the optional <a class="reference internal" href="#piperabm.resource.Resource" title="piperabm.resource.Resource"><code class="xref py py-class docutils literal notranslate"><span class="pre">piperabm.resource.Resource</span></code></a> helper class. |
| 39 | +This class provides a lightweight container for resource quantities (food, water, energy) with validation and arithmetic |
40 | 40 | support. It is an optional convenience wrapper; internally, PiperABM stores |
41 | 41 | resources as plain dictionaries attached to NetworkX graph nodes.</p> |
| 42 | +<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="kn">from</span><span class="w"> </span><span class="nn">piperabm.resource</span><span class="w"> </span><span class="kn">import</span> <span class="n">Resource</span> |
| 43 | + |
| 44 | +<span class="n">model</span><span class="o">.</span><span class="n">society</span><span class="o">.</span><span class="n">add_agent</span><span class="p">(</span><span class="n">resources</span><span class="o">=</span><span class="n">Resource</span><span class="p">(</span><span class="n">food</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">water</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span> <span class="n">energy</span><span class="o">=</span><span class="mi">3</span><span class="p">))</span> |
| 45 | +<span class="c1"># An alternative to:</span> |
| 46 | +<span class="n">model</span><span class="o">.</span><span class="n">society</span><span class="o">.</span><span class="n">add_agent</span><span class="p">(</span><span class="n">resources</span><span class="o">=</span><span class="p">{</span><span class="s2">"food"</span><span class="p">:</span><span class="mi">1</span><span class="p">,</span> <span class="s2">"water"</span><span class="p">:</span><span class="mi">2</span><span class="p">,</span> <span class="s2">"energy"</span><span class="p">:</span><span class="mi">3</span><span class="p">})</span> |
| 47 | +</pre></div> |
| 48 | +</div> |
| 49 | +<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="c1"># Retrive resources as a Resource object</span> |
| 50 | +<span class="n">resources</span> <span class="o">=</span> <span class="n">model</span><span class="o">.</span><span class="n">society</span><span class="o">.</span><span class="n">get_resources</span><span class="p">(</span><span class="nb">id</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="nb">object</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> |
| 51 | +<span class="c1"># Retrive resources as a dictionary</span> |
| 52 | +<span class="n">resources</span> <span class="o">=</span> <span class="n">model</span><span class="o">.</span><span class="n">society</span><span class="o">.</span><span class="n">get_resources</span><span class="p">(</span><span class="nb">id</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span> |
| 53 | +</pre></div> |
| 54 | +</div> |
| 55 | +<p>Since the Resource class supports arithmetic operations, it can be used to easily manipulate resource quantities.</p> |
| 56 | +<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="c1"># Retrive resources as a Resource object</span> |
| 57 | +<span class="n">resources</span> <span class="o">=</span> <span class="n">model</span><span class="o">.</span><span class="n">society</span><span class="o">.</span><span class="n">get_resources</span><span class="p">(</span><span class="nb">id</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="nb">object</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> |
| 58 | +<span class="n">resources</span> <span class="o">=*</span> <span class="mi">2</span> <span class="c1"># Multiply all resource quantities by 2</span> |
| 59 | +<span class="n">resources</span> <span class="o">=+</span> <span class="n">Resource</span><span class="p">(</span><span class="n">food</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span> <span class="c1"># Add 1 unit of food</span> |
| 60 | +<span class="n">resources</span> <span class="o">=-</span> <span class="p">{</span><span class="s2">"water"</span><span class="p">:</span> <span class="mi">1</span><span class="p">}</span> <span class="c1"># Subtract 1 unit of water</span> |
| 61 | +</pre></div> |
| 62 | +</div> |
42 | 63 | <dl class="py class"> |
43 | 64 | <dt class="sig sig-object py" id="piperabm.resource.Resource"> |
44 | 65 | <em class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">piperabm.resource.</span></span><span class="sig-name descname"><span class="pre">Resource</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">food</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">float</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">0</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">water</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">float</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">0</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">energy</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">float</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">0</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#piperabm.resource.Resource" title="Link to this definition">¶</a></dt> |
|
0 commit comments