1 package emlab.gen.role.capacitymechanisms;
3 import org.springframework.beans.factory.annotation.Autowired;
4 import org.springframework.transaction.annotation.Transactional;
6 import agentspring.role.AbstractRole;
7 import agentspring.role.Role;
8 import agentspring.role.RoleComponent;
55 Zone curZone = strategicReserveOperator.getZone();
62 double peakLoadforMarketNOtrend = segmentLoadRepository.peakLoadbyZoneMarketandTime(curZone, market);
64 double trend = market.getDemandGrowthTrend().getValue(getCurrentTick());
66 double peakLoadforMarket = trend*peakLoadforMarketNOtrend;
71 long segmentCounter=0;
74 strategicReserveOperator.setReserveVolume(peakLoadforMarket*strategicReserveOperator.getReserveVolumePercentSR());
89 strategicReserveOperator.getReservePriceSR();
103 segmentCounter = reps.segmentRepository.count();
105 for(
Segment currentSegment: reps.segmentRepository.findAll()){
110 boolean isORMarketCleared =
false;
111 double sumofContractedBids=0;
112 double volumetobeContracted = strategicReserveOperator.getReserveVolume();
114 double clearingEpsilon = 0.001;
115 double dispatchPrice = strategicReserveOperator.getReservePriceSR();
119 Iterable<PowerPlantDispatchPlan> sortedListofPPDP = plantDispatchPlanRepository
120 .findDescendingSortedPowerPlantDispatchPlansForSegmentForTime(currentSegment, getCurrentTick(),
129 if (currentPPDP.getBiddingMarket().getNodeId().intValue() == market.getNodeId().intValue()){
142 if (volumetobeContracted==0){
143 isORMarketCleared=
true;
145 else if (isORMarketCleared ==
false){
147 if (volumetobeContracted-(sumofContractedBids + currentPPDP.getAmount()) >= clearingEpsilon){
152 currentPPDP.setSRstatus(PowerPlantDispatchPlan.CONTRACTED);
154 sumofContractedBids += currentPPDP.getAmount();
155 currentPPDP.setOldPrice(currentPPDP.getPrice());
157 currentPPDP.setPrice(dispatchPrice);
163 if ((currentPPDP.getPowerPlant().getLoan().getTotalNumberOfPayments() - currentPPDP
164 .getPowerPlant().getLoan().getNumberOfPaymentsDone()) > 0d) {
165 Loan = (currentPPDP.getPowerPlant().getLoan().getAmountPerPayment());
168 double money = ((currentPPDP.getPowerPlant().getActualFixedOperatingCost()) + Loan)
178 reps.nonTransactionalCreateRepository.createCashFlow(strategicReserveOperator, currentPPDP.getBidder(), money,
CashFlow.STRRESPAYMENT, getCurrentTick(), currentPPDP.getPowerPlant());
185 else if (volumetobeContracted-(sumofContractedBids + currentPPDP.getAmount()) < clearingEpsilon){
189 currentPPDP.setSRstatus(PowerPlantDispatchPlan.PARTLY_CONTRACTED);
191 sumofContractedBids += currentPPDP.getAmount();
192 currentPPDP.setOldPrice(currentPPDP.getPrice());
194 currentPPDP.setPrice(dispatchPrice);
197 isORMarketCleared =
true;
201 if ((currentPPDP.getPowerPlant().getLoan().getTotalNumberOfPayments() - currentPPDP
202 .getPowerPlant().getLoan().getNumberOfPaymentsDone()) > 0d) {
203 Loan = (currentPPDP.getPowerPlant().getLoan().getAmountPerPayment());
207 double money = ((currentPPDP.getPowerPlant().getActualFixedOperatingCost()) + Loan)
216 reps.nonTransactionalCreateRepository.createCashFlow(strategicReserveOperator, currentPPDP.getBidder(), money,
CashFlow.STRRESPAYMENT, getCurrentTick(), currentPPDP.getPowerPlant());
225 currentPPDP.setSRstatus(PowerPlantDispatchPlan.NOT_CONTRACTED);
229 if (volumetobeContracted-sumofContractedBids < clearingEpsilon){
231 isORMarketCleared =
true;
235 currentPPDP.persist();