Spaces:
Sleeping
Sleeping
implement all actions
Browse files- rlcube/cube.blend +1 -1
- rlcube/rlcube/cube2.py +1 -2
- rlcube/rlcube/envs/cube2.py +24 -1
rlcube/cube.blend
CHANGED
|
@@ -1,3 +1,3 @@
|
|
| 1 |
version https://git-lfs.github.com/spec/v1
|
| 2 |
-
oid sha256:
|
| 3 |
size 1963196
|
|
|
|
| 1 |
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:297bfe1ba114dd5ee6a1bfe2e6f8e73279d77c9e16cdf02e222036fdecabe8db
|
| 3 |
size 1963196
|
rlcube/rlcube/cube2.py
CHANGED
|
@@ -6,8 +6,7 @@ def train():
|
|
| 6 |
obs, _ = env.reset()
|
| 7 |
for i in range(4):
|
| 8 |
# action = env.action_space.sample()
|
| 9 |
-
obs, reward, terminated, truncated, _ = env.step(
|
| 10 |
-
obs, reward, terminated, truncated, _ = env.step(9)
|
| 11 |
print(obs)
|
| 12 |
print("--------------------------------")
|
| 13 |
if terminated or truncated:
|
|
|
|
| 6 |
obs, _ = env.reset()
|
| 7 |
for i in range(4):
|
| 8 |
# action = env.action_space.sample()
|
| 9 |
+
obs, reward, terminated, truncated, _ = env.step(10)
|
|
|
|
| 10 |
print(obs)
|
| 11 |
print("--------------------------------")
|
| 12 |
if terminated or truncated:
|
rlcube/rlcube/envs/cube2.py
CHANGED
|
@@ -14,6 +14,7 @@ class Cube2(gym.Env):
|
|
| 14 |
self.action_space = gym.spaces.Discrete(6)
|
| 15 |
self.observation_space = gym.spaces.Box(low=0, high=1, shape=(24, 6))
|
| 16 |
self.state = np.zeros((6, 2, 2))
|
|
|
|
| 17 |
|
| 18 |
def reset(self, seed=None, options=None):
|
| 19 |
super().reset(seed=seed, options=options)
|
|
@@ -24,9 +25,11 @@ class Cube2(gym.Env):
|
|
| 24 |
self.state[3] = np.ones((2, 2)) * LEFT
|
| 25 |
self.state[4] = np.ones((2, 2)) * UP
|
| 26 |
self.state[5] = np.ones((2, 2)) * DOWN
|
|
|
|
| 27 |
return self.state, {}
|
| 28 |
|
| 29 |
def step(self, action):
|
|
|
|
| 30 |
new_state = self.state.copy()
|
| 31 |
|
| 32 |
# Front Clockwise
|
|
@@ -129,6 +132,26 @@ class Cube2(gym.Env):
|
|
| 129 |
new_state[LEFT, 0, 1] = self.state[BACK, 0, 1]
|
| 130 |
new_state[BACK, 0, 0] = self.state[RIGHT, 0, 0]
|
| 131 |
new_state[BACK, 0, 1] = self.state[RIGHT, 0, 1]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 132 |
|
| 133 |
self.state = new_state
|
| 134 |
-
return self.state, 0, False,
|
|
|
|
| 14 |
self.action_space = gym.spaces.Discrete(6)
|
| 15 |
self.observation_space = gym.spaces.Box(low=0, high=1, shape=(24, 6))
|
| 16 |
self.state = np.zeros((6, 2, 2))
|
| 17 |
+
self.step_count = 0
|
| 18 |
|
| 19 |
def reset(self, seed=None, options=None):
|
| 20 |
super().reset(seed=seed, options=options)
|
|
|
|
| 25 |
self.state[3] = np.ones((2, 2)) * LEFT
|
| 26 |
self.state[4] = np.ones((2, 2)) * UP
|
| 27 |
self.state[5] = np.ones((2, 2)) * DOWN
|
| 28 |
+
self.step_count = 0
|
| 29 |
return self.state, {}
|
| 30 |
|
| 31 |
def step(self, action):
|
| 32 |
+
self.step_count += 1
|
| 33 |
new_state = self.state.copy()
|
| 34 |
|
| 35 |
# Front Clockwise
|
|
|
|
| 132 |
new_state[LEFT, 0, 1] = self.state[BACK, 0, 1]
|
| 133 |
new_state[BACK, 0, 0] = self.state[RIGHT, 0, 0]
|
| 134 |
new_state[BACK, 0, 1] = self.state[RIGHT, 0, 1]
|
| 135 |
+
# Down Clockwise
|
| 136 |
+
if action == 10:
|
| 137 |
+
new_state[FRONT, 1, 0] = self.state[LEFT, 1, 0]
|
| 138 |
+
new_state[FRONT, 1, 1] = self.state[LEFT, 1, 1]
|
| 139 |
+
new_state[LEFT, 1, 0] = self.state[BACK, 1, 0]
|
| 140 |
+
new_state[LEFT, 1, 1] = self.state[BACK, 1, 1]
|
| 141 |
+
new_state[BACK, 1, 0] = self.state[RIGHT, 1, 0]
|
| 142 |
+
new_state[BACK, 1, 1] = self.state[RIGHT, 1, 1]
|
| 143 |
+
new_state[RIGHT, 1, 0] = self.state[FRONT, 1, 0]
|
| 144 |
+
new_state[RIGHT, 1, 1] = self.state[FRONT, 1, 1]
|
| 145 |
+
# Down Counter-Clockwise
|
| 146 |
+
if action == 11:
|
| 147 |
+
new_state[LEFT, 1, 0] = self.state[FRONT, 1, 0]
|
| 148 |
+
new_state[LEFT, 1, 1] = self.state[FRONT, 1, 1]
|
| 149 |
+
new_state[BACK, 1, 0] = self.state[LEFT, 1, 0]
|
| 150 |
+
new_state[BACK, 1, 1] = self.state[LEFT, 1, 1]
|
| 151 |
+
new_state[RIGHT, 1, 0] = self.state[BACK, 1, 0]
|
| 152 |
+
new_state[RIGHT, 1, 1] = self.state[BACK, 1, 1]
|
| 153 |
+
new_state[FRONT, 1, 0] = self.state[RIGHT, 1, 0]
|
| 154 |
+
new_state[FRONT, 1, 1] = self.state[RIGHT, 1, 1]
|
| 155 |
|
| 156 |
self.state = new_state
|
| 157 |
+
return self.state.copy(), 0, False, self.step_count >= 100, {}
|