def init_global_vraibles(parameter_row_from_matrix): #"string is the path to the file in which the experiment is defined" g.random_change = parameter_row_from_matrix[0] g.copy_best_change = parameter_row_from_matrix[1] g.learn_change = parameter_row_from_matrix[2] g.copy_al = parameter_row_from_matrix[3] g.institutional_success_rate = parameter_row_from_matrix[4] if int(parameter_row_from_matrix[5]) == 0: g.majority_vote = False if int(parameter_row_from_matrix[5]) == 1: g.majority_vote = True #reset some of the values to the original g.institutional_rule = zeros(6) g.agents = dict() g.time = 0 g.testcase = cases(g.time) g.average_arrival_time = 72 g.average_laeving_time = 32 g.sd_average = 1 g.average_battery_drain = 10 g.sd_average_battery_drain = 2 g.average_soc = 20 g.sd_average_soc = 2 g.soc_max_gloabl = 40
def test_do_interaction(self): time = 32 testcase = cases(time) testcase.set_base(time) for k in range(2, 26): agents[k] = agent(30, k, time) agents[k].Voltage = 0.98 agents[k].set_rule(array([1, 0.97, 20, 5, 2, 0])) for i in agents: agents[i].do_interaction(testcase) for i in agents: self.assertEqual(agents[i].time, 33, "do interaction time test") load_vector = array([ 0, -0.002, -0.002, -0.002, -0.002, -0.002, -0.002, -0.002, -0.002, -0.002, -0.002, -0.002, -0.002, -0.002, -0.002, -0.002, -0.002, -0.002, -0.002, -0.002, -0.002, -0.002, -0.002, -0.002, -0.002 ]) for i in range(0, 25): self.assertEqual(testcase.dispatch_load[i], load_vector[i], "do interaction dispatchabel load test")
def run_model(str2_out, run_id): time_experiment = 96 * 6 * 30 time = 0 soc = 20 testcase = cases(time) soc_data = zeros((time_experiment, 24)) time_data = zeros((time_experiment, 1)) run_ids = ones((time_experiment, 1)) * run_id agents = dict() for k in range(2, 26): #soc = random.normal(average_soc, sd_average_soc, 1) agents[k] = agent(soc, k, time) for i in agents: soc_data[0, agents[i].node - 2] = agents[i].get_soc() while (time < time_experiment - 1): time_data[time, 0] = time time += 1 testcase.set_base(time) for i in agents: if agents[i].at_home: agents[i].do_interaction(testcase) else: if time % 96 == agents[i].arrival_time: agents[i].arrive_at_home() testcase.adapt_main_generator() output = testcase.get_output() for i in agents: if agents[i].at_home: agents[i].get_feedback(output) if time % 96 == agents[i].leaving_time: agents[i].at_home = False for i in agents: soc_data[time, agents[i].node - 2] = agents[i].get_soc() time_data[time, 0] = time output_values_to_csv = concatenate((soc_data, time_data, run_ids), axis=1) with open(str2_out, 'a') as csvfile: schreiber = csv.writer(csvfile, delimiter=',', quotechar='"') for row in output_values_to_csv: schreiber.writerow(row)
def test_get_feedback(self): time = 32 testcase = cases(time) testcase.ppc["bus"][:, 12] = 0.90 #basically drop the voltage restriction testcase.set_base(time) for k in range(2, 26): agents[k] = agent(30, k, time) agents[k].Voltage = 0.98 agents[k].set_rule(array([1, 0.99, 20, 4, 2, 0])) for i in agents: agents[i].do_interaction(testcase) testcase.adapt_main_generator() output = testcase.get_output() for i in agents: agents[i].get_feedback(output) for i in agents: self.assertEqual(agents[i].SOC, 31, "test get feedback check SOC")
Created on Apr 25, 2015 @author: saur ''' from cases_second import cases from pypower.api import ppoption, runopf, runpf from numpy import linspace from scipy import array,ones , zeros import matplotlib.pyplot as plt from scipy.stats import linregress time = 72 test_object = cases(time) #test_object.set_base(time) result , y = runpf(test_object.ppc,test_object.ppopt) power = linspace(0,25,num=25) slopes = zeros(6) power_data_matrix = zeros((25,6)) voltage_data_matrix = zeros((25,6)) for index in range(2,8): count = 0 voltages = zeros(25) powers = zeros(25) for p in power: test_object = cases(time) test_object.ppc["gen"][index-1,1] = - p /1000.0 result , y = runpf(test_object.ppc,test_object.ppopt)
global average_battery_drain global sd_average_battery_drain global soc_max_gloabl global random_change global copy_best_change global learn_change global agents global institutional_success_rate global majority_vote global copy_al global run_id institutional_rule = zeros(6) agents = dict() time = 0 testcase = cases(time) average_arrival_time = 72 average_laeving_time = 32 sd_average = 1 average_battery_drain = 10 sd_average_battery_drain = 2 average_soc = 20 sd_average_soc = 2 soc_max_gloabl = 40 #steps_threshhold = 96 action_options = [0,1,2,3,4,5] t_end_options = linspace(1,96,96) t_begin_options = t_end_options soc_threshold_options = linspace(0, soc_max_gloabl, 9) voltage_options = linspace(0.96,1,5)
def test_pypower_constrained(load_difference): correct = True for k in range(0, 4): for i in range(0, 6): if (load_difference[k, i] > 0) & (load_difference[k, i] < 1): if i != 5: for z in range(i + 1, 6): if (load_difference[k, z] != 1): correct = False return correct for i in range(0, number_of_runs): testcase = cases(time) for k in range(0, 24): load_vector[k, 0] = random.choice(actions) testcase.set_base(time) for k in range(2, 26): testcase.set_power(k, load_vector[k - 2, 0]) testcase.adapt_main_generator() output = testcase.get_output() constraint_matrix[0, i] = output["bus"][6, 7] constraint_matrix[1, i] = output["bus"][12, 7] constraint_matrix[2, i] = output["bus"][18, 7] constraint_matrix[3, i] = output["bus"][24, 7] difference_vector = -(testcase.ppc["gen"][ 1:25, 1] - testcase.dispatch_load[1:25]) / testcase.dispatch_load[1:25]