#!/usr/bin/env ruby MODELS_DIR = 'models' def save(model_name) require 'date' model_path = File.join(MODELS_DIR, model_name) episode_count = (File.read File.join(model_path, 'episodes_trained')).to_i puts "Found model #{model_name} with episodes #{episode_count} trained!" file_name = "model-#{model_name}-#{episode_count}-#{Time.now.strftime('%Y%m%d-%H%M%S')}.tar.gz" save_path = File.join(MODELS_DIR, 'saves', file_name) puts "Saving to #{save_path}" system("tar", "-cvzf", save_path, "-C", MODELS_DIR, model_name) end def train(model, episodes) system("python3", "main.py", "--train", "--model", model, "--episodes", episodes.to_s) end def force_train(model, episodes) system("python3", "main.py", "--train", "--force-creation", "--model", model, "--episodes", episodes.to_s) end def evaluate(model, episodes, method) system("python3", "main.py", "--eval" , "--model", model, "--episodes", episodes.to_s, "--eval-methods", method) end model = ARGV[0] if model.nil? then raise "no model specified" end if not File.exists? File.join(MODELS_DIR, model) then force_train model, 10 save model 3.times do evaluate model, 250, "pubeval" end 3.times do evaluate model, 250, "dumbeval" end end # while true do # save model # train model, 1000 # save model # train model, 1000 # 3.times do # evaluate model, 250, "pubeval" # end # 3.times do # evaluate model, 250, "dumbeval" # end # end while true do save model train model, 500 5.times do evaluate model, 250, "pubeval" end 5.times do evaluate model, 250, "dumbeval" end end