@@ -114,3 +114,61 @@ Geographic Informasion System (GIS) Class [C++]
114114 The ``cyclus::toolkit::GIS `` class provide an option to add geographic coordinates
115115 of its friend classes. Haversine distance calculations between two facilities or
116116 agents with GIS coordinates can be performed as well.
117+
118+ Multi-Resource Buffer Inventory Tracker [C++]
119+ +++++++++++++++++++++++++++++++++++++++++++++
120+ The ``cyclus::toolkit::TotalInvTracker `` class tracks the total quantity of
121+ resources held across multiple Resource Buffers. The Tracker may have a
122+ total inventory limit separate from any individual Resource Buffer limits.
123+
124+ Implementing a tracker can be useful in replicating a facility-wide limit.
125+ A TotalInvTracker is required to initialize the Material Buy Policy.
126+
127+ Material Buy Policy Class [C++]
128+ +++++++++++++++++++++++++++++++
129+ The ``cyclus::toolkit::MatlBuyPolicy `` class manages the process of requesting
130+ a particular commodity.
131+
132+ The following inventory management strategies are available:
133+
134+ * Active and dormant cycles. Developer must create two random distributions
135+ using the ``cyclus::RandomNumberGenerator `` class. The active distribution is
136+ sampled to determine the length of time steps that the agent will be actively
137+ requesting its incommodity. The dormant distribution is sampled to determine
138+ the length of time steps that the agent will be dormant, placing no requests
139+ regardless of whether inventory space is available at the time.
140+
141+ * Cumulative capacity. Cumulative capacity is a type of active-dormant cycle
142+ where the active phase is determined not by sampling from a random distribution,
143+ but by the cumulative quantity of incommodity that the agent has received
144+ during this cycle. The facility will stay active until the cumulative quantity
145+ is reached, at which point it will enter the dormant phase. The dormant
146+ phase functions exactly as in the active-dormant cycle.
147+
148+ * Buying size distribution. Similar to active and dormant cycles, the size of
149+ request placed by an agent can be determined by a random distribution. The
150+ sampled value is a fraction of the maximum available request, which is
151+ determined by the throughput and inventory space available both in the receiving
152+ ``ResBuf `` and in the entire facility, using the ``TotalInvTracker ``.
153+
154+ * Quantized buying. The agent can be set to request a fixed quantity of its
155+ incommodity, when space allows. It will not accept partial fulfillment of its
156+ request.
157+
158+ * Inventory policies. Two standard inventory policies are available, called
159+ reorder point-reorder quantity or (R,Q), and minimum-maximum or (s,S). The
160+ ``inv_policy `` parameter must be set to either "RQ" or "sS" to use these. Two
161+ additional parameters determine the behavior, ``req_at `` and ``fill_behav ``.
162+ For both policies, ``req_at `` is the inventory quantity at which new
163+ incommodity should be ordered. Above this point, the agent will not place a
164+ request. Below this point, the agent will place a request. For the (R,Q)
165+ policy, ``fill_behav `` is the Q, or quantity of incommodity that the agent
166+ will request. This functions similar to quantized buying, where the agent
167+ seeks to buy exactly Q / ``fill_behav `` quantity of incommodity. For the (s,S)
168+ policy, ``fill_behav `` is the S, or the maximum quantity of incommodity that
169+ the agent will accept. The agent will request S minus the current inventory.
170+
171+ Material Sell Policy Class [C++]
172+ ++++++++++++++++++++++++++++++++
173+ The ``cyclus::toolkit::MatlSellPolicy `` class manages the process of providing
174+ a particular commodity to the DRE.
0 commit comments