Exemple #1
0
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
Exemple #2
0
    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")
Exemple #3
0
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)
Exemple #4
0
    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")
Exemple #5
0
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)
Exemple #6
0
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]