def test_generate_rollout_gest_best_action(self, env): """Test generate_rollout() uses get_best_action correctly.""" env = Env(mode="train") rollout, _ = env.generate_rollout(get_best_action=lambda x: 0) for _, action, _, _, _ in rollout: assert action == 0
def test_generate_rollout_cost_threshold(self, env, get_best_action): """Test generate_rollout() does not have a cost over 1.""" env = Env(mode="train") rollout, episode_cost = env.generate_rollout(get_best_action=None) for (_, _, cost, _, _) in rollout: assert 0 <= cost <= 1
def test_train_mode_reset(self): """Test reset() in train mode.""" train_env = Env(mode="train") x, x_, theta, theta_ = train_env.reset() assert abs(x) <= 2.3 assert x_ == 0 assert abs(theta) <= 0.3 assert theta_ == 0
def test_generate_rollout_episode_cost(self, env, get_best_action): """Test generate_rollout()'s second return value episode_cost.""" env = Env(mode="train") rollout, episode_cost = env.generate_rollout(get_best_action=None) total_cost = 0 for _, _, cost, _, _ in rollout: total_cost += cost assert episode_cost == total_cost
def test_generate_rollout_next_obs(self, env, get_best_action): """Test generate_rollout() generates continued observation.""" env = Env(mode="train") rollout, episode_cost = env.generate_rollout(get_best_action=None) prev_next_obs = rollout[0][3] for obs, _, _, next_obs, _ in rollout[1:]: assert np.array_equal(prev_next_obs, obs) prev_next_obs = next_obs
def test_eval_mode_reset(self): """Test reset() in eval mode.""" eval_env = Env(mode="eval") x, x_, theta, theta_ = eval_env.reset() assert abs(x) <= 1.0 assert x_ == 0 assert abs(theta) <= 0.3 assert theta_ == 0
def test_generate_rollout_with_random_action_done_value(self, env, get_best_action): """Test done values of generate_rollout()e.""" env = Env(mode="train") rollout, episode_cost = env.generate_rollout(get_best_action) for i, (_, _, _, _, done) in enumerate(rollout): if i + 1 < len(rollout): assert not done else: assert done or len(rollout) == env.max_steps
class TestCartPoleRegulatorEnv: def test_train_mode_reset(self): """Test reset() in train mode.""" train_env = Env(mode="train") x, x_, theta, theta_ = train_env.reset() assert abs(x) <= 2.3 assert x_ == 0 assert abs(theta) <= 0.3 assert theta_ == 0 def test_eval_mode_reset(self): """Test reset() in eval mode.""" eval_env = Env(mode="eval") x, x_, theta, theta_ = eval_env.reset() assert abs(x) <= 1.0 assert x_ == 0 assert abs(theta) <= 0.3 assert theta_ == 0 @pytest.mark.parametrize("env", [Env(mode="train"), Env(mode="eval")]) def test_get_goal_pattern_set(self, env): """Test get_goal_pattern_set().""" goal_state_action_b, goal_target_q_values = env.get_goal_pattern_set() for x, _, theta, _, action in goal_state_action_b: assert abs(x) <= env.x_success_range assert abs(theta) <= env.theta_success_range assert action in [0, 1] for target in goal_target_q_values: assert target == 0 @pytest.mark.parametrize("env", [Env(mode="train"), Env(mode="eval")]) @pytest.mark.parametrize("get_best_action", [None, lambda x: 0]) def test_generate_rollout_next_obs(self, env, get_best_action): """Test generate_rollout() generates continued observation.""" env = Env(mode="train") rollout, episode_cost = env.generate_rollout(get_best_action=None) prev_next_obs = rollout[0][3] for obs, _, _, next_obs, _ in rollout[1:]: assert np.array_equal(prev_next_obs, obs) prev_next_obs = next_obs @pytest.mark.parametrize("env", [Env(mode="train"), Env(mode="eval")]) @pytest.mark.parametrize("get_best_action", [None, lambda x: 0]) def test_generate_rollout_cost_threshold(self, env, get_best_action): """Test generate_rollout() does not have a cost over 1.""" env = Env(mode="train") rollout, episode_cost = env.generate_rollout(get_best_action=None) for (_, _, cost, _, _) in rollout: assert 0 <= cost <= 1 @pytest.mark.parametrize("env", [Env(mode="train"), Env(mode="eval")]) @pytest.mark.parametrize("get_best_action", [None, lambda x: 0]) def test_generate_rollout_episode_cost(self, env, get_best_action): """Test generate_rollout()'s second return value episode_cost.""" env = Env(mode="train") rollout, episode_cost = env.generate_rollout(get_best_action=None) total_cost = 0 for _, _, cost, _, _ in rollout: total_cost += cost assert episode_cost == total_cost @pytest.mark.parametrize("env", [Env(mode="train"), Env(mode="eval")]) @pytest.mark.parametrize("get_best_action", [None, lambda x: 0]) def test_generate_rollout_with_random_action_done_value(self, env, get_best_action): """Test done values of generate_rollout()e.""" env = Env(mode="train") rollout, episode_cost = env.generate_rollout(get_best_action) for i, (_, _, _, _, done) in enumerate(rollout): if i + 1 < len(rollout): assert not done else: assert done or len(rollout) == env.max_steps @pytest.mark.parametrize("env", [Env(mode="train"), Env(mode="eval")]) def test_generate_rollout_gest_best_action(self, env): """Test generate_rollout() uses get_best_action correctly.""" env = Env(mode="train") rollout, _ = env.generate_rollout(get_best_action=lambda x: 0) for _, action, _, _, _ in rollout: assert action == 0
if __name__ == '__main__': T = [] d = 10 #depth to which the MCTS will explore budget = 100 #computational budget gamma = 1 #discount c = math.sqrt(2.0) #parameter controlling amount of exploration debug = True gridSideLength = 4 maxServiceTime = 1 maxCustomersInNbhd = 1 nbhdSideLength = 3 env = Env() # print(env) for i in range(1000): i = i + 1000 root = TaskState(env, debug, gridSideLength, maxServiceTime, maxCustomersInNbhd, nbhdSideLength, obs=i) print(root.state, MCTS(root, d)) print("----------------------------------------------------")
time.sleep(6) logger.info(COMMENT[RANDOM]) # 댓글 작성 #driver.find_element_by_xpath('//*[@id="blog"]/div/mapia-post-comment/div[1]/form/button').send_keys("\n") button = driver.find_element_by_xpath( '/html/body/root-cmp/div/community-detail/div/mp-post-comment/div/ds-textarea/button' ) driver.implicitly_wait(3) button.send_keys(Keys.ENTER) time.sleep(5) logger.info('댓글 작성버튼 눌렀음') url = driver.current_url driver.close() logger.info(url) return url, COMMENT[RANDOM], title if __name__ == '__main__': envs = Env('/app/envs.txt') #envs = Env('./envs.txt') delay_time = random.randrange(0, 10800) now = datetime.datetime.now() logger.info('%s (delay: %s seconds)' % (now, delay_time)) time.sleep(delay_time) try: url, comment, title = crawling(envs.data['MAPIA_EMAIL'], envs.data['MAPIA_PASSWORD']) slack_mapianist(url, comment, title) except Exception as e: slack_mapianist('none', str(e))