Source code for digital_comms.mobile_network.costs
"""
Cost module
Written by Ed Oughton
August 2019
"""
[docs]def calculate_costs(data, discount_rate, start_timestep, current_timestep):
"""
Calculates the discounted cost for capex and opex, depending on timestep.
Parameters
----------
data : list of dicts
Contains a list of assets
discount_rate : float
Annual financial discount rate to account for the time value of money
start_timestep : int
The timestep relative to the initial starting point
current_timestep : int
The timestep relative to the current point
Returns
-------
output : list of dicts
Contains a list of assets, with affliated discounted capex and opex costs.
"""
output = []
for datum in data:
output_datum = {}
cost = datum['capex']
discounted_cost = discount_function(
cost, discount_rate, start_timestep, current_timestep
)
output_datum['capex'] = discounted_cost
cost = datum['opex']
discounted_cost = discount_function(
cost, discount_rate, start_timestep, current_timestep
)
output_datum['opex'] = discounted_cost
output_datum['build_date'] = datum['build_date']
output_datum['pcd_sector'] = datum['pcd_sector']
output_datum['ran_type'] = datum['ran_type']
output_datum['site_ngr'] = datum['site_ngr']
output_datum['frequency'] = datum['frequency']
output_datum['bandwidth'] = datum['bandwidth']
output_datum['sectors'] = datum['sectors']
output_datum['technology'] = datum['technology']
output_datum['type'] = datum['type']
output_datum['item'] = datum['item']
output_datum['mast_height'] = datum['mast_height']
output_datum['lad'] = datum['lad']
output.append(output_datum)
return output
[docs]def discount_function(cost, discount_rate, start_timestep, current_timestep):
"""
Discount cost based on timestep
"""
timestep = current_timestep - start_timestep
discounted_cost = (
cost / (1 + discount_rate)**(timestep)
)
return discounted_cost