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.