-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathinit.py
More file actions
84 lines (55 loc) · 2.21 KB
/
Copy pathinit.py
File metadata and controls
84 lines (55 loc) · 2.21 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
from src.WorldModel import Enve
from src.ComputeEngine import DQN_Actor, DoubleDQN_Actor, Linear_Programming, EMA_Online
import torch
import numpy as np
import matplotlib.pyplot as plt
def train_QNetwork(n_games):
game_scores, game_losses = [], []
for i in range(n_games):
observation, reward, done = env.reset()
score, counter = 0, 0
while not env.done:
action = agent.choose_action(observation)
observation_, reward, done = env.step(action)
score += reward
agent.store_transition(observation, action, reward, observation_, done)
agent.learn()
observation = observation_
counter+=1
game_scores.append(score)
avg_score = np.mean(game_scores[-100:], dtype=float)
if i>10:
if (i+1) % 10 == 0:
agent.writer.add_scalar("Avg. Score", avg_score, i+1)
print("Game: {} AvgScore: {:.3f}".format(i+1, avg_score))
agent.writer.add_scalar("Score", score, i)
if (i+1) % 4000 == 0:
agent.save_ckpt(i+1, "{:.3f}".format(avg_score))
agent.writer.close()
def eval_QNetwork(model_path, startIndex=100, endIndex=130, soc=0.6):
observation, reward, done = env.test(startIndex, endIndex, soc)
agent.load_ckpt(model_path)
out = []
out.append(observation)
score=0
while not done:
action = agent.choose_action(observation, test=True)
print(f"Observation: {observation} | Action: {action} ")
observation_, reward, done = env.step(action)
score += reward
out.append(observation_)
observation = observation_
out = np.asarray(out)
return out, score
if __name__ == "__main__":
data_file = "Data/PriceData.csv"
env = Enve(DataFile_path=data_file, max_charge=0.8, min_charge=0.2, rate=0.1, battery_cap=1500, \
strategy_no=3, ema_coeff=-0.05, ema_len=6, max_episode_len=200, min_episode_len=100)
agent = DoubleDQN_Actor(gamma=0.99, epsilon=1, lr=0.001, input_dims=4, batch_size=32, num_actions=3)
train_QNetwork(10_000)
agent = DQN_Actor(gamma=0.99, epsilon=1, lr=0.001, input_dims=4, batch_size=32, num_actions=3)
train_QNetwork(10_000)
print("...done...")
# ema_ = EMA_Online( data_file, maxCharge=0.8, minCharge=0.2, rate=0.1 , batteryCap =100)
# ema_.run(soc=0.6, startIndex=100, endIndex=150, window=6)
# python3 -m tensorboard.main --logdir=~/my/training/dir