Skip to content

Commit

Permalink
Add log
Browse files Browse the repository at this point in the history
  • Loading branch information
jakvah committed Jul 8, 2020
1 parent 49d6b77 commit 1c44b09
Show file tree
Hide file tree
Showing 4 changed files with 85 additions and 59 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -4,3 +4,4 @@ __pycache__/
/gym-drill/gym_drill.egg-info
*.pyc
videos/
*.txt
3 changes: 2 additions & 1 deletion gym-drill/gym_drill/envs/ObservationSpace.py
Original file line number Diff line number Diff line change
Expand Up @@ -106,11 +106,12 @@ def get_space_box(self):
lower = np.append(lower,[self.hazard_bound_x[0],self.hazard_bound_y[0],self.hazard_bound_r[0]])
upper = np.append(upper,[self.hazard_bound_x[1],self.hazard_bound_y[1],self.hazard_bound_r[1]])

"""
print("Lower bounds have length: ",str(len(lower))," and look like this")
print(lower)
print("Upper bounds have length: ",str(len(upper))," and look like this:")
print(upper)

"""
return spaces.Box(lower,upper,dtype=np.float64)

"""
Expand Down
138 changes: 81 additions & 57 deletions gym-drill/gym_drill/envs/drill_env.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
from gym.utils import seeding
import numpy as np
import matplotlib.pyplot as plt
from datetime import datetime

# Our own libs
from gym_drill.envs.Coordinate import Coordinate
Expand Down Expand Up @@ -85,18 +86,20 @@ def __init__(self,startLocation,bitInitialization,*,activate_hazards=False):

self.seed()
self.viewer = None
self.state = self.get_state()

self.state = self.get_state()

# Log related
self.episode_counter = 0 # Used to write to log
self.total_reward = 0
_init_log()

def seed(self, seed=None):
self.np_random, seed = seeding.np_random(seed)
return [seed]

def step(self, action):

done = False

done = False
self.update_bit(action)

reward = -1.0 #step-penalty

# Maybe create an entire function that handles all rewards, and call it here?
Expand Down Expand Up @@ -147,7 +150,7 @@ def step(self, action):
reward += reward_factor * 7

self.state = self.get_state()

self.total_reward += reward
return np.array(self.state), reward, done, {}

# For encapsulation. Updates the bit according to the action
Expand Down Expand Up @@ -185,6 +188,11 @@ def get_state(self):
return tuple(state_list)

def reset(self):
# Save previous run to log
self.write_to_log()
self.episode_counter += 1
self.total_reward = 0

self.bitLocation.x = self.start_x
self.bitLocation.y = self.start_y

Expand Down Expand Up @@ -212,58 +220,18 @@ def reset(self):
self.observation_space = self.observation_space_container.get_space_box()

self.state = self.get_state()

return np.array(self.state)


"""
def render(self, mode='human'):
screen_width = SCREEN_X
screen_height = SCREEN_Y
from gym.envs.classic_control import rendering
if self.viewer is None:
#from gym.envs.classic_control import rendering
self.viewer = rendering.Viewer(screen_width, screen_height)
# Create drill bit
self.bittrans = rendering.Transform()
self.dbit = rendering.make_circle(6)
self.dbit.set_color(0.5, 0.5, 0.5)
self.dbit.add_attr(self.bittrans)
self.viewer.add_geom(self.dbit)
# Draw target ball
for target in self.targets:
targetCenter = target[0]
targetRadius = target[1]
self.tballtrans = rendering.Transform()
self.tball = rendering.make_circle(targetRadius)
self.tball.set_color(0, 0, 0)
self.tball.add_attr(self.tballtrans)
self.viewer.add_geom(self.tball)
self.tballtrans.set_translation(targetCenter.x, targetCenter.y)
# Update position of drill on screen
this_state = self.state
self.bittrans.set_translation(this_state[0], this_state[1])
# Every iteration add a new tracing point
self.new_trans = rendering.Transform()
self.new_trans.set_translation(this_state[0], this_state[1])
self.new_point = rendering.make_circle(2)
self.new_point.set_color(0.5, 0.5, 0.5)
self.new_point.add_attr(self.new_trans)
self.viewer.add_geom(self.new_point)
return self.viewer.render(return_rgb_array = mode=='rgb_array')
"""


def write_to_log(self,*,filename="drill_log.txt"):
f = open(filename,"a")
text = "Episode nr: " +str(self.episode_counter) + " lasted for " + str(len(self.step_history)) + " steps. My total reward was: " + str(self.total_reward) +"\n"

f.write(text)
f.close()
print("Log updated!")

def close(self):
if self.viewer:
self.viewer.close()
Expand Down Expand Up @@ -321,6 +289,62 @@ def display_environment(self):
plt.title("Well trajectory path")
plt.legend()
plt.show()


"""
def render(self, mode='human'):
screen_width = SCREEN_X
screen_height = SCREEN_Y
from gym.envs.classic_control import rendering
if self.viewer is None:
#from gym.envs.classic_control import rendering
self.viewer = rendering.Viewer(screen_width, screen_height)
# Create drill bit
self.bittrans = rendering.Transform()
self.dbit = rendering.make_circle(6)
self.dbit.set_color(0.5, 0.5, 0.5)
self.dbit.add_attr(self.bittrans)
self.viewer.add_geom(self.dbit)
# Draw target ball
for target in self.targets:
targetCenter = target[0]
targetRadius = target[1]
self.tballtrans = rendering.Transform()
self.tball = rendering.make_circle(targetRadius)
self.tball.set_color(0, 0, 0)
self.tball.add_attr(self.tballtrans)
self.viewer.add_geom(self.tball)
self.tballtrans.set_translation(targetCenter.x, targetCenter.y)
# Update position of drill on screen
this_state = self.state
self.bittrans.set_translation(this_state[0], this_state[1])
# Every iteration add a new tracing point
self.new_trans = rendering.Transform()
self.new_trans.set_translation(this_state[0], this_state[1])
self.new_point = rendering.make_circle(2)
self.new_point.set_color(0.5, 0.5, 0.5)
self.new_point.add_attr(self.new_trans)
self.viewer.add_geom(self.new_point)
return self.viewer.render(return_rgb_array = mode=='rgb_array')
"""

def _init_log(*,filename="drill_log.txt"):
f = open(filename,"w")
init_msg = "Log for training session started at " + str(datetime.now()) +"\n \n"
f.write(init_msg)
f.close()
print("Log created!")


# Returns an ordered list of randomly generated targets within the bounds given.
Expand Down
2 changes: 1 addition & 1 deletion gym-drill/main_no_training.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ def get_action(self):
return action

agent = Agent(env)
state = env.reset()
#state = env.reset()

for episode in range(10):
done= False
Expand Down

0 comments on commit 1c44b09

Please sign in to comment.