diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index bc27a4af3928647add254248b384b0fab7041fca..6733cb4aef9458e927831c76ae76382d7e50b595 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -23,10 +23,8 @@ tests: stage: tests script: - apt update - - apt install -y libgl1-mesa-glx xvfb + - apt install -y libgl1-mesa-glx xvfb graphviz xdg-utils libcairo2-dev libjpeg-dev libgif-dev - pip install tox - - apt install -y graphviz xdg-utils - - apt install -y libcairo2-dev libjpeg-dev libgif-dev - xvfb-run tox -v --recreate build_and_deploy_docs: @@ -37,13 +35,13 @@ build_and_deploy_docs: dependencies: - tests before_script: - - pip install awscli - apt update - - apt install -y graphviz libgl1-mesa-glx xvfb xdg-utils - - apt install -y libcairo2-dev libjpeg-dev libgif-dev - - echo "Bucket $BUCKET_NAME ${BUCKET_NAME}" + - apt install -y graphviz libgl1-mesa-glx xvfb xdg-utils libcairo2-dev libjpeg-dev libgif-dev + - pip install awscli script: - - echo "Bucket $BUCKET_NAME ${BUCKET_NAME}" + - echo "Bucket=${BUCKET_NAME}" + - echo "AWS_DEFAULT_REGION=${AWS_DEFAULT_REGION}" + - echo "CI_COMMIT_REF_SLUG=${CI_COMMIT_REF_SLUG}" - pip install -r requirements_dev.txt -r requirements_continuous_integration.txt - python setup.py install - xvfb-run make docs diff --git a/benchmarks/play_model_benchmark.py b/benchmarks/play_model_benchmark.py index a3c087e8ab8ed33a24bd447cd3203b85eb1a28f2..41c15ef0ef1cbbeebcf547ffa967dc9c31fecbe6 100644 --- a/benchmarks/play_model_benchmark.py +++ b/benchmarks/play_model_benchmark.py @@ -1,16 +1,13 @@ import random -import time -from collections import deque import numpy as np from benchmarker import Benchmarker from flatland.envs.generators import complex_rail_generator from flatland.envs.rail_env import RailEnv -from flatland.utils.rendertools import RenderTool -def main(render=True, delay=0.0): +def main(): random.seed(1) np.random.seed(1) @@ -19,18 +16,8 @@ def main(render=True, delay=0.0): rail_generator=complex_rail_generator(nr_start_goal=5, nr_extra=20, min_dist=12), number_of_agents=5) - if render: - env_renderer = RenderTool(env, gl="QTSVG") - n_trials = 20 - eps = 1. - eps_end = 0.005 - eps_decay = 0.998 action_dict = dict() - scores_window = deque(maxlen=100) - done_window = deque(maxlen=100) - scores = [] - dones_list = [] action_prob = [0] * 4 def max_lt(seq, val): @@ -46,82 +33,32 @@ def main(render=True, delay=0.0): idx -= 1 return None - iFrame = 0 - tStart = time.time() for trials in range(1, n_trials + 1): # Reset environment obs = env.reset() - if render: - env_renderer.set_new_rail() for a in range(env.get_num_agents()): norm = max(1, max_lt(obs[a], np.inf)) obs[a] = np.clip(np.array(obs[a]) / norm, -1, 1) - # env.obs_builder.util_print_obs_subtree(tree=obs[0], num_elements_per_node=5) - - score = 0 - env_done = 0 - # Run episode for step in range(100): - # if trials > 114: - # env_renderer.renderEnv(show=True) - # print(step) # Action for a in range(env.get_num_agents()): action = np.random.randint(0, 4) action_prob[action] += 1 action_dict.update({a: action}) - if render: - env_renderer.renderEnv(show=True, frames=True, iEpisode=trials, iStep=step, action_dict=action_dict) - if delay > 0: - time.sleep(delay) - - iFrame += 1 - # Environment step next_obs, all_rewards, done, _ = env.step(action_dict) for a in range(env.get_num_agents()): norm = max(1, max_lt(next_obs[a], np.inf)) next_obs[a] = np.clip(np.array(next_obs[a]) / norm, -1, 1) - # Update replay buffer and train agent - for a in range(env.get_num_agents()): - # agent.step(obs[a], action_dict[a], all_rewards[a], next_obs[a], done[a]) - score += all_rewards[a] - obs = next_obs.copy() if done['__all__']: - env_done = 1 break - # Epsilon decay - eps = max(eps_end, eps_decay * eps) # decrease epsilon - - done_window.append(env_done) - scores_window.append(score) # save most recent score - scores.append(np.mean(scores_window)) - dones_list.append((np.mean(done_window))) - - print(('\rTraining {} Agents.\tEpisode {}\tAverage Score: {:.0f}\tDones: {:.2f}%' + - '\tEpsilon: {:.2f} \t Action Probabilities: \t {}').format( - env.get_num_agents(), - trials, - np.mean(scores_window), - 100 * np.mean(done_window), - eps, action_prob / np.sum(action_prob)), - end=" ") if trials % 100 == 0: - tNow = time.time() - rFps = iFrame / (tNow - tStart) - print(('\rTraining {} Agents.\tEpisode {}\tAverage Score: {:.0f}\tDones: {:.2f}%' + - '\tEpsilon: {:.2f} fps: {:.2f} \t Action Probabilities: \t {}').format( - env.get_num_agents(), - trials, - np.mean(scores_window), - 100 * np.mean(done_window), - eps, rFps, action_prob / np.sum(action_prob))) action_prob = [1] * 4 @@ -129,4 +66,4 @@ if __name__ == "__main__": with Benchmarker(cycle=20, extra=1) as bench: @bench("Everything") def _(bm): - main(render=False, delay=0) + main() diff --git a/setup.py b/setup.py index ce7b232fd005d696bb2803733d455904c75352df..649a4ac69bdf11c8800a571bb067e1ed16141129 100644 --- a/setup.py +++ b/setup.py @@ -21,13 +21,12 @@ with open('HISTORY.rst') as history_file: -# install pycairo +# install pycairo on Windows if os.name == 'nt': p = platform.architecture() is64bit = p[0] == '64bit' if sys.version[0:3] == '3.5': if is64bit: - url = 'https://download.lfd.uci.edu/pythonlibs/t4jqbe6o/pycairo-1.18.0-cp35-cp35m-win_amd64.whl' else: url = 'https://download.lfd.uci.edu/pythonlibs/t4jqbe6o/pycairo-1.18.0-cp35-cp35m-win32.whl' @@ -47,7 +46,7 @@ if os.name == 'nt': try: import pycairo except: - call_cmd = "pip install " + url + call_cmd = "pip install --user " + url os.system(call_cmd) import site