class URBANopt::Reporting::DefaultReports::ScenarioPowerDistributionCost
scenario_power_distribution_cost include eletrical power distribution system violation and upgrade cost information.
Attributes
costs_per_equipment[RW]
equipment[RW]
outputs[RW]
results[RW]
violation_summary[RW]
Public Class Methods
new(hash = {})
click to toggle source
ScenarioPowerDistributionCost
class initializes all scenario_power_distribution_cost attributes: :results
, :outputs
, :violation_summary
, :costs_per_equipment
, :equipment
# File lib/urbanopt/reporting/default_reports/scenario_power_distribution_cost.rb, line 26 def initialize(hash = {}) hash.delete_if { |k, v| v.nil? } hash = defaults.merge(hash) @results = hash[:results] @outputs = hash[:outputs] @violation_summary = hash[:violation_summary] @costs_per_equipment = hash[:costs_per_equipment] @equipment = hash[:equipment] # initialize class variables @@validator and @@schema @@validator ||= Validator.new @@schema ||= @@validator.schema end
Public Instance Methods
add_costs_per_equipment()
click to toggle source
Add costs per equipment
# File lib/urbanopt/reporting/default_reports/scenario_power_distribution_cost.rb, line 135 def add_costs_per_equipment hash.delete_if { |k, v| v.nil? } hash = defaults.merge(hash) costs_per_equipment = {} costs_per_equipment['name'] = hash[:name] costs_per_equipment['type'] = hash[:type] costs_per_equipment['count'] = hash[:count] costs_per_equipment['total_cost_usd'] = hash[:costs_per_equipment] @costs_per_equipment << costs_per_equipment end
add_equipment()
click to toggle source
Add equipment
# File lib/urbanopt/reporting/default_reports/scenario_power_distribution_cost.rb, line 150 def add_equipment hash.delete_if { |k, v| v.nil? } hash = defaults.merge(hash) equipment = {} equipment['equipment_type'] = hash[:equipment_type] equipment['equipment_name'] = hash[:equipment_name] equipment['status'] = hash[:status] equipment['parameter1_name'] = hash[:parameter1_name] equipment['parameter1_original'] = hash[:parameter1_original] equipment['parameter1_upgraded'] = hash[:parameter1_upgraded] equipment['parameter2_name'] = hash[:parameter2_name] equipment['parameter2_original'] = hash[:parameter2_original] equipment['parameter2_upgraded'] = hash[:parameter2_upgraded] equipment['parameter3_name'] = hash[:parameter3_name] equipment['parameter3_original'] = hash[:parameter3_original] equipment['parameter3_upgraded'] = hash[:parameter3_upgraded] equipment['name'] = hash[:name] @equipment << equipment end
add_outputs(hash = {})
click to toggle source
Add outputs
# File lib/urbanopt/reporting/default_reports/scenario_power_distribution_cost.rb, line 90 def add_outputs(hash = {}) hash.delete_if { |k, v| v.nil? } hash = defaults.merge(hash) output = {} output['log_file'] = hash[:log_file] output['jobs'] = [] hash[:jobs].each do |job| output['jobs'] << job end @outputs = output end
add_result(hash = {})
click to toggle source
Add a result
# File lib/urbanopt/reporting/default_reports/scenario_power_distribution_cost.rb, line 79 def add_result(hash = {}) hash.delete_if { |k, v| v.nil? } hash = defaults.merge(hash) result = {} result['num_violations'] = hash[:num_violations] @results << result end
add_violation_summary(hash = {})
click to toggle source
Add a violation summary
# File lib/urbanopt/reporting/default_reports/scenario_power_distribution_cost.rb, line 105 def add_violation_summary(hash = {}) hash.delete_if { |k, v| v.nil? } hash = defaults.merge(hash) violation_summary = {} violation_summary['scenario'] = hash[:scenario] violation_summary['stage'] = hash[:stage] violation_summary['upgrade_type'] = hash[:upgrade_type] violation_summary['simulation_time_s'] = hash[:simulation_time_s] violation_summary['thermal_violations_present'] = hash[:thermal_violations_present] violation_summary['voltage_violations_present'] = hash[:voltage_violations_present] violation_summary['max_bus_voltage'] = hash[:max_bus_voltage] violation_summary['min_bus_voltage'] = hash[:min_bus_voltage] violation_summary['num_voltage_violation_buses'] = hash[:num_voltage_violation_buses] violation_summary['num_overvoltage_violation_buses'] = hash[:num_overvoltage_violation_buses] violation_summary['voltage_upper_limit'] = hash[:voltage_upper_limit] violation_summary['num_undervoltage_violation_buses'] = hash[:num_undervoltage_violation_buses] violation_summary['voltage_lower_limit'] = hash[:voltage_lower_limit] violation_summary['max_line_loading'] = hash[:max_line_loading] violation_summary['max_transformer_loading'] = hash[:max_transformer_loading] violation_summary['num_line_violations'] = hash[:num_line_violations] violation_summary['line_upper_limit'] = hash[:line_upper_limit] violation_summary['num_transformer_violations'] = hash[:num_transformer_violations] violation_summary['transformer_upper_limit'] = hash[:transformer_upper_limit] @violation_summary << violation_summary end
defaults()
click to toggle source
Assigns default values if attribute values do not exist.##
# File lib/urbanopt/reporting/default_reports/scenario_power_distribution_cost.rb, line 43 def defaults hash = {} hash[:results] = [] hash[:outputs] = {} hash[:violation_summary] = [] hash[:costs_per_equipment] = [] hash[:equipment] = [] return hash end
to_hash()
click to toggle source
Converts to a Hash equivalent for JSON serialization.
-
Exclude attributes with nil values.
-
Validate power_distribution_cost hash properties against schema.
# File lib/urbanopt/reporting/default_reports/scenario_power_distribution_cost.rb, line 60 def to_hash result = {} result[:results] = @results if @results result[:outputs] = @outputs if !@outputs.empty? result[:violation_summary] = @violation_summary if @violation_summary result[:costs_per_equipment] = @costs_per_equipment if @costs_per_equipment result[:equipment] = @equipment if @equipment # validate power_distribution_cost properties against schema if @@validator.validate(@@schema[:definitions][:ScenarioPowerDistributionCost][:properties], result).any? raise "scenario_power_distribution_cost properties does not match schema: #{@@validator.validate(@@schema[:definitions][:ScenarioPowerDistributionCost][:properties], result)}" end return result end