# -*- coding: utf-8 -*- """ Analyse revenue and prices, checking total revenue is collected and looking for decomposition of revenue. With RCPD, revenue is AC to load and DC to south island generation With AoB, revenue is AC and DC to load and generation according to benefits from existing and future assets. Plus load pays for a residual that declines through time """ import numpy as np import pandas as pd import random import matplotlib import matplotlib.pyplot as plt import itertools in_fn = "C:/Users/theot/Dropbox (Sense.)/2018-19 EA TPM CBA (Shared)/Step 3/AoB model/Output/All_major_capex_DG_sensitivities/" out_fn="C:/Users/theot/Dropbox (Sense.)/2018-19 EA TPM CBA (Shared)/Step 3/AoB model/Output/All_major_capex_DG_sensitivities/" # Objective, function that takes two files as arguments and returns a file of # analysis for revenue # DG costs - assumed capital cost per MW and rate of growth dg_capex_per_mw=733000 dg_capex_g = 0.93 #Discount rate r=1.06 # Demand results rcpd = pd.read_csv(in_fn+"rcpd.csv") aob = pd.read_csv(in_fn+"aob.csv") # DG investment rcpd_mw=rcpd.groupby(['m_yr','dg_lrmc_g','dg_ds'])['dg_max'].sum().reset_index() rcpd_mw=rcpd_mw.rename(index=str, columns={"dg_max": "rcpd_mw"}) rcpd_q=rcpd.groupby(['m_yr','dg_lrmc_g','dg_ds'])['dg_q'].sum().reset_index() rcpd_q=rcpd_q.rename(index=str, columns={"dg_q": "rcpd_q"}) rcpd_dg = pd.merge(rcpd_mw,rcpd_q) aob_mw=aob.groupby(['m_yr','dg_lrmc_g','dg_ds'])['dg_max'].sum().reset_index() aob_mw=aob_mw.rename(index=str, columns={"dg_max": "aob_mw"}) aob_q=aob.groupby(['m_yr','dg_lrmc_g','dg_ds'])['dg_q'].sum().reset_index() aob_q=aob_q.rename(index=str, columns={"dg_q": "aob_q"}) aob_dg = pd.merge(aob_mw,aob_q) dg = pd.merge(rcpd_dg,aob_dg) chk=dg.groupby(['dg_lrmc_g','dg_ds'])['rcpd_mw'].diff() dg = dg.sort_values(by=['m_yr']) dg['rcpd_dmw']=dg.groupby(['dg_lrmc_g','dg_ds'])['rcpd_mw'].diff() dg['rcpd_inv']=dg.rcpd_dmw*(dg_capex_per_mw*(dg.dg_lrmc_g**(dg.m_yr-2017))) #dg['rcpd_inv']=dg.rcpd_mw.diff()*(dg_capex_per_mw*(dg_capex_g**(dg.m_yr-2017))) dg['aob_dmw']=dg.groupby(['dg_lrmc_g','dg_ds'])['aob_mw'].diff() dg['aob_inv']=dg.aob_dmw*(dg_capex_per_mw*(dg.dg_lrmc_g**(dg.m_yr-2017))) dg['mw_change']=dg.aob_mw-dg.rcpd_mw dg['mw_percentage_change']=dg.aob_mw/dg.rcpd_mw-1 dg['mw_cost']=dg_capex_per_mw*(dg.dg_lrmc_g**(dg.m_yr-2017)) dg['inv_change']=dg.aob_inv-dg.rcpd_inv dg['pv_inv_change']=dg.inv_change*(1/(r**(dg.m_yr-2019))) dg.to_csv(out_fn+'total_dg.csv') dg.pv_inv_change.sum()