16 package emlab.gen.role.co2policy;
18 import org.springframework.beans.factory.annotation.Autowired;
19 import org.springframework.data.annotation.Transient;
20 import org.springframework.data.neo4j.support.Neo4jTemplate;
21 import org.springframework.transaction.annotation.Transactional;
23 import agentspring.role.AbstractRole;
24 import agentspring.role.RoleComponent;
45 Neo4jTemplate
template;
49 double allowancesInCirculation = reps.decarbonizationAgentRepository.determinePreviouslyBankedCO2Certificates();
50 double inflowToMarketReserve = calculateInflowToMarketReserveForTimeStep(getCurrentTick(),
51 allowancesInCirculation, government);
52 government.setStabilityReserve(government.getStabilityReserve() + inflowToMarketReserve);
53 government.getCo2CapTrend().setValue(getCurrentTick(),
54 government.getCo2CapTrend().getValue(getCurrentTick()) - inflowToMarketReserve);
57 public double calculateInflowToMarketReserveForTimeStep(
long clearingTick,
double bankedCertificatesInTick,
59 double allowancesInCirculation = bankedCertificatesInTick;
60 if (allowancesInCirculation > government.getStabilityReserveUpperTriggerTrend().getValue(clearingTick)) {
61 double allowancesToBeAddedToReserve = Math.max(
62 allowancesInCirculation
63 * government.getStabilityReserveAddingPercentageTrend().getValue(clearingTick),
65 .getStabilityReserveAddingMinimumTrend().getValue(clearingTick));
66 return allowancesToBeAddedToReserve;
67 }
else if (allowancesInCirculation < government.getStabilityReserveLowerTriggerTrend().getValue(clearingTick)) {
68 double allowancesToBeReleased = Math.min(government.getStabilityReserve(),
70 .getStabilityReserveReleaseQuantityTrend().getValue(clearingTick));
71 return -allowancesToBeReleased;