Industry
Variables
Capital.
Fixed Costs (kr ? $)
Revenues per unit (kr ? $)
Cost of inputs per unit (kr ? $)
Carbon released per unit (g ?)
Production capacity (Units)
Carbon owned (g ?)
Carbon used (g ?)
Buy/Sell list
Average profit
Functionality:
Nr of units sold /Not carbon (Number) — calculate? Orginal equations
o
Profit = (Revenues per unit - Cost per unit) * Nr of units sold - Fixed costs (kr ? $)
o
Cost per unit = Cost of inputs per unit + Carbon release per unit * Cost of Carbon (kr ? $)
Other equations
o
Cost of Carbon = (Cost of Carbon * Carbon units owned + Cost of bought Carbon * unit bought)/(Carbon units owned + units bought)
o
Max Units Produced with owned Carbon = owned Carbon / Carbon released per unit
o
Max Carbon usage = Carbon release per unit * Production capacity
o
Nr of units sold = min(Max Units Produced with owned Carbon , Production capacity)
Buy/Sell
o
If (Max Carbon usage > Owned carbon) Buy difference (Units)
o
If (Max Carbon usage < Owned carbon) Sell difference (Units)
o
Max bid price = Capital / units
Market
Variables:
Average price
Name
Country
Functionality:
Match offers and bids according to the design. At the end of the day, makes the transaction between buyers and sellers of the matching trades.
Matches, improvements, and checkout:
o
Match: If (bid's price > offer's minimum price) assign this bid to that offer.
o
Improvement: Scanning the offers for every bid:
If (current offer's price < old offer's price) repoint the bid to the new one.
o
Checkout: For every maching offer: notify the buyers/sellers with units sold/bought and for wich price.
Then if the offer and the bid are not checked out completely, keep them on the market as new.
Monitor
Use JFreeGraph - from last year's model (in SVN). A module declared in the psySpec, meant to be listening to every type of message from every module. So it will have the time passing, the prices in the bids/offers and from whom, and the traded transactions.
Global
Initial values for all the modules (industries or market) are retrieved from psyclone as parameters. Every module starts only with a name given in the command line, then will be able to ask for parameters to the central system.