Exemple #1
0
def main(learning_rate):

    tf.reset_default_graph(
    )  # to avoid the conflict with the existing parameters, but this is not suggested for reuse parameters
    graph = tf.get_default_graph()
    #print(graph.get_operations())
    env = PowerDynSimEnv(case_files_array, dyn_config_file, rl_config_file,
                         java_port)
    #model = deepq.models.mlp([128,128])

    act = deepq.learn(env,
                      network=models.mlp(num_layers=2,
                                         num_hidden=128,
                                         activation=tf.nn.relu),
                      lr=learning_rate,
                      total_timesteps=900000,
                      buffer_size=50000,
                      checkpoint_freq=1000,
                      exploration_fraction=0.1,
                      exploration_final_eps=0.02,
                      print_freq=10,
                      callback=callback)
    print("Saving final model to power_model_multistep498_508_lr_%s_90w.pkl" %
          (str(learning_rate)))
    act.save(savedModel + "/" + model_name + "_lr_%s_90w.pkl" %
             (str(learning_rate)))
Exemple #2
0
case_files_array.append(folder_dir +
                        '\\testData\\Kundur-2area\\kunder_2area_ver30.raw')
case_files_array.append(folder_dir +
                        '\\testData\\Kundur-2area\\kunder_2area.dyr')

dyn_config_file = folder_dir + '\\testData\\Kundur-2area\\json\\kundur2area_dyn_config.json'

# rl_config_file = 'testData\\Kundur-2area\\json\\kundur2area_RL_config.json'
rl_config_file = folder_dir + '\\testData\\Kundur-2area\\json\\kundur2area_RL_config_multiStepObsv.json'

action_levels = [2]

import os.path
import sys
# This is to fix the issue of "ModuleNotFoundError" below
sys.path.append(os.path.join(os.path.dirname(__file__), '..'))

from PowerDynSimEnvDef_v3 import PowerDynSimEnv
env = PowerDynSimEnv(case_files_array, dyn_config_file, rl_config_file,
                     java_port, action_levels)

for i in range(5):
    results = env.step(1)
    print('states =', results[0])
    print('step reward =', results[1])

print('test completed')

env.close_connection()
print('connection with Ipss Server is closed')
step_durationtime = list()

check_pt_dir = "./PowerGridModels"
if not os.path.exists(check_pt_dir):
    os.makedirs(check_pt_dir)

model_file = os.path.join(check_pt_dir, "gridmodel")

import time
start = time.time()
dataname = "multistep_obs11_randftd3_randbus3_3motor2action_prenull_100w"

action_cnts = [2, 2, 2]
env = PowerDynSimEnv(case_files_array,
                     dyn_config_file,
                     rl_config_file,
                     java_port,
                     cnts=action_cnts)

#for ll in [0.0001, 0.0005, 0.00005]:
for ll in [0.00005]:
    step_rewards = list()
    step_actions = list()
    step_observations = list()
    step_status = list()
    step_starttime = list()
    step_durationtime = list()

    env.reset()

    #model_path = "./previous_model/IEEE39_multistep_p150_3motor3action_prenull_008_lr_0.0001_30w.pkl"
Exemple #4
0
case_files_array = []

case_files_array.append(folder_dir +
                        '\\testData\\Kundur-2area\\kunder_2area_ver30.raw')
case_files_array.append(folder_dir +
                        '\\testData\\Kundur-2area\\kunder_2area.dyr')

dyn_config_file = folder_dir + '\\testData\\Kundur-2area\\json\\kundur2area_dyn_config.json'

rl_config_file = folder_dir + '\\testData\\Kundur-2area\\json\\kundur2area_RL_config_multiStepObsv.json'

java_port = 25333

action_levels = [2]
env = PowerDynSimEnv(case_files_array, dyn_config_file, rl_config_file,
                     java_port, action_levels)

storedData = "./storedData581to585"

savedModel = "./previous_model"
model_name = "power_model_multistep_" + storedData[-8:]


def callback(lcl, glb):
    # stop training if reward exceeds -30
    is_solved = lcl['t'] > 100 and sum(
        lcl['episode_rewards'][-101:-1]) / 100 >= -30.0
    return is_solved


#    episodes = 0
ipss_app = gateway.entry_point

# case_files = ['testData\\Kundur-2area\\kunder_2area_ver30.raw','testData\\Kundur-2area\\kunder_2area.dyr']
# Need to use the following way to define a String array in Python for Py4J

case_files_array = gateway.new_array(gateway.jvm.String, 2)
case_files_array[
    0] = folder_dir + '\\' + 'testData\\IEEE39\\IEEE39bus_multiloads_xfmr4_smallX_v30.raw'
case_files_array[1] = folder_dir + '\\' + 'testData\\IEEE39\\IEEE39bus_3AC.dyr'

dyn_config_file = folder_dir + '\\' + 'testData\\IEEE39\\json\\IEEE39_dyn_config_v0.65.json'
rl_config_file = folder_dir + '\\' + 'testData\\IEEE39\\json\\IEEE39_RL_loadShedding_3motor_3levels_v0.65.json'

sys.path.append(os.path.join(os.path.dirname(__file__), '..'))
from PowerDynSimEnvDef_v3 import PowerDynSimEnv

actions = [3, 3, 3]
env = PowerDynSimEnv(case_files_array,
                     dyn_config_file,
                     rl_config_file,
                     cnts=actions)

import numpy as np

manual_test()

env.close_connection()

print('test completed')