| 
									
										
										
										
											2020-03-21 10:58:01 +08:00
										 |  |  | import time | 
					
						
							| 
									
										
										
										
											2020-06-05 11:17:43 +02:00
										 |  |  | import gym | 
					
						
							|  |  |  | from gym.spaces.discrete import Discrete | 
					
						
							| 
									
										
										
										
											2020-03-21 10:58:01 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class MyTestEnv(gym.Env): | 
					
						
							| 
									
										
										
										
											2020-04-28 20:56:02 +08:00
										 |  |  |     def __init__(self, size, sleep=0, dict_state=False): | 
					
						
							| 
									
										
										
										
											2020-03-21 10:58:01 +08:00
										 |  |  |         self.size = size | 
					
						
							|  |  |  |         self.sleep = sleep | 
					
						
							| 
									
										
										
										
											2020-04-28 20:56:02 +08:00
										 |  |  |         self.dict_state = dict_state | 
					
						
							| 
									
										
										
										
											2020-06-11 08:57:37 +08:00
										 |  |  |         self.action_space = Discrete(2) | 
					
						
							| 
									
										
										
										
											2020-03-21 10:58:01 +08:00
										 |  |  |         self.reset() | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-04-09 19:53:45 +08:00
										 |  |  |     def reset(self, state=0): | 
					
						
							| 
									
										
										
										
											2020-03-21 10:58:01 +08:00
										 |  |  |         self.done = False | 
					
						
							| 
									
										
										
										
											2020-04-09 19:53:45 +08:00
										 |  |  |         self.index = state | 
					
						
							| 
									
										
										
										
											2020-04-28 20:56:02 +08:00
										 |  |  |         return {'index': self.index} if self.dict_state else self.index | 
					
						
							| 
									
										
										
										
											2020-03-21 10:58:01 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  |     def step(self, action): | 
					
						
							|  |  |  |         if self.done: | 
					
						
							|  |  |  |             raise ValueError('step after done !!!') | 
					
						
							|  |  |  |         if self.sleep > 0: | 
					
						
							|  |  |  |             time.sleep(self.sleep) | 
					
						
							|  |  |  |         if self.index == self.size: | 
					
						
							|  |  |  |             self.done = True | 
					
						
							| 
									
										
										
										
											2020-04-28 20:56:02 +08:00
										 |  |  |             if self.dict_state: | 
					
						
							|  |  |  |                 return {'index': self.index}, 0, True, {} | 
					
						
							|  |  |  |             else: | 
					
						
							|  |  |  |                 return self.index, 0, True, {} | 
					
						
							| 
									
										
										
										
											2020-03-21 10:58:01 +08:00
										 |  |  |         if action == 0: | 
					
						
							|  |  |  |             self.index = max(self.index - 1, 0) | 
					
						
							| 
									
										
										
										
											2020-04-28 20:56:02 +08:00
										 |  |  |             if self.dict_state: | 
					
						
							| 
									
										
										
										
											2020-06-01 08:30:09 +08:00
										 |  |  |                 return {'index': self.index}, 0, False, {'key': 1, 'env': self} | 
					
						
							| 
									
										
										
										
											2020-04-28 20:56:02 +08:00
										 |  |  |             else: | 
					
						
							|  |  |  |                 return self.index, 0, False, {} | 
					
						
							| 
									
										
										
										
											2020-03-21 10:58:01 +08:00
										 |  |  |         elif action == 1: | 
					
						
							|  |  |  |             self.index += 1 | 
					
						
							|  |  |  |             self.done = self.index == self.size | 
					
						
							| 
									
										
										
										
											2020-04-28 20:56:02 +08:00
										 |  |  |             if self.dict_state: | 
					
						
							|  |  |  |                 return {'index': self.index}, int(self.done), self.done, \ | 
					
						
							| 
									
										
										
										
											2020-06-01 08:30:09 +08:00
										 |  |  |                     {'key': 1, 'env': self} | 
					
						
							| 
									
										
										
										
											2020-04-28 20:56:02 +08:00
										 |  |  |             else: | 
					
						
							| 
									
										
										
										
											2020-06-01 08:30:09 +08:00
										 |  |  |                 return self.index, int(self.done), self.done, \ | 
					
						
							|  |  |  |                     {'key': 1, 'env': self} |