1- CEP 30 - Framework for Financial Parameter Exchange in the CYCLUS R-I-F Hierarchy
1+ CEP 30 - Framework for Parameter Exchange in the CYCLUS R-I-F Hierarchy
22*********************************************************
33
44:CEP: 30
5- :Title: Framework for Financial Parameter Exchange in the CYCLUS R-I-F Hierarchy
5+ :Title: Framework for Parameter Exchange in the CYCLUS R-I-F Hierarchy
66:Last-Modified: 2024-12-27
77:Author: Dean Krueger <
[email protected] >
88:BDFP: Paul Wilson
@@ -22,10 +22,11 @@ suggests that the introduction of economic concepts could allow the supplier to
2222influence over the preferences of particular trading paths. As a part
2323of moving the DRE in that direction, it is necessary to add economic parameters to
2424the definitions of the Region, Institution, and Facility in such a way as to allow them
25- to interact with each other to combine these parameters in meaningful ways. The proposal
26- for doing so is to add sub-classes
27- to each which will act as a method of communicating economic information between layers
28- of the simulation.
25+ to interact with each other to combine these parameters in meaningful ways. However, because
26+ of the way that these financial parameters are tied intrisically to different parts of the
27+ Region-Institution-Facility (RIF) hierarchy, it will be necessary to introduce some mechanic
28+ by which those different layers of the hierarchy communicate their parameters to each other
29+ so that meaninful financial functions can be implemented.
2930
3031Copyright:
3132==============================
@@ -35,11 +36,11 @@ CEP 30 will be placed in the public domain as required by CEP 1.
3536Specification:
3637============================
3738
38- The new feature being proposed is a subclass for each of the Region, Institution, and
39- Facility classes which will allow the communication of economic/financial data between each layer
40- of the CYCLUS Region-Institution-Facility hierarchy. The main feature of the subclass will be a hash table
41- (enabled by std::unordered_map) which contains pairs of keys (std::string) and values
42- (doubles), as well as functions to set and get elements in the table.
39+ The new feature being proposed is a parent class for ` Agent `, called ` EconomicEntity `, which will
40+ add a common set of functions for accessing an ` std::unordered_map<std::string, double> ` called
41+ ` financial_data_ `. This map will be private, and only accessible through getter and setter functions.
42+ Additionally, the ` EconomicEntity ` class will include some common financial operation functions
43+ such as a present value function, a future value function, etc.
4344
4445Motivation:
4546==================
@@ -52,20 +53,18 @@ This eliminates the use of the optional Toolkit to introduce economic/financial
5253into agents that are required to interact for those parameters since C++ doesn't provide
5354a way to interrogate the API of an agent.
5455Because of the
55- interdependence of imagined economic functionality on the Region-Institution-Facility
56- relationship (a facility’s cost may be impacted by its own capital cost, as well as its
57- parent institution’s minimum acceptable rate of return and the regional tax rate, for
58- instance), the ability of a facility to access information about its parent Agents is
59- crucial.
56+ interdependence of imagined economic functionality on the RIF relationship (a facility’s
57+ cost may be impacted by its own capital cost, as well as its parent institution’s minimum
58+ acceptable rate of return and the regional tax rate, for instance), the ability of a facility
59+ to access information about its parent Agents is crucial.
6060
6161Rationale:
6262===========================
6363
64- Implementing the overall feature as a subclass keeps it in line with the class-subclass
65- structure of other CYCLUS functionality, such as the `TimeAgent ` or `Trader ` features that are inherited this way.
66- The reasons for choosing a hash table over another data structure are that they allow quick and
67- easy expansion both by developers and within the simulation itself, as well as search, insert, and
68- delete operations being ostensibly O(1).
64+ Implementing the overall feature as a supercklass keeps it in line with the class-subclass
65+ structure of other CYCLUS functionality. The reasons for choosing a hash table over another
66+ data structure are that they allow quick and easy expansion both by developers and within
67+ the simulation itself, as well as search, insert, and delete operations being ostensibly O(1).
6968
7069During the public vetting stage of CEP 30’s lifecycle two alternative ideas for implementing this
7170behavior were proposed. The first was to use the code injection functionality of cycpp files to
@@ -80,6 +79,7 @@ complicated very quickly.
8079Backwards Compatibility:
8180===========================
8281
83- Since this feature is proposed as a subclass of each of the three agent subclasses, it will be
84- optional to use, and therefore entirely possible to completely ignore it. This means it should
85- require no work to ensure backwards compatibility with older versions of CYCLUS.
82+ Since this feature is proposed as a superclass of each of the `Agent ` class, it will be
83+ a fundamental change to Cyclus. However, use of this feature will be completely optional, since
84+ all it does is add addtional information/functionality to Cyclus, and doesn't change any
85+ preexisting code.
0 commit comments