├── src └── DDPG_HER │ ├── 202001021123_HER │ ├── reward.png │ ├── Models │ │ ├── 0_actor.pt │ │ ├── 0_critic.pt │ │ ├── 99_actor.pt │ │ ├── 198_actor.pt │ │ ├── 198_critic.pt │ │ └── 99_critic.pt │ └── log.log │ ├── __pycache__ │ ├── model.cpython-36.pyc │ ├── train.cpython-36.pyc │ ├── utils.cpython-36.pyc │ ├── buffer.cpython-36.pyc │ ├── evaluate.cpython-36.pyc │ ├── trainer.cpython-36.pyc │ ├── arguments.cpython-36.pyc │ └── plot_tools.cpython-36.pyc │ ├── README.md │ ├── buffer.py │ ├── plot_tools.py │ ├── evaluate.py │ ├── arguments.py │ ├── main.py │ ├── model.py │ ├── utils.py │ ├── train.py │ └── trainer.py └── README.md /src/DDPG_HER/202001021123_HER/reward.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/onewarmheart/IntelligentControl/HEAD/src/DDPG_HER/202001021123_HER/reward.png -------------------------------------------------------------------------------- /src/DDPG_HER/__pycache__/model.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/onewarmheart/IntelligentControl/HEAD/src/DDPG_HER/__pycache__/model.cpython-36.pyc -------------------------------------------------------------------------------- /src/DDPG_HER/__pycache__/train.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/onewarmheart/IntelligentControl/HEAD/src/DDPG_HER/__pycache__/train.cpython-36.pyc -------------------------------------------------------------------------------- /src/DDPG_HER/__pycache__/utils.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/onewarmheart/IntelligentControl/HEAD/src/DDPG_HER/__pycache__/utils.cpython-36.pyc -------------------------------------------------------------------------------- /src/DDPG_HER/202001021123_HER/Models/0_actor.pt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/onewarmheart/IntelligentControl/HEAD/src/DDPG_HER/202001021123_HER/Models/0_actor.pt -------------------------------------------------------------------------------- /src/DDPG_HER/202001021123_HER/Models/0_critic.pt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/onewarmheart/IntelligentControl/HEAD/src/DDPG_HER/202001021123_HER/Models/0_critic.pt -------------------------------------------------------------------------------- /src/DDPG_HER/202001021123_HER/Models/99_actor.pt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/onewarmheart/IntelligentControl/HEAD/src/DDPG_HER/202001021123_HER/Models/99_actor.pt -------------------------------------------------------------------------------- /src/DDPG_HER/__pycache__/buffer.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/onewarmheart/IntelligentControl/HEAD/src/DDPG_HER/__pycache__/buffer.cpython-36.pyc -------------------------------------------------------------------------------- /src/DDPG_HER/__pycache__/evaluate.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/onewarmheart/IntelligentControl/HEAD/src/DDPG_HER/__pycache__/evaluate.cpython-36.pyc -------------------------------------------------------------------------------- /src/DDPG_HER/__pycache__/trainer.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/onewarmheart/IntelligentControl/HEAD/src/DDPG_HER/__pycache__/trainer.cpython-36.pyc -------------------------------------------------------------------------------- /src/DDPG_HER/202001021123_HER/Models/198_actor.pt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/onewarmheart/IntelligentControl/HEAD/src/DDPG_HER/202001021123_HER/Models/198_actor.pt -------------------------------------------------------------------------------- /src/DDPG_HER/202001021123_HER/Models/198_critic.pt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/onewarmheart/IntelligentControl/HEAD/src/DDPG_HER/202001021123_HER/Models/198_critic.pt -------------------------------------------------------------------------------- /src/DDPG_HER/202001021123_HER/Models/99_critic.pt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/onewarmheart/IntelligentControl/HEAD/src/DDPG_HER/202001021123_HER/Models/99_critic.pt -------------------------------------------------------------------------------- /src/DDPG_HER/__pycache__/arguments.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/onewarmheart/IntelligentControl/HEAD/src/DDPG_HER/__pycache__/arguments.cpython-36.pyc -------------------------------------------------------------------------------- /src/DDPG_HER/__pycache__/plot_tools.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/onewarmheart/IntelligentControl/HEAD/src/DDPG_HER/__pycache__/plot_tools.cpython-36.pyc -------------------------------------------------------------------------------- /src/DDPG_HER/README.md: -------------------------------------------------------------------------------- 1 | The scripts is based on @vy007vikas's [repo](https://github.com/vy007vikas/PyTorch-ActorCriticRL). 2 | With defual hyperparameters, run this 3 | python main.py 4 | 5 | If you want to cancel HER to compare performance with DDPG, run this 6 | python main.py -her False 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # IntelligentControl 2 | Intelligent control algorithm and simulation environments.(TO DO) 3 | 4 | To see the articles, follow us on zhihu.com, here is the [special column](https://zhuanlan.zhihu.com/ml-control). 5 | 6 | ## Algorithm: 7 | 8 | **1.Reinforcement learning** 9 |  (1)DDPG 10 |  (2)DDPG+HER 11 |  (3)PPO 12 |  (4)SAC 13 | 14 | **2.Model predictive control** 15 |  (1)Daynamic matrix control 16 |  (2)General Predictive Control 17 | 18 | **3.Iterative learning control** 19 | 20 | ## Environment: 21 | 22 | **1.Linear system** 23 | 24 | **2.Nonlinear system** 25 | 26 | -------------------------------------------------------------------------------- /src/DDPG_HER/buffer.py: -------------------------------------------------------------------------------- 1 | import numpy as np 2 | import random 3 | from collections import deque 4 | 5 | 6 | class MemoryBuffer: 7 | 8 | def __init__(self, size): 9 | self.buffer = deque(maxlen=size) 10 | self.maxSize = size 11 | self.len = 0 12 | 13 | def sample(self, count): 14 | """ 15 | samples a random batch from the replay memory buffer 16 | :param count: batch size 17 | :return: batch (numpy array) 18 | """ 19 | batch = [] 20 | count = min(count, self.len) 21 | batch = random.sample(self.buffer, count) 22 | 23 | s_arr = np.float32([arr[0] for arr in batch]) 24 | a_arr = np.float32([arr[1] for arr in batch]) 25 | r_arr = np.float32([arr[2] for arr in batch]) 26 | s1_arr = np.float32([arr[3] for arr in batch]) 27 | 28 | return s_arr, a_arr, r_arr, s1_arr 29 | 30 | def len(self): 31 | return self.len 32 | 33 | def add(self, s, a, r, s1): 34 | """ 35 | adds a particular transaction in the memory buffer 36 | :param s: current state 37 | :param a: action taken 38 | :param r: reward received 39 | :param s1: next state 40 | :return: 41 | """ 42 | transition = (s,a,r,s1) 43 | self.len += 1 44 | if self.len > self.maxSize: 45 | self.len = self.maxSize 46 | self.buffer.append(transition) 47 | -------------------------------------------------------------------------------- /src/DDPG_HER/plot_tools.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | """ 3 | Created on Tue Dec 24 15:01:10 2019 4 | 5 | @author: Hill 6 | """ 7 | 8 | import matplotlib.pyplot as plt 9 | 10 | 11 | 12 | def plot_reward( reward, dir_name): 13 | plt.figure(3) 14 | plt.plot(reward,'r') 15 | plt.title('reward') 16 | plt.grid() 17 | plt.savefig(dir_name + '/reward.png') 18 | 19 | def plot_loss_critic( loss, dir_name): 20 | plt.figure(4) 21 | plt.plot() 22 | plt.plot(loss,'b') 23 | plt.grid() 24 | plt.title('loss_critic') 25 | plt.xlabel('episode') 26 | plt.savefig(dir_name + '/c_loss.png') 27 | 28 | def plot_loss_actor(loss, dir_name): 29 | plt.figure(5) 30 | plt.plot() 31 | plt.plot(loss,'b') 32 | plt.grid() 33 | plt.title('loss_actor') 34 | plt.xlabel('episode') 35 | plt.savefig(dir_name + '/a_loss.png') 36 | 37 | def plot_noise(noise, dir_name): 38 | plt.figure(6) 39 | plt.plot(noise) 40 | plt.title('noise') 41 | plt.grid() 42 | plt.savefig(dir_name + '/noise.png') 43 | 44 | def plot_control_perform(test_signal, process_output, process_input, dir_name): 45 | plt.figure(1) 46 | plt.plot(test_signal, 'r', process_output,'g',process_input,'b') 47 | label =['target', 'output','input'] 48 | plt.grid() 49 | plt.legend(label, loc=0) 50 | plt.savefig(dir_name + '/perform.png') 51 | 52 | def plot_output(outputs, dir_name): 53 | plt.figure(7) 54 | plt.plot(outputs) 55 | plt.title('outputs') 56 | plt.grid() 57 | plt.savefig(dir_name + '/output_memory.png') -------------------------------------------------------------------------------- /src/DDPG_HER/evaluate.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | """ 3 | Created on Tue Dec 24 16:31:57 2019 4 | 5 | @author: Hill 6 | """ 7 | 8 | import gc 9 | import psutil 10 | import numpy as np 11 | import logging 12 | def evaluating(args, env, agent, episode): 13 | # logging.basicConfig(filename=args.dir_name + '/her.log',level=logging.DEBUG,filemode='w') 14 | if(args.mode == 'test'): 15 | agent.load_models(args.load_path, episode) 16 | observation = env.reset() 17 | ep_r = 0 18 | for r in range(args.max_steps): 19 | if(args.render): env.render() 20 | state = np.float32(observation) 21 | action = agent.get_exploitation_action(state) 22 | 23 | new_observation, reward, done, info = env.step(action) 24 | 25 | ep_r = ep_r + reward 26 | 27 | observation = new_observation 28 | 29 | if done: 30 | break 31 | 32 | print("One episode test's Return: {}".format(ep_r)) 33 | logging.info("One episode test's Return: {}".format(ep_r)) 34 | 35 | def her_evaluating(args, env, agent, episode): 36 | # set goals 37 | pendulum_goal = np.array([1.0, 0.0, 0.0], dtype = np.float32) 38 | goals = pendulum_goal 39 | 40 | if(args.mode == 'test'): 41 | agent.load_models(args.load_path, episode) 42 | observation = env.reset() 43 | ep_r = 0 44 | for r in range(args.max_steps): 45 | if(args.render): env.render() 46 | state = np.float32(observation) 47 | # concat goals 48 | state = np.concatenate((state, goals)) 49 | action = agent.get_exploitation_action(state) 50 | 51 | new_observation, reward, done, info = env.step(action) 52 | 53 | ep_r = ep_r + reward 54 | 55 | observation = new_observation 56 | 57 | 58 | if done: 59 | break 60 | 61 | print("One episode test's Return: {}".format(ep_r)) 62 | logging.info("One episode test's Return: {}".format(ep_r)) 63 | 64 | return ep_r -------------------------------------------------------------------------------- /src/DDPG_HER/arguments.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | """ 3 | Created on Tue Dec 24 16:36:16 2019 4 | 5 | @author: Hill 6 | """ 7 | 8 | import argparse 9 | 10 | 11 | def get_args(): 12 | parser = argparse.ArgumentParser() 13 | # mode = 'train' or 'test' 14 | parser.add_argument('--mode', default='train', type=str) 15 | parser.add_argument('--dir_name', default='HER', type=str) 16 | # ['Pendulum-v0'] 17 | parser.add_argument("--env_name", default="Pendulum-v0") 18 | parser.add_argument("--unwrapped", default=True, type = bool) 19 | parser.add_argument("--HER", default=True, type = bool ) 20 | parser.add_argument("--HER_sample_num", default=4, type = int ) 21 | parser.add_argument('--tau', default=0.001, type=float) # target smoothing coefficient 22 | parser.add_argument('--target_update_interval', default=1, type=int) 23 | parser.add_argument('--evaluate_interval', default=10, type=int) 24 | # parser.add_argument('--test_iteration', default=10, type=int) 25 | parser.add_argument('--batch_size', default=128, type=int) 26 | parser.add_argument('--learning_rate', default=0.001, type=float) 27 | parser.add_argument('--buffer_size', default=1000000, type=int) 28 | parser.add_argument('--max_episodes', default=200, type=int) 29 | parser.add_argument('--max_steps', default=200, type=int) # num of games 30 | parser.add_argument('--gamma', default=0.99, type=int) # discounted factor 31 | parser.add_argument('--seed', default=True, type=bool) 32 | parser.add_argument('--random_seed', default=4, type=int) 33 | parser.add_argument('--load_path', default='HER', type=str) 34 | # optional parameters 35 | parser.add_argument('--render', default=False, type=bool) # show UI or not 36 | parser.add_argument('--log_interval', default=50, type=int) # 37 | # parser.add_argument('--load', default=False, type=bool) # load model 38 | parser.add_argument('--render_interval', default=100, type=int) # after render_interval, the env.render() will work 39 | parser.add_argument('--exploration_noise', default="ou", type=str) 40 | parser.add_argument('--update_iteration', default=10, type=int) 41 | parser.add_argument('--visdom', default=False, type=bool) 42 | args = parser.parse_args() 43 | 44 | return args -------------------------------------------------------------------------------- /src/DDPG_HER/main.py: -------------------------------------------------------------------------------- 1 | from __future__ import division 2 | 3 | import numpy as np 4 | import os 5 | import gym 6 | 7 | from train import training, her_training 8 | from evaluate import evaluating 9 | import trainer 10 | import buffer 11 | from arguments import get_args 12 | import torch 13 | import time 14 | import random 15 | from datetime import datetime 16 | 17 | import logging 18 | 19 | 20 | 21 | def run(args, env, agent, ram, env_params): 22 | if args.mode == 'train' and (not args.HER): 23 | training(args, env, agent, ram, env_params) 24 | elif args.mode == 'train' and args.HER: 25 | her_training(args, env, agent, ram, env_params) 26 | else: 27 | evaluating(args, env, agent, args.max_episodes - 1) 28 | 29 | 30 | 31 | if __name__ == "__main__": 32 | 33 | # get params 34 | args = get_args() 35 | 36 | # create save directory 37 | dt = datetime.fromtimestamp(int(time.time())) 38 | args.dir_name = dt.strftime('%Y%m%d%H%M') + '_' + args.dir_name 39 | os.mkdir(args.dir_name) 40 | 41 | # create environment 42 | env = gym.make(args.env_name) 43 | if args.unwrapped: env = env.unwrapped 44 | env_params = { 45 | 'state_dim' : env.observation_space.shape[0], 46 | 'action_dim' : env.action_space.shape[0], 47 | 'action_max' : float(env.action_space.high[0]) 48 | } 49 | print(' State Dimensions :- ', env_params['state_dim']) 50 | print(' Action Dimensions :- ', env_params['action_dim']) 51 | print(' Action Max :- ', env_params['action_max']) 52 | 53 | # fix seed 54 | if args.seed: 55 | env.seed(args.random_seed) 56 | torch.manual_seed(args.random_seed) 57 | np.random.seed(args.random_seed) 58 | random.seed(args.random_seed) 59 | 60 | # initialize memory buffer 61 | ram = buffer.MemoryBuffer(args.buffer_size) 62 | 63 | # initialize agent 64 | agent = trainer.Trainer(args, 65 | env_params['state_dim'] if not args.HER else env_params['state_dim']*2, 66 | env_params['action_dim'], 67 | env_params['action_max'], ram) 68 | 69 | # config logging 70 | logging.basicConfig(filename=args.dir_name + '/log.log',level=logging.DEBUG,filemode='w') 71 | 72 | try: 73 | run(args, env, agent, ram, env_params) 74 | finally: 75 | # end logging 76 | logging.shutdown() 77 | print("Completed!") 78 | 79 | -------------------------------------------------------------------------------- /src/DDPG_HER/model.py: -------------------------------------------------------------------------------- 1 | import torch 2 | import torch.nn as nn 3 | import torch.nn.functional as F 4 | import numpy as np 5 | 6 | EPS = 0.003 7 | 8 | def fanin_init(size, fanin=None): 9 | fanin = fanin or size[0] 10 | v = 1. / np.sqrt(fanin) 11 | return torch.Tensor(size).uniform_(-v, v) 12 | 13 | class Critic(nn.Module): 14 | 15 | def __init__(self, state_dim, action_dim): 16 | """ 17 | :param state_dim: Dimension of input state (int) 18 | :param action_dim: Dimension of input action (int) 19 | :return: 20 | """ 21 | super(Critic, self).__init__() 22 | 23 | self.state_dim = state_dim 24 | self.action_dim = action_dim 25 | 26 | self.fcs1 = nn.Linear(state_dim,256) 27 | self.fcs1.weight.data = fanin_init(self.fcs1.weight.data.size()) 28 | self.fcs2 = nn.Linear(256,128) 29 | self.fcs2.weight.data = fanin_init(self.fcs2.weight.data.size()) 30 | 31 | self.fca1 = nn.Linear(action_dim,128) 32 | self.fca1.weight.data = fanin_init(self.fca1.weight.data.size()) 33 | 34 | self.fc2 = nn.Linear(256,128) 35 | self.fc2.weight.data = fanin_init(self.fc2.weight.data.size()) 36 | 37 | self.fc3 = nn.Linear(128,1) 38 | self.fc3.weight.data.uniform_(-EPS,EPS) 39 | 40 | def forward(self, state, action): 41 | """ 42 | returns Value function Q(s,a) obtained from critic network 43 | :param state: Input state (Torch Variable : [n,state_dim] ) 44 | :param action: Input Action (Torch Variable : [n,action_dim] ) 45 | :return: Value function : Q(S,a) (Torch Variable : [n,1] ) 46 | """ 47 | s1 = F.relu(self.fcs1(state)) 48 | s2 = F.relu(self.fcs2(s1)) 49 | a1 = F.relu(self.fca1(action)) 50 | x = torch.cat((s2,a1),dim=1) 51 | 52 | x = F.relu(self.fc2(x)) 53 | x = self.fc3(x) 54 | 55 | return x 56 | 57 | 58 | class Actor(nn.Module): 59 | 60 | def __init__(self, state_dim, action_dim, action_lim): 61 | """ 62 | :param state_dim: Dimension of input state (int) 63 | :param action_dim: Dimension of output action (int) 64 | :param action_lim: Used to limit action in [-action_lim,action_lim] 65 | :return: 66 | """ 67 | super(Actor, self).__init__() 68 | 69 | self.state_dim = state_dim 70 | self.action_dim = action_dim 71 | self.action_lim = action_lim 72 | 73 | self.fc1 = nn.Linear(state_dim,256) 74 | self.fc1.weight.data = fanin_init(self.fc1.weight.data.size()) 75 | 76 | self.fc2 = nn.Linear(256,128) 77 | self.fc2.weight.data = fanin_init(self.fc2.weight.data.size()) 78 | 79 | self.fc3 = nn.Linear(128,64) 80 | self.fc3.weight.data = fanin_init(self.fc3.weight.data.size()) 81 | 82 | self.fc4 = nn.Linear(64,action_dim) 83 | self.fc4.weight.data.uniform_(-EPS,EPS) 84 | 85 | def forward(self, state): 86 | """ 87 | returns policy function Pi(s) obtained from actor network 88 | this function is a gaussian prob distribution for all actions 89 | with mean lying in (-1,1) and sigma lying in (0,1) 90 | The sampled action can , then later be rescaled 91 | :param state: Input state (Torch Variable : [n,state_dim] ) 92 | :return: Output action (Torch Variable: [n,action_dim] ) 93 | """ 94 | x = F.relu(self.fc1(state)) 95 | x = F.relu(self.fc2(x)) 96 | x = F.relu(self.fc3(x)) 97 | action = F.tanh(self.fc4(x)) 98 | 99 | action = action * self.action_lim 100 | 101 | return action 102 | 103 | 104 | 105 | -------------------------------------------------------------------------------- /src/DDPG_HER/utils.py: -------------------------------------------------------------------------------- 1 | import numpy as np 2 | import torch 3 | import shutil 4 | import torch.autograd as Variable 5 | import random 6 | 7 | def soft_update(target, source, tau): 8 | """ 9 | Copies the parameters from source network (x) to target network (y) using the below update 10 | y = TAU*x + (1 - TAU)*y 11 | :param target: Target network (PyTorch) 12 | :param source: Source network (PyTorch) 13 | :return: 14 | """ 15 | for target_param, param in zip(target.parameters(), source.parameters()): 16 | target_param.data.copy_( 17 | target_param.data * (1.0 - tau) + param.data * tau 18 | ) 19 | 20 | 21 | def hard_update(target, source): 22 | """ 23 | Copies the parameters from source network to target network 24 | :param target: Target network (PyTorch) 25 | :param source: Source network (PyTorch) 26 | :return: 27 | """ 28 | for target_param, param in zip(target.parameters(), source.parameters()): 29 | target_param.data.copy_(param.data) 30 | 31 | 32 | def save_training_checkpoint(state, is_best, episode_count): 33 | """ 34 | Saves the models, with all training parameters intact 35 | :param state: 36 | :param is_best: 37 | :param filename: 38 | :return: 39 | """ 40 | filename = str(episode_count) + 'checkpoint.path.rar' 41 | torch.save(state, filename) 42 | if is_best: 43 | shutil.copyfile(filename, 'model_best.pth.tar') 44 | 45 | 46 | # Based on http://math.stackexchange.com/questions/1287634/implementing-ornstein-uhlenbeck-in-matlab 47 | class OrnsteinUhlenbeckActionNoise: 48 | 49 | def __init__(self, action_dim, mu = 0, theta = 0.15, sigma = 0.2): 50 | self.action_dim = action_dim 51 | self.mu = mu 52 | self.theta = theta 53 | self.sigma = sigma 54 | self.X = np.ones(self.action_dim) * self.mu 55 | 56 | def reset(self): 57 | self.X = np.ones(self.action_dim) * self.mu 58 | 59 | def sample(self): 60 | dx = self.theta * (self.mu - self.X) 61 | dx = dx + self.sigma * np.random.randn(len(self.X)) 62 | self.X = self.X + dx 63 | return self.X 64 | 65 | 66 | # use this to plot Ornstein Uhlenbeck random motion 67 | if __name__ == '__main__': 68 | ou = OrnsteinUhlenbeckActionNoise(1) 69 | states = [] 70 | for i in range(1000): 71 | states.append(ou.sample()) 72 | import matplotlib.pyplot as plt 73 | 74 | plt.plot(states) 75 | plt.show() 76 | 77 | # helper functions for her's training 78 | 79 | def generate_goals(i, episode_cache, sample_num, sample_range = 200): 80 | ''' 81 | Input: current steps, current episode transition's cache, sample number 82 | Return: new goals sets 83 | notice here only "future" sample policy 84 | ''' 85 | end = (i+sample_range) if i+sample_range < len(episode_cache) else len(episode_cache) 86 | epi_to_go = episode_cache[i:end] 87 | if len(epi_to_go) < sample_num: 88 | sample_trans = epi_to_go 89 | else: 90 | sample_trans = random.sample(epi_to_go, sample_num) 91 | return [np.array(trans[3][:3]) for trans in sample_trans] 92 | 93 | def calcu_reward(new_goal, state, action, mode='her'): 94 | # direcly use observation as goal 95 | 96 | if mode == 'shaping': 97 | # shaping reward 98 | goal_cos, goal_sin, goal_thdot = new_goal[0], new_goal[1], new_goal[2] 99 | cos_th, sin_th, thdot = state[0], state[1], state[2] 100 | costs = (goal_cos - cos_th)**2 + (goal_sin - sin_th)**2 + 0.1*(goal_thdot-thdot)**2 101 | reward = -costs 102 | elif mode == 'her': 103 | # binary reward, no theta now 104 | tolerance = 0.5 105 | goal_cos, goal_sin, goal_thdot = new_goal[0], new_goal[1], new_goal[2] 106 | cos_th, sin_th, thdot = state[0], state[1], state[2] 107 | costs = (goal_cos - cos_th)**2 + (goal_sin - sin_th)**2 + 0.1*(goal_thdot-thdot)**2 108 | reward = 0 if costs < tolerance else -1 109 | return reward 110 | 111 | def gene_new_sas(new_goals, transition): 112 | state, new_state = transition[0][:3], transition[3][:3] 113 | action = transition[1] 114 | state = np.concatenate((state, new_goals)) 115 | new_state = np.concatenate((new_state, new_goals)) 116 | return state, action, new_state 117 | 118 | #def angle_normalize(x): 119 | # return (((x+np.pi) % (2*np.pi)) - np.pi) -------------------------------------------------------------------------------- /src/DDPG_HER/train.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | """ 3 | Created on Tue Dec 24 16:26:13 2019 4 | 5 | @author: Hill 6 | """ 7 | 8 | 9 | import numpy as np 10 | from plot_tools import plot_reward 11 | 12 | import gc 13 | import psutil 14 | import logging 15 | import random 16 | 17 | from evaluate import evaluating, her_evaluating 18 | from utils import generate_goals, calcu_reward, gene_new_sas 19 | 20 | def training(args, env, agent, ram, env_params): 21 | 22 | return_history = [] 23 | for _ep in range(args.max_episodes): 24 | # if(_ep % args.evaluate_interval == 0): 25 | # evaluating(args, env, agent, 0) 26 | 27 | observation = env.reset() 28 | print('EPISODE :- ', _ep) 29 | ep_r = 0 30 | 31 | for r in range(args.max_steps): 32 | # env.render() 33 | state = np.float32(observation) 34 | # state = observation 35 | action = agent.get_exploration_action(state) 36 | 37 | new_observation, reward, done, info = env.step(action) 38 | 39 | ep_r = ep_r + reward 40 | 41 | 42 | if done: 43 | new_state = None 44 | else: 45 | # new_state = new_observation 46 | new_state = np.float32(new_observation) 47 | # push this exp in ram 48 | ram.add(state, action, reward, new_state) 49 | 50 | observation = new_observation 51 | 52 | # perform optimization 53 | agent.optimize() 54 | if done: 55 | break 56 | 57 | print("Episode: {} | Return: {}".format(_ep, ep_r)) 58 | logging.info("Episode: {} | Return: {}".format(_ep, ep_r)) 59 | return_history.append(ep_r) 60 | # check memory consumption and clear memory 61 | gc.collect() 62 | # process = psutil.Process(os.getpid()) 63 | # print(process.memory_info().rss) 64 | 65 | if _ep == 0 or _ep % 99 == 0: 66 | agent.save_models(args.dir_name, _ep) 67 | plot_reward(return_history, args.dir_name) 68 | 69 | print('Completed episodes') 70 | 71 | def her_training(args, env, agent, ram, env_params): 72 | pendulum_goal = np.array([1.0, 0.0, 0.0], dtype = np.float32) 73 | goals = pendulum_goal 74 | return_history = [] 75 | test_return_history = [] 76 | for _ep in range(args.max_episodes): 77 | if(_ep == 0 or (_ep + 1) % args.evaluate_interval == 0): 78 | test_return_history.append(her_evaluating(args, env, agent, 0)) 79 | 80 | # PART I NORMAL INTERACTION 81 | observation = env.reset() 82 | print('EPISODE :- ', _ep) 83 | ep_r = 0 84 | episode_cache = [] 85 | for r in range(args.max_steps): 86 | # env.render() 87 | state = np.float32(observation) 88 | state = np.concatenate((state, goals)) 89 | action = agent.get_exploration_action(state) 90 | 91 | new_observation, reward, done, info = env.step(action) 92 | # discard original reward from gym 93 | reward = calcu_reward(goals, state, action) 94 | ep_r = ep_r + reward 95 | 96 | if done: 97 | new_state = None 98 | else: 99 | new_state = np.float32(new_observation) 100 | new_state = np.concatenate((new_state, goals)) 101 | episode_cache.append((state, action, reward, new_state)) 102 | # push this exp in ram 103 | ram.add(state, action, reward, new_state) 104 | 105 | observation = new_observation 106 | # not in paper's pseudo code 107 | agent.optimize() 108 | if done: 109 | # print("break") 110 | break 111 | 112 | print("Episode: {} | Return: {}".format(_ep, ep_r)) 113 | logging.info("Episode: {} | Return: {}".format(_ep, ep_r)) 114 | return_history.append(ep_r) 115 | 116 | # PART II hindsight replay 117 | for i, transition in enumerate(episode_cache): 118 | new_goals = generate_goals(i, episode_cache, args.HER_sample_num) 119 | for new_goal in new_goals: 120 | reward = calcu_reward(new_goal, state, action) 121 | state, action, new_state = gene_new_sas(new_goal, transition) 122 | ram.add(state, action, reward, new_state) 123 | 124 | 125 | # PART III optimization 126 | for k in range(1): 127 | # perform optimization 128 | agent.optimize() 129 | 130 | # check memory consumption and clear memory 131 | gc.collect() 132 | # process = psutil.Process(os.getpid()) 133 | # print(process.memory_info().rss) 134 | 135 | if _ep == 0 or _ep % 99 == 0: 136 | agent.save_models(args.dir_name, _ep) 137 | plot_reward(test_return_history, args.dir_name) 138 | 139 | # PART II NORMAL INTERACTION 140 | 141 | print('Completed episodes') 142 | 143 | -------------------------------------------------------------------------------- /src/DDPG_HER/trainer.py: -------------------------------------------------------------------------------- 1 | from __future__ import division 2 | import torch 3 | import torch.nn as nn 4 | import torch.nn.functional as F 5 | from torch.autograd import Variable 6 | 7 | import numpy as np 8 | import math 9 | 10 | import utils 11 | import model 12 | 13 | import os 14 | 15 | #BATCH_SIZE = 128 16 | #LEARNING_RATE = 0.001 17 | #GAMMA = 0.99 18 | #TAU = 0.001 19 | 20 | 21 | class Trainer: 22 | 23 | def __init__(self, args, state_dim, action_dim, action_lim, ram): 24 | """ 25 | :param state_dim: Dimensions of state (int) 26 | :param action_dim: Dimension of action (int) 27 | :param action_lim: Used to limit action in [-action_lim,action_lim] 28 | :param ram: replay memory buffer object 29 | :return: 30 | """ 31 | self.state_dim = state_dim 32 | self.action_dim = action_dim 33 | self.action_lim = action_lim 34 | self.ram = ram 35 | self.iter = 0 36 | self.noise = utils.OrnsteinUhlenbeckActionNoise(self.action_dim) 37 | self.args = args 38 | 39 | self.actor = model.Actor(self.state_dim, self.action_dim, self.action_lim) 40 | self.target_actor = model.Actor(self.state_dim, self.action_dim, self.action_lim) 41 | self.actor_optimizer = torch.optim.Adam(self.actor.parameters(),self.args.learning_rate) 42 | 43 | self.critic = model.Critic(self.state_dim, self.action_dim) 44 | self.target_critic = model.Critic(self.state_dim, self.action_dim) 45 | self.critic_optimizer = torch.optim.Adam(self.critic.parameters(),self.args.learning_rate) 46 | 47 | utils.hard_update(self.target_actor, self.actor) 48 | utils.hard_update(self.target_critic, self.critic) 49 | 50 | def get_exploitation_action(self, state): 51 | """ 52 | gets the action from target actor added with exploration noise 53 | :param state: state (Numpy array) 54 | :return: sampled action (Numpy array) 55 | """ 56 | state = Variable(torch.from_numpy(state)) 57 | action = self.target_actor.forward(state).detach() 58 | return action.data.numpy() 59 | 60 | def get_exploration_action(self, state): 61 | """ 62 | gets the action from actor added with exploration noise 63 | :param state: state (Numpy array) 64 | :return: sampled action (Numpy array) 65 | """ 66 | state = Variable(torch.from_numpy(state)) 67 | action = self.actor.forward(state).detach() 68 | new_action = action.data.numpy() + (self.noise.sample() * self.action_lim) 69 | return new_action 70 | 71 | def optimize(self): 72 | """ 73 | Samples a random batch from replay memory and performs optimization 74 | :return: 75 | """ 76 | s1,a1,r1,s2 = self.ram.sample(self.args.batch_size) 77 | 78 | s1 = Variable(torch.from_numpy(s1)) 79 | a1 = Variable(torch.from_numpy(a1)) 80 | r1 = Variable(torch.from_numpy(r1)) 81 | s2 = Variable(torch.from_numpy(s2)) 82 | 83 | # ---------------------- optimize critic ---------------------- 84 | # Use target actor exploitation policy here for loss evaluation 85 | a2 = self.target_actor.forward(s2).detach() 86 | next_val = torch.squeeze(self.target_critic.forward(s2, a2).detach()) 87 | # y_exp = r + gamma*Q'( s2, pi'(s2)) 88 | y_expected = r1 + self.args.gamma*next_val 89 | # y_pred = Q( s1, a1) 90 | y_predicted = torch.squeeze(self.critic.forward(s1, a1)) 91 | # compute critic loss, and update the critic 92 | loss_critic = F.smooth_l1_loss(y_predicted, y_expected) 93 | self.critic_optimizer.zero_grad() 94 | loss_critic.backward() 95 | self.critic_optimizer.step() 96 | 97 | # ---------------------- optimize actor ---------------------- 98 | pred_a1 = self.actor.forward(s1) 99 | loss_actor = -1*torch.sum(self.critic.forward(s1, pred_a1)) 100 | self.actor_optimizer.zero_grad() 101 | loss_actor.backward() 102 | self.actor_optimizer.step() 103 | 104 | utils.soft_update(self.target_actor, self.actor, self.args.tau) 105 | utils.soft_update(self.target_critic, self.critic, self.args.tau) 106 | 107 | # if self.iter % 100 == 0: 108 | # print 'Iteration :- ', self.iter, ' Loss_actor :- ', loss_actor.data.numpy(),\ 109 | # ' Loss_critic :- ', loss_critic.data.numpy() 110 | # self.iter += 1 111 | 112 | def save_models(self, dir_name, episode_count): 113 | """ 114 | saves the target actor and critic models 115 | :param episode_count: the count of episodes iterated 116 | :return: 117 | """ 118 | if not os.path.exists(dir_name + '/Models'): 119 | os.mkdir(dir_name + '/Models') 120 | torch.save(self.target_actor.state_dict(), dir_name + './Models/' + str(episode_count) + '_actor.pt') 121 | torch.save(self.target_critic.state_dict(), dir_name + './Models/' + str(episode_count) + '_critic.pt') 122 | print('Models saved successfully') 123 | 124 | def load_models(self, dir_name, episode): 125 | """ 126 | loads the target actor and critic models, and copies them onto actor and critic models 127 | :param episode: the count of episodes iterated (used to find the file name) 128 | :return: 129 | """ 130 | self.actor.load_state_dict(torch.load(dir_name + '/Models/' + str(episode) + '_actor.pt')) 131 | self.critic.load_state_dict(torch.load(dir_name + '/Models/' + str(episode) + '_critic.pt')) 132 | utils.hard_update(self.target_actor, self.actor) 133 | utils.hard_update(self.target_critic, self.critic) 134 | print('Models loaded succesfully') -------------------------------------------------------------------------------- /src/DDPG_HER/202001021123_HER/log.log: -------------------------------------------------------------------------------- 1 | INFO:root:One episode test's Return: -1209.9624494715365 2 | INFO:root:Episode: 0 | Return: -195 3 | INFO:root:Episode: 1 | Return: -200 4 | INFO:root:Episode: 2 | Return: -200 5 | INFO:root:Episode: 3 | Return: -200 6 | INFO:root:Episode: 4 | Return: -200 7 | INFO:root:Episode: 5 | Return: -189 8 | INFO:root:Episode: 6 | Return: -188 9 | INFO:root:Episode: 7 | Return: -189 10 | INFO:root:Episode: 8 | Return: -169 11 | INFO:root:One episode test's Return: -1060.0174939599215 12 | INFO:root:Episode: 9 | Return: -200 13 | INFO:root:Episode: 10 | Return: -182 14 | INFO:root:Episode: 11 | Return: -200 15 | INFO:root:Episode: 12 | Return: -200 16 | INFO:root:Episode: 13 | Return: -200 17 | INFO:root:Episode: 14 | Return: -192 18 | INFO:root:Episode: 15 | Return: -200 19 | INFO:root:Episode: 16 | Return: -200 20 | INFO:root:Episode: 17 | Return: -200 21 | INFO:root:Episode: 18 | Return: -199 22 | INFO:root:One episode test's Return: -1488.7863625750547 23 | INFO:root:Episode: 19 | Return: -200 24 | INFO:root:Episode: 20 | Return: -200 25 | INFO:root:Episode: 21 | Return: -200 26 | INFO:root:Episode: 22 | Return: -200 27 | INFO:root:Episode: 23 | Return: -200 28 | INFO:root:Episode: 24 | Return: -200 29 | INFO:root:Episode: 25 | Return: -200 30 | INFO:root:Episode: 26 | Return: -200 31 | INFO:root:Episode: 27 | Return: -200 32 | INFO:root:Episode: 28 | Return: -196 33 | INFO:root:One episode test's Return: -1483.4760074240573 34 | INFO:root:Episode: 29 | Return: -200 35 | INFO:root:Episode: 30 | Return: -200 36 | INFO:root:Episode: 31 | Return: -200 37 | INFO:root:Episode: 32 | Return: -200 38 | INFO:root:Episode: 33 | Return: -200 39 | INFO:root:Episode: 34 | Return: -131 40 | INFO:root:Episode: 35 | Return: -200 41 | INFO:root:Episode: 36 | Return: -200 42 | INFO:root:Episode: 37 | Return: -200 43 | INFO:root:Episode: 38 | Return: -200 44 | INFO:root:One episode test's Return: -1496.1400235445556 45 | INFO:root:Episode: 39 | Return: -194 46 | INFO:root:Episode: 40 | Return: -195 47 | INFO:root:Episode: 41 | Return: -196 48 | INFO:root:Episode: 42 | Return: -200 49 | INFO:root:Episode: 43 | Return: -200 50 | INFO:root:Episode: 44 | Return: -200 51 | INFO:root:Episode: 45 | Return: -118 52 | INFO:root:Episode: 46 | Return: -200 53 | INFO:root:Episode: 47 | Return: -194 54 | INFO:root:Episode: 48 | Return: -200 55 | INFO:root:One episode test's Return: -1475.5648003829729 56 | INFO:root:Episode: 49 | Return: -200 57 | INFO:root:Episode: 50 | Return: -193 58 | INFO:root:Episode: 51 | Return: -200 59 | INFO:root:Episode: 52 | Return: -200 60 | INFO:root:Episode: 53 | Return: -200 61 | INFO:root:Episode: 54 | Return: -200 62 | INFO:root:Episode: 55 | Return: -200 63 | INFO:root:Episode: 56 | Return: -200 64 | INFO:root:Episode: 57 | Return: -200 65 | INFO:root:Episode: 58 | Return: -200 66 | INFO:root:One episode test's Return: -1523.7464761737006 67 | INFO:root:Episode: 59 | Return: 0 68 | INFO:root:Episode: 60 | Return: 0 69 | INFO:root:Episode: 61 | Return: -200 70 | INFO:root:Episode: 62 | Return: -189 71 | INFO:root:Episode: 63 | Return: -200 72 | INFO:root:Episode: 64 | Return: -200 73 | INFO:root:Episode: 65 | Return: -183 74 | INFO:root:Episode: 66 | Return: -187 75 | INFO:root:Episode: 67 | Return: -119 76 | INFO:root:Episode: 68 | Return: -128 77 | INFO:root:One episode test's Return: -1107.1888545655418 78 | INFO:root:Episode: 69 | Return: -194 79 | INFO:root:Episode: 70 | Return: -137 80 | INFO:root:Episode: 71 | Return: -158 81 | INFO:root:Episode: 72 | Return: -72 82 | INFO:root:Episode: 73 | Return: -165 83 | INFO:root:Episode: 74 | Return: -109 84 | INFO:root:Episode: 75 | Return: -50 85 | INFO:root:Episode: 76 | Return: -25 86 | INFO:root:Episode: 77 | Return: -31 87 | INFO:root:Episode: 78 | Return: -52 88 | INFO:root:One episode test's Return: -263.28974502924535 89 | INFO:root:Episode: 79 | Return: -25 90 | INFO:root:Episode: 80 | Return: -72 91 | INFO:root:Episode: 81 | Return: -28 92 | INFO:root:Episode: 82 | Return: -193 93 | INFO:root:Episode: 83 | Return: 0 94 | INFO:root:Episode: 84 | Return: -38 95 | INFO:root:Episode: 85 | Return: -37 96 | INFO:root:Episode: 86 | Return: -48 97 | INFO:root:Episode: 87 | Return: -99 98 | INFO:root:Episode: 88 | Return: -21 99 | INFO:root:One episode test's Return: -121.9410259341436 100 | INFO:root:Episode: 89 | Return: -23 101 | INFO:root:Episode: 90 | Return: -67 102 | INFO:root:Episode: 91 | Return: -38 103 | INFO:root:Episode: 92 | Return: -98 104 | INFO:root:Episode: 93 | Return: -51 105 | INFO:root:Episode: 94 | Return: 0 106 | INFO:root:Episode: 95 | Return: -43 107 | INFO:root:Episode: 96 | Return: -59 108 | INFO:root:Episode: 97 | Return: -41 109 | INFO:root:Episode: 98 | Return: -24 110 | INFO:root:One episode test's Return: -127.9786601649759 111 | INFO:root:Episode: 99 | Return: -23 112 | INFO:root:Episode: 100 | Return: -81 113 | INFO:root:Episode: 101 | Return: -72 114 | INFO:root:Episode: 102 | Return: -68 115 | INFO:root:Episode: 103 | Return: -22 116 | INFO:root:Episode: 104 | Return: -22 117 | INFO:root:Episode: 105 | Return: -23 118 | INFO:root:Episode: 106 | Return: 0 119 | INFO:root:Episode: 107 | Return: -21 120 | INFO:root:Episode: 108 | Return: -46 121 | INFO:root:One episode test's Return: -236.00672989926687 122 | INFO:root:Episode: 109 | Return: -22 123 | INFO:root:Episode: 110 | Return: -200 124 | INFO:root:Episode: 111 | Return: -200 125 | INFO:root:Episode: 112 | Return: -45 126 | INFO:root:Episode: 113 | Return: -51 127 | INFO:root:Episode: 114 | Return: 0 128 | INFO:root:Episode: 115 | Return: -22 129 | INFO:root:Episode: 116 | Return: -63 130 | INFO:root:Episode: 117 | Return: 0 131 | INFO:root:Episode: 118 | Return: -81 132 | INFO:root:One episode test's Return: -1827.99888079052 133 | INFO:root:Episode: 119 | Return: -20 134 | INFO:root:Episode: 120 | Return: -200 135 | INFO:root:Episode: 121 | Return: -21 136 | INFO:root:Episode: 122 | Return: -200 137 | INFO:root:Episode: 123 | Return: -200 138 | INFO:root:Episode: 124 | Return: -25 139 | INFO:root:Episode: 125 | Return: -200 140 | INFO:root:Episode: 126 | Return: -21 141 | INFO:root:Episode: 127 | Return: -23 142 | INFO:root:Episode: 128 | Return: -24 143 | INFO:root:One episode test's Return: -1786.8115453744392 144 | INFO:root:Episode: 129 | Return: -102 145 | INFO:root:Episode: 130 | Return: 0 146 | INFO:root:Episode: 131 | Return: -200 147 | INFO:root:Episode: 132 | Return: -200 148 | INFO:root:Episode: 133 | Return: -21 149 | INFO:root:Episode: 134 | Return: -21 150 | INFO:root:Episode: 135 | Return: -200 151 | INFO:root:Episode: 136 | Return: -200 152 | INFO:root:Episode: 137 | Return: -21 153 | INFO:root:Episode: 138 | Return: -23 154 | INFO:root:One episode test's Return: -122.01286773241989 155 | INFO:root:Episode: 139 | Return: -22 156 | INFO:root:Episode: 140 | Return: -23 157 | INFO:root:Episode: 141 | Return: -53 158 | INFO:root:Episode: 142 | Return: -23 159 | INFO:root:Episode: 143 | Return: -22 160 | INFO:root:Episode: 144 | Return: -65 161 | INFO:root:Episode: 145 | Return: -200 162 | INFO:root:Episode: 146 | Return: -23 163 | INFO:root:Episode: 147 | Return: -140 164 | INFO:root:Episode: 148 | Return: -200 165 | INFO:root:One episode test's Return: -122.24964865944467 166 | INFO:root:Episode: 149 | Return: -36 167 | INFO:root:Episode: 150 | Return: -55 168 | INFO:root:Episode: 151 | Return: -41 169 | INFO:root:Episode: 152 | Return: -40 170 | INFO:root:Episode: 153 | Return: -41 171 | INFO:root:Episode: 154 | Return: -41 172 | INFO:root:Episode: 155 | Return: -37 173 | INFO:root:Episode: 156 | Return: -45 174 | INFO:root:Episode: 157 | Return: -20 175 | INFO:root:Episode: 158 | Return: -25 176 | INFO:root:One episode test's Return: -1907.6758410214843 177 | INFO:root:Episode: 159 | Return: -65 178 | INFO:root:Episode: 160 | Return: -25 179 | INFO:root:Episode: 161 | Return: -52 180 | INFO:root:Episode: 162 | Return: -113 181 | INFO:root:Episode: 163 | Return: -40 182 | INFO:root:Episode: 164 | Return: -61 183 | INFO:root:Episode: 165 | Return: 0 184 | INFO:root:Episode: 166 | Return: -34 185 | INFO:root:Episode: 167 | Return: -42 186 | INFO:root:Episode: 168 | Return: -62 187 | INFO:root:One episode test's Return: -0.34350453385196106 188 | INFO:root:Episode: 169 | Return: -21 189 | INFO:root:Episode: 170 | Return: -76 190 | INFO:root:Episode: 171 | Return: 0 191 | INFO:root:Episode: 172 | Return: -21 192 | INFO:root:Episode: 173 | Return: -33 193 | INFO:root:Episode: 174 | Return: -41 194 | INFO:root:Episode: 175 | Return: -58 195 | INFO:root:Episode: 176 | Return: -23 196 | INFO:root:Episode: 177 | Return: -39 197 | INFO:root:Episode: 178 | Return: -64 198 | INFO:root:One episode test's Return: -701.0852604698284 199 | INFO:root:Episode: 179 | Return: -21 200 | INFO:root:Episode: 180 | Return: -57 201 | INFO:root:Episode: 181 | Return: -77 202 | INFO:root:Episode: 182 | Return: -40 203 | INFO:root:Episode: 183 | Return: -173 204 | INFO:root:Episode: 184 | Return: -42 205 | INFO:root:Episode: 185 | Return: -20 206 | INFO:root:Episode: 186 | Return: -52 207 | INFO:root:Episode: 187 | Return: 0 208 | INFO:root:Episode: 188 | Return: -20 209 | INFO:root:One episode test's Return: -120.2339170398136 210 | INFO:root:Episode: 189 | Return: -64 211 | INFO:root:Episode: 190 | Return: -43 212 | INFO:root:Episode: 191 | Return: -26 213 | INFO:root:Episode: 192 | Return: -22 214 | INFO:root:Episode: 193 | Return: -21 215 | INFO:root:Episode: 194 | Return: -58 216 | INFO:root:Episode: 195 | Return: -21 217 | INFO:root:Episode: 196 | Return: -60 218 | INFO:root:Episode: 197 | Return: -63 219 | INFO:root:Episode: 198 | Return: -37 220 | INFO:root:One episode test's Return: -121.49149273890276 221 | INFO:root:Episode: 199 | Return: -37 222 | DEBUG:matplotlib.font_manager:findfont: Matching :family=sans-serif:style=normal:variant=normal:weight=normal:stretch=normal:size=12.0. 223 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 224 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 225 | DEBUG:matplotlib.font_manager:findfont: score() = 1.335 226 | DEBUG:matplotlib.font_manager:findfont: score() = 1.05 227 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 228 | DEBUG:matplotlib.font_manager:findfont: score() = 11.05 229 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 230 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 231 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 232 | DEBUG:matplotlib.font_manager:findfont: score() = 10.335 233 | DEBUG:matplotlib.font_manager:findfont: score() = 11.335 234 | DEBUG:matplotlib.font_manager:findfont: score() = 10.335 235 | DEBUG:matplotlib.font_manager:findfont: score() = 11.05 236 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 237 | DEBUG:matplotlib.font_manager:findfont: score() = 11.05 238 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 239 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 240 | DEBUG:matplotlib.font_manager:findfont: score() = 11.335 241 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 242 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 243 | DEBUG:matplotlib.font_manager:findfont: score() = 10.335 244 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 245 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 246 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 247 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 248 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 249 | DEBUG:matplotlib.font_manager:findfont: score() = 0.33499999999999996 250 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 251 | DEBUG:matplotlib.font_manager:findfont: score() = 10.335 252 | DEBUG:matplotlib.font_manager:findfont: score() = 10.335 253 | DEBUG:matplotlib.font_manager:findfont: score() = 10.335 254 | DEBUG:matplotlib.font_manager:findfont: score() = 10.335 255 | DEBUG:matplotlib.font_manager:findfont: score() = 10.335 256 | DEBUG:matplotlib.font_manager:findfont: score() = 11.335 257 | DEBUG:matplotlib.font_manager:findfont: score() = 11.05 258 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 259 | DEBUG:matplotlib.font_manager:findfont: score() = 0.05 260 | DEBUG:matplotlib.font_manager:findfont: score() = 11.335 261 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 262 | DEBUG:matplotlib.font_manager:findfont: score() = 11.05 263 | DEBUG:matplotlib.font_manager:findfont: score() = 10.335 264 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 265 | DEBUG:matplotlib.font_manager:findfont: score() = 10.335 266 | DEBUG:matplotlib.font_manager:findfont: score() = 11.335 267 | DEBUG:matplotlib.font_manager:findfont: score() = 10.25 268 | DEBUG:matplotlib.font_manager:findfont: score() = 11.05 269 | DEBUG:matplotlib.font_manager:findfont: score() = 10.335 270 | DEBUG:matplotlib.font_manager:findfont: score() = 11.05 271 | DEBUG:matplotlib.font_manager:findfont: score() = 11.05 272 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 273 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 274 | DEBUG:matplotlib.font_manager:findfont: score() = 6.413636363636363 275 | DEBUG:matplotlib.font_manager:findfont: score() = 10.335 276 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 277 | DEBUG:matplotlib.font_manager:findfont: score() = 11.335 278 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 279 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 280 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 281 | DEBUG:matplotlib.font_manager:findfont: score() = 11.24 282 | DEBUG:matplotlib.font_manager:findfont: score() = 6.613636363636363 283 | DEBUG:matplotlib.font_manager:findfont: score() = 11.05 284 | DEBUG:matplotlib.font_manager:findfont: score() = 11.335 285 | DEBUG:matplotlib.font_manager:findfont: score() = 7.8986363636363635 286 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 287 | DEBUG:matplotlib.font_manager:findfont: score() = 11.05 288 | DEBUG:matplotlib.font_manager:findfont: score() = 10.335 289 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 290 | DEBUG:matplotlib.font_manager:findfont: score() = 10.335 291 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 292 | DEBUG:matplotlib.font_manager:findfont: score() = 10.24 293 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 294 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 295 | DEBUG:matplotlib.font_manager:findfont: score() = 11.145 296 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 297 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 298 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 299 | DEBUG:matplotlib.font_manager:findfont: score() = 11.05 300 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 301 | DEBUG:matplotlib.font_manager:findfont: score() = 10.145 302 | DEBUG:matplotlib.font_manager:findfont: score() = 11.335 303 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 304 | DEBUG:matplotlib.font_manager:findfont: score() = 11.05 305 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 306 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 307 | DEBUG:matplotlib.font_manager:findfont: score() = 10.25 308 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 309 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 310 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 311 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 312 | DEBUG:matplotlib.font_manager:findfont: score() = 11.05 313 | DEBUG:matplotlib.font_manager:findfont: score() = 11.05 314 | DEBUG:matplotlib.font_manager:findfont: score() = 11.335 315 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 316 | DEBUG:matplotlib.font_manager:findfont: score() = 10.335 317 | DEBUG:matplotlib.font_manager:findfont: score() = 11.05 318 | DEBUG:matplotlib.font_manager:findfont: score() = 10.43 319 | DEBUG:matplotlib.font_manager:findfont: score() = 11.525 320 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 321 | DEBUG:matplotlib.font_manager:findfont: score() = 10.25 322 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 323 | DEBUG:matplotlib.font_manager:findfont: score() = 11.05 324 | DEBUG:matplotlib.font_manager:findfont: score() = 11.335 325 | DEBUG:matplotlib.font_manager:findfont: score() = 10.335 326 | DEBUG:matplotlib.font_manager:findfont: score() = 10.335 327 | DEBUG:matplotlib.font_manager:findfont: score() = 10.44 328 | DEBUG:matplotlib.font_manager:findfont: score() = 10.335 329 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 330 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 331 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 332 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 333 | DEBUG:matplotlib.font_manager:findfont: score() = 7.698636363636363 334 | DEBUG:matplotlib.font_manager:findfont: score() = 10.145 335 | DEBUG:matplotlib.font_manager:findfont: score() = 10.24 336 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 337 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 338 | DEBUG:matplotlib.font_manager:findfont: score() = 10.335 339 | DEBUG:matplotlib.font_manager:findfont: score() = 10.335 340 | DEBUG:matplotlib.font_manager:findfont: score() = 10.535 341 | DEBUG:matplotlib.font_manager:findfont: score() = 11.335 342 | DEBUG:matplotlib.font_manager:findfont: score() = 11.24 343 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 344 | DEBUG:matplotlib.font_manager:findfont: score() = 10.25 345 | DEBUG:matplotlib.font_manager:findfont: score() = 10.335 346 | DEBUG:matplotlib.font_manager:findfont: score() = 11.335 347 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 348 | DEBUG:matplotlib.font_manager:findfont: score() = 10.335 349 | DEBUG:matplotlib.font_manager:findfont: score() = 10.24 350 | DEBUG:matplotlib.font_manager:findfont: score() = 11.24 351 | DEBUG:matplotlib.font_manager:findfont: score() = 10.25 352 | DEBUG:matplotlib.font_manager:findfont: score() = 11.24 353 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 354 | DEBUG:matplotlib.font_manager:findfont: score() = 11.335 355 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 356 | DEBUG:matplotlib.font_manager:findfont: score() = 11.05 357 | DEBUG:matplotlib.font_manager:findfont: score() = 10.335 358 | DEBUG:matplotlib.font_manager:findfont: score() = 10.335 359 | DEBUG:matplotlib.font_manager:findfont: score() = 11.335 360 | DEBUG:matplotlib.font_manager:findfont: score() = 11.05 361 | DEBUG:matplotlib.font_manager:findfont: score() = 10.335 362 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 363 | DEBUG:matplotlib.font_manager:findfont: score() = 10.335 364 | DEBUG:matplotlib.font_manager:findfont: score() = 10.24 365 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 366 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 367 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 368 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 369 | DEBUG:matplotlib.font_manager:findfont: score() = 6.888636363636364 370 | DEBUG:matplotlib.font_manager:findfont: score() = 10.24 371 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 372 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 373 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 374 | DEBUG:matplotlib.font_manager:findfont: score() = 11.05 375 | DEBUG:matplotlib.font_manager:findfont: score() = 10.335 376 | DEBUG:matplotlib.font_manager:findfont: score() = 10.335 377 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 378 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 379 | DEBUG:matplotlib.font_manager:findfont: score() = 11.05 380 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 381 | DEBUG:matplotlib.font_manager:findfont: score() = 10.335 382 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 383 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 384 | DEBUG:matplotlib.font_manager:findfont: score() = 3.9713636363636367 385 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 386 | DEBUG:matplotlib.font_manager:findfont: score() = 11.05 387 | DEBUG:matplotlib.font_manager:findfont: score() = 11.05 388 | DEBUG:matplotlib.font_manager:findfont: score() = 10.25 389 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 390 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 391 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 392 | DEBUG:matplotlib.font_manager:findfont: score() = 10.535 393 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 394 | DEBUG:matplotlib.font_manager:findfont: score() = 11.25 395 | DEBUG:matplotlib.font_manager:findfont: score() = 11.05 396 | DEBUG:matplotlib.font_manager:findfont: score() = 10.335 397 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 398 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 399 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 400 | DEBUG:matplotlib.font_manager:findfont: score() = 10.145 401 | DEBUG:matplotlib.font_manager:findfont: score() = 10.24 402 | DEBUG:matplotlib.font_manager:findfont: score() = 11.335 403 | DEBUG:matplotlib.font_manager:findfont: score() = 10.335 404 | DEBUG:matplotlib.font_manager:findfont: score() = 10.335 405 | DEBUG:matplotlib.font_manager:findfont: score() = 11.335 406 | DEBUG:matplotlib.font_manager:findfont: score() = 11.05 407 | DEBUG:matplotlib.font_manager:findfont: score() = 7.613636363636363 408 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 409 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 410 | DEBUG:matplotlib.font_manager:findfont: score() = 10.535 411 | DEBUG:matplotlib.font_manager:findfont: score() = 10.335 412 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 413 | DEBUG:matplotlib.font_manager:findfont: score() = 10.344999999999999 414 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 415 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 416 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 417 | DEBUG:matplotlib.font_manager:findfont: score() = 11.335 418 | DEBUG:matplotlib.font_manager:findfont: score() = 10.335 419 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 420 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 421 | DEBUG:matplotlib.font_manager:findfont: score() = 10.335 422 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 423 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 424 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 425 | DEBUG:matplotlib.font_manager:findfont: score() = 11.05 426 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 427 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 428 | DEBUG:matplotlib.font_manager:findfont: score() = 10.335 429 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 430 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 431 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 432 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 433 | DEBUG:matplotlib.font_manager:findfont: score() = 11.535 434 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 435 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 436 | DEBUG:matplotlib.font_manager:findfont: score() = 11.535 437 | DEBUG:matplotlib.font_manager:findfont: score() = 11.05 438 | DEBUG:matplotlib.font_manager:findfont: score() = 11.05 439 | DEBUG:matplotlib.font_manager:findfont: score() = 10.335 440 | DEBUG:matplotlib.font_manager:findfont: score() = 11.24 441 | DEBUG:matplotlib.font_manager:findfont: score() = 11.05 442 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 443 | DEBUG:matplotlib.font_manager:findfont: score() = 10.24 444 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 445 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 446 | DEBUG:matplotlib.font_manager:findfont: score() = 11.24 447 | DEBUG:matplotlib.font_manager:findfont: score() = 10.335 448 | DEBUG:matplotlib.font_manager:findfont: score() = 10.525 449 | DEBUG:matplotlib.font_manager:findfont: score() = 11.335 450 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 451 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 452 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 453 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 454 | DEBUG:matplotlib.font_manager:findfont: score() = 10.335 455 | DEBUG:matplotlib.font_manager:findfont: score() = 10.24 456 | DEBUG:matplotlib.font_manager:findfont: score() = 11.05 457 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 458 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 459 | DEBUG:matplotlib.font_manager:findfont: score() = 11.335 460 | DEBUG:matplotlib.font_manager:findfont: score() = 10.24 461 | DEBUG:matplotlib.font_manager:findfont: score() = 10.24 462 | DEBUG:matplotlib.font_manager:findfont: score() = 11.335 463 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 464 | DEBUG:matplotlib.font_manager:findfont: score() = 11.05 465 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 466 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 467 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 468 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 469 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 470 | DEBUG:matplotlib.font_manager:findfont: score() = 11.05 471 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 472 | DEBUG:matplotlib.font_manager:findfont: score() = 10.24 473 | DEBUG:matplotlib.font_manager:findfont: score() = 11.05 474 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 475 | DEBUG:matplotlib.font_manager:findfont: score() = 10.335 476 | DEBUG:matplotlib.font_manager:findfont: score() = 10.25 477 | DEBUG:matplotlib.font_manager:findfont: score() = 10.535 478 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 479 | DEBUG:matplotlib.font_manager:findfont: score() = 10.335 480 | DEBUG:matplotlib.font_manager:findfont: score() = 11.335 481 | DEBUG:matplotlib.font_manager:findfont: score() = 10.335 482 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 483 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 484 | DEBUG:matplotlib.font_manager:findfont: score() = 6.8986363636363635 485 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 486 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 487 | DEBUG:matplotlib.font_manager:findfont: score() = 11.05 488 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 489 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 490 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 491 | DEBUG:matplotlib.font_manager:findfont: score() = 11.05 492 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 493 | DEBUG:matplotlib.font_manager:findfont: score() = 11.05 494 | DEBUG:matplotlib.font_manager:findfont: score() = 10.335 495 | DEBUG:matplotlib.font_manager:findfont: score() = 11.05 496 | DEBUG:matplotlib.font_manager:findfont: score() = 10.335 497 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 498 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 499 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 500 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 501 | DEBUG:matplotlib.font_manager:findfont: score() = 10.24 502 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 503 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 504 | DEBUG:matplotlib.font_manager:findfont: score() = 11.05 505 | DEBUG:matplotlib.font_manager:findfont: score() = 11.05 506 | DEBUG:matplotlib.font_manager:findfont: score() = 11.335 507 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 508 | DEBUG:matplotlib.font_manager:findfont: score() = 11.05 509 | DEBUG:matplotlib.font_manager:findfont: score() = 10.535 510 | DEBUG:matplotlib.font_manager:findfont: score() = 10.335 511 | DEBUG:matplotlib.font_manager:findfont: score() = 11.05 512 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 513 | DEBUG:matplotlib.font_manager:findfont: score() = 10.24 514 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 515 | DEBUG:matplotlib.font_manager:findfont: score() = 11.335 516 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 517 | DEBUG:matplotlib.font_manager:findfont: score() = 10.525 518 | DEBUG:matplotlib.font_manager:findfont: score() = 10.335 519 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 520 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 521 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 522 | DEBUG:matplotlib.font_manager:findfont: score() = 10.24 523 | DEBUG:matplotlib.font_manager:findfont: score() = 10.335 524 | DEBUG:matplotlib.font_manager:findfont: score() = 10.525 525 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 526 | DEBUG:matplotlib.font_manager:findfont: score() = 10.335 527 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 528 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 529 | DEBUG:matplotlib.font_manager:findfont: score() = 11.145 530 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 531 | DEBUG:matplotlib.font_manager:findfont: score() = 10.335 532 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 533 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 534 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 535 | DEBUG:matplotlib.font_manager:findfont: score() = 11.43 536 | DEBUG:matplotlib.font_manager:findfont: score() = 11.05 537 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 538 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 539 | DEBUG:matplotlib.font_manager:findfont: score() = 10.335 540 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 541 | DEBUG:matplotlib.font_manager:findfont: score() = 10.24 542 | DEBUG:matplotlib.font_manager:findfont: score() = 10.335 543 | DEBUG:matplotlib.font_manager:findfont: score() = 11.335 544 | DEBUG:matplotlib.font_manager:findfont: score() = 10.335 545 | DEBUG:matplotlib.font_manager:findfont: score() = 10.335 546 | DEBUG:matplotlib.font_manager:findfont: score() = 11.05 547 | DEBUG:matplotlib.font_manager:findfont: score() = 10.335 548 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 549 | DEBUG:matplotlib.font_manager:findfont: score() = 10.25 550 | DEBUG:matplotlib.font_manager:findfont: score() = 4.971363636363637 551 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 552 | DEBUG:matplotlib.font_manager:findfont: score() = 10.525 553 | DEBUG:matplotlib.font_manager:findfont: score() = 10.335 554 | DEBUG:matplotlib.font_manager:findfont: score() = 11.145 555 | DEBUG:matplotlib.font_manager:findfont: score() = 10.335 556 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 557 | DEBUG:matplotlib.font_manager:findfont: score() = 10.535 558 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 559 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 560 | DEBUG:matplotlib.font_manager:findfont: score() = 10.335 561 | DEBUG:matplotlib.font_manager:findfont: score() = 10.335 562 | DEBUG:matplotlib.font_manager:findfont: score() = 11.335 563 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 564 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 565 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 566 | DEBUG:matplotlib.font_manager:findfont: score() = 11.25 567 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 568 | DEBUG:matplotlib.font_manager:findfont: score() = 11.335 569 | DEBUG:matplotlib.font_manager:findfont: score() = 10.145 570 | DEBUG:matplotlib.font_manager:findfont: score() = 10.24 571 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 572 | DEBUG:matplotlib.font_manager:findfont: score() = 10.335 573 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 574 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 575 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 576 | DEBUG:matplotlib.font_manager:findfont: score() = 11.24 577 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 578 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 579 | DEBUG:matplotlib.font_manager:findfont: score() = 10.335 580 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 581 | DEBUG:matplotlib.font_manager:findfont: score() = 11.525 582 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 583 | DEBUG:matplotlib.font_manager:findfont: score() = 10.335 584 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 585 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 586 | DEBUG:matplotlib.font_manager:findfont: score() = 11.335 587 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 588 | DEBUG:matplotlib.font_manager:findfont: score() = 10.145 589 | DEBUG:matplotlib.font_manager:findfont: score() = 11.335 590 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 591 | DEBUG:matplotlib.font_manager:findfont: score() = 10.335 592 | DEBUG:matplotlib.font_manager:findfont: score() = 10.335 593 | DEBUG:matplotlib.font_manager:findfont: score() = 10.145 594 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 595 | DEBUG:matplotlib.font_manager:findfont: score() = 10.335 596 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 597 | DEBUG:matplotlib.font_manager:findfont: score() = 11.05 598 | DEBUG:matplotlib.font_manager:findfont: score() = 11.335 599 | DEBUG:matplotlib.font_manager:findfont: score() = 11.05 600 | DEBUG:matplotlib.font_manager:findfont: score() = 11.05 601 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 602 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 603 | DEBUG:matplotlib.font_manager:findfont: score() = 10.335 604 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 605 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 606 | DEBUG:matplotlib.font_manager:findfont: score() = 11.05 607 | DEBUG:matplotlib.font_manager:findfont: score() = 11.05 608 | DEBUG:matplotlib.font_manager:findfont: score() = 11.05 609 | DEBUG:matplotlib.font_manager:findfont: score() = 10.145 610 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 611 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 612 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 613 | DEBUG:matplotlib.font_manager:findfont: score() = 10.335 614 | DEBUG:matplotlib.font_manager:findfont: score() = 7.413636363636363 615 | DEBUG:matplotlib.font_manager:findfont: score() = 10.535 616 | DEBUG:matplotlib.font_manager:findfont: score() = 10.24 617 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 618 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 619 | DEBUG:matplotlib.font_manager:findfont: score() = 11.335 620 | DEBUG:matplotlib.font_manager:findfont: score() = 11.05 621 | DEBUG:matplotlib.font_manager:findfont: score() = 10.335 622 | DEBUG:matplotlib.font_manager:findfont: score() = 10.24 623 | DEBUG:matplotlib.font_manager:findfont: score() = 10.24 624 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 625 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 626 | DEBUG:matplotlib.font_manager:findfont: score() = 10.335 627 | DEBUG:matplotlib.font_manager:findfont: score() = 11.05 628 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 629 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 630 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 631 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 632 | DEBUG:matplotlib.font_manager:findfont: score() = 10.335 633 | DEBUG:matplotlib.font_manager:findfont: score() = 11.335 634 | DEBUG:matplotlib.font_manager:findfont: score() = 10.335 635 | DEBUG:matplotlib.font_manager:findfont: score() = 10.335 636 | DEBUG:matplotlib.font_manager:findfont: score() = 10.335 637 | DEBUG:matplotlib.font_manager:findfont: score() = 11.05 638 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 639 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 640 | DEBUG:matplotlib.font_manager:findfont: score() = 10.335 641 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 642 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 643 | DEBUG:matplotlib.font_manager:findfont: score() = 11.05 644 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 645 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 646 | DEBUG:matplotlib.font_manager:findfont: score() = 10.335 647 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 648 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 649 | DEBUG:matplotlib.font_manager:findfont: score() = 11.05 650 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 651 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 652 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 653 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 654 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 655 | DEBUG:matplotlib.font_manager:findfont: score() = 4.6863636363636365 656 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 657 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 658 | DEBUG:matplotlib.font_manager:findfont: score() = 11.05 659 | DEBUG:matplotlib.font_manager:findfont: score() = 10.335 660 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 661 | DEBUG:matplotlib.font_manager:findfont: score() = 10.24 662 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 663 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 664 | DEBUG:matplotlib.font_manager:findfont: score() = 11.24 665 | DEBUG:matplotlib.font_manager:findfont: score() = 3.6863636363636365 666 | DEBUG:matplotlib.font_manager:findfont: score() = 6.698636363636363 667 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 668 | DEBUG:matplotlib.font_manager:findfont: score() = 11.335 669 | DEBUG:matplotlib.font_manager:findfont: Matching :family=sans-serif:style=normal:variant=normal:weight=normal:stretch=normal:size=12.0 to DejaVu Sans ('C:\\Users\\Hill\\Anaconda3\\lib\\site-packages\\matplotlib\\mpl-data\\fonts\\ttf\\DejaVuSans.ttf') with score of 0.050000. 670 | DEBUG:matplotlib.font_manager:findfont: Matching :family=sans-serif:style=normal:variant=normal:weight=normal:stretch=normal:size=10.0. 671 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 672 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 673 | DEBUG:matplotlib.font_manager:findfont: score() = 1.335 674 | DEBUG:matplotlib.font_manager:findfont: score() = 1.05 675 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 676 | DEBUG:matplotlib.font_manager:findfont: score() = 11.05 677 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 678 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 679 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 680 | DEBUG:matplotlib.font_manager:findfont: score() = 10.335 681 | DEBUG:matplotlib.font_manager:findfont: score() = 11.335 682 | DEBUG:matplotlib.font_manager:findfont: score() = 10.335 683 | DEBUG:matplotlib.font_manager:findfont: score() = 11.05 684 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 685 | DEBUG:matplotlib.font_manager:findfont: score() = 11.05 686 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 687 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 688 | DEBUG:matplotlib.font_manager:findfont: score() = 11.335 689 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 690 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 691 | DEBUG:matplotlib.font_manager:findfont: score() = 10.335 692 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 693 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 694 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 695 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 696 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 697 | DEBUG:matplotlib.font_manager:findfont: score() = 0.33499999999999996 698 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 699 | DEBUG:matplotlib.font_manager:findfont: score() = 10.335 700 | DEBUG:matplotlib.font_manager:findfont: score() = 10.335 701 | DEBUG:matplotlib.font_manager:findfont: score() = 10.335 702 | DEBUG:matplotlib.font_manager:findfont: score() = 10.335 703 | DEBUG:matplotlib.font_manager:findfont: score() = 10.335 704 | DEBUG:matplotlib.font_manager:findfont: score() = 11.335 705 | DEBUG:matplotlib.font_manager:findfont: score() = 11.05 706 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 707 | DEBUG:matplotlib.font_manager:findfont: score() = 0.05 708 | DEBUG:matplotlib.font_manager:findfont: score() = 11.335 709 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 710 | DEBUG:matplotlib.font_manager:findfont: score() = 11.05 711 | DEBUG:matplotlib.font_manager:findfont: score() = 10.335 712 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 713 | DEBUG:matplotlib.font_manager:findfont: score() = 10.335 714 | DEBUG:matplotlib.font_manager:findfont: score() = 11.335 715 | DEBUG:matplotlib.font_manager:findfont: score() = 10.25 716 | DEBUG:matplotlib.font_manager:findfont: score() = 11.05 717 | DEBUG:matplotlib.font_manager:findfont: score() = 10.335 718 | DEBUG:matplotlib.font_manager:findfont: score() = 11.05 719 | DEBUG:matplotlib.font_manager:findfont: score() = 11.05 720 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 721 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 722 | DEBUG:matplotlib.font_manager:findfont: score() = 6.413636363636363 723 | DEBUG:matplotlib.font_manager:findfont: score() = 10.335 724 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 725 | DEBUG:matplotlib.font_manager:findfont: score() = 11.335 726 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 727 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 728 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 729 | DEBUG:matplotlib.font_manager:findfont: score() = 11.24 730 | DEBUG:matplotlib.font_manager:findfont: score() = 6.613636363636363 731 | DEBUG:matplotlib.font_manager:findfont: score() = 11.05 732 | DEBUG:matplotlib.font_manager:findfont: score() = 11.335 733 | DEBUG:matplotlib.font_manager:findfont: score() = 7.8986363636363635 734 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 735 | DEBUG:matplotlib.font_manager:findfont: score() = 11.05 736 | DEBUG:matplotlib.font_manager:findfont: score() = 10.335 737 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 738 | DEBUG:matplotlib.font_manager:findfont: score() = 10.335 739 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 740 | DEBUG:matplotlib.font_manager:findfont: score() = 10.24 741 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 742 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 743 | DEBUG:matplotlib.font_manager:findfont: score() = 11.145 744 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 745 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 746 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 747 | DEBUG:matplotlib.font_manager:findfont: score() = 11.05 748 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 749 | DEBUG:matplotlib.font_manager:findfont: score() = 10.145 750 | DEBUG:matplotlib.font_manager:findfont: score() = 11.335 751 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 752 | DEBUG:matplotlib.font_manager:findfont: score() = 11.05 753 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 754 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 755 | DEBUG:matplotlib.font_manager:findfont: score() = 10.25 756 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 757 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 758 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 759 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 760 | DEBUG:matplotlib.font_manager:findfont: score() = 11.05 761 | DEBUG:matplotlib.font_manager:findfont: score() = 11.05 762 | DEBUG:matplotlib.font_manager:findfont: score() = 11.335 763 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 764 | DEBUG:matplotlib.font_manager:findfont: score() = 10.335 765 | DEBUG:matplotlib.font_manager:findfont: score() = 11.05 766 | DEBUG:matplotlib.font_manager:findfont: score() = 10.43 767 | DEBUG:matplotlib.font_manager:findfont: score() = 11.525 768 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 769 | DEBUG:matplotlib.font_manager:findfont: score() = 10.25 770 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 771 | DEBUG:matplotlib.font_manager:findfont: score() = 11.05 772 | DEBUG:matplotlib.font_manager:findfont: score() = 11.335 773 | DEBUG:matplotlib.font_manager:findfont: score() = 10.335 774 | DEBUG:matplotlib.font_manager:findfont: score() = 10.335 775 | DEBUG:matplotlib.font_manager:findfont: score() = 10.44 776 | DEBUG:matplotlib.font_manager:findfont: score() = 10.335 777 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 778 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 779 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 780 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 781 | DEBUG:matplotlib.font_manager:findfont: score() = 7.698636363636363 782 | DEBUG:matplotlib.font_manager:findfont: score() = 10.145 783 | DEBUG:matplotlib.font_manager:findfont: score() = 10.24 784 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 785 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 786 | DEBUG:matplotlib.font_manager:findfont: score() = 10.335 787 | DEBUG:matplotlib.font_manager:findfont: score() = 10.335 788 | DEBUG:matplotlib.font_manager:findfont: score() = 10.535 789 | DEBUG:matplotlib.font_manager:findfont: score() = 11.335 790 | DEBUG:matplotlib.font_manager:findfont: score() = 11.24 791 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 792 | DEBUG:matplotlib.font_manager:findfont: score() = 10.25 793 | DEBUG:matplotlib.font_manager:findfont: score() = 10.335 794 | DEBUG:matplotlib.font_manager:findfont: score() = 11.335 795 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 796 | DEBUG:matplotlib.font_manager:findfont: score() = 10.335 797 | DEBUG:matplotlib.font_manager:findfont: score() = 10.24 798 | DEBUG:matplotlib.font_manager:findfont: score() = 11.24 799 | DEBUG:matplotlib.font_manager:findfont: score() = 10.25 800 | DEBUG:matplotlib.font_manager:findfont: score() = 11.24 801 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 802 | DEBUG:matplotlib.font_manager:findfont: score() = 11.335 803 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 804 | DEBUG:matplotlib.font_manager:findfont: score() = 11.05 805 | DEBUG:matplotlib.font_manager:findfont: score() = 10.335 806 | DEBUG:matplotlib.font_manager:findfont: score() = 10.335 807 | DEBUG:matplotlib.font_manager:findfont: score() = 11.335 808 | DEBUG:matplotlib.font_manager:findfont: score() = 11.05 809 | DEBUG:matplotlib.font_manager:findfont: score() = 10.335 810 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 811 | DEBUG:matplotlib.font_manager:findfont: score() = 10.335 812 | DEBUG:matplotlib.font_manager:findfont: score() = 10.24 813 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 814 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 815 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 816 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 817 | DEBUG:matplotlib.font_manager:findfont: score() = 6.888636363636364 818 | DEBUG:matplotlib.font_manager:findfont: score() = 10.24 819 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 820 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 821 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 822 | DEBUG:matplotlib.font_manager:findfont: score() = 11.05 823 | DEBUG:matplotlib.font_manager:findfont: score() = 10.335 824 | DEBUG:matplotlib.font_manager:findfont: score() = 10.335 825 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 826 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 827 | DEBUG:matplotlib.font_manager:findfont: score() = 11.05 828 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 829 | DEBUG:matplotlib.font_manager:findfont: score() = 10.335 830 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 831 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 832 | DEBUG:matplotlib.font_manager:findfont: score() = 3.9713636363636367 833 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 834 | DEBUG:matplotlib.font_manager:findfont: score() = 11.05 835 | DEBUG:matplotlib.font_manager:findfont: score() = 11.05 836 | DEBUG:matplotlib.font_manager:findfont: score() = 10.25 837 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 838 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 839 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 840 | DEBUG:matplotlib.font_manager:findfont: score() = 10.535 841 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 842 | DEBUG:matplotlib.font_manager:findfont: score() = 11.25 843 | DEBUG:matplotlib.font_manager:findfont: score() = 11.05 844 | DEBUG:matplotlib.font_manager:findfont: score() = 10.335 845 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 846 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 847 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 848 | DEBUG:matplotlib.font_manager:findfont: score() = 10.145 849 | DEBUG:matplotlib.font_manager:findfont: score() = 10.24 850 | DEBUG:matplotlib.font_manager:findfont: score() = 11.335 851 | DEBUG:matplotlib.font_manager:findfont: score() = 10.335 852 | DEBUG:matplotlib.font_manager:findfont: score() = 10.335 853 | DEBUG:matplotlib.font_manager:findfont: score() = 11.335 854 | DEBUG:matplotlib.font_manager:findfont: score() = 11.05 855 | DEBUG:matplotlib.font_manager:findfont: score() = 7.613636363636363 856 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 857 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 858 | DEBUG:matplotlib.font_manager:findfont: score() = 10.535 859 | DEBUG:matplotlib.font_manager:findfont: score() = 10.335 860 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 861 | DEBUG:matplotlib.font_manager:findfont: score() = 10.344999999999999 862 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 863 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 864 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 865 | DEBUG:matplotlib.font_manager:findfont: score() = 11.335 866 | DEBUG:matplotlib.font_manager:findfont: score() = 10.335 867 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 868 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 869 | DEBUG:matplotlib.font_manager:findfont: score() = 10.335 870 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 871 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 872 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 873 | DEBUG:matplotlib.font_manager:findfont: score() = 11.05 874 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 875 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 876 | DEBUG:matplotlib.font_manager:findfont: score() = 10.335 877 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 878 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 879 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 880 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 881 | DEBUG:matplotlib.font_manager:findfont: score() = 11.535 882 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 883 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 884 | DEBUG:matplotlib.font_manager:findfont: score() = 11.535 885 | DEBUG:matplotlib.font_manager:findfont: score() = 11.05 886 | DEBUG:matplotlib.font_manager:findfont: score() = 11.05 887 | DEBUG:matplotlib.font_manager:findfont: score() = 10.335 888 | DEBUG:matplotlib.font_manager:findfont: score() = 11.24 889 | DEBUG:matplotlib.font_manager:findfont: score() = 11.05 890 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 891 | DEBUG:matplotlib.font_manager:findfont: score() = 10.24 892 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 893 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 894 | DEBUG:matplotlib.font_manager:findfont: score() = 11.24 895 | DEBUG:matplotlib.font_manager:findfont: score() = 10.335 896 | DEBUG:matplotlib.font_manager:findfont: score() = 10.525 897 | DEBUG:matplotlib.font_manager:findfont: score() = 11.335 898 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 899 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 900 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 901 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 902 | DEBUG:matplotlib.font_manager:findfont: score() = 10.335 903 | DEBUG:matplotlib.font_manager:findfont: score() = 10.24 904 | DEBUG:matplotlib.font_manager:findfont: score() = 11.05 905 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 906 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 907 | DEBUG:matplotlib.font_manager:findfont: score() = 11.335 908 | DEBUG:matplotlib.font_manager:findfont: score() = 10.24 909 | DEBUG:matplotlib.font_manager:findfont: score() = 10.24 910 | DEBUG:matplotlib.font_manager:findfont: score() = 11.335 911 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 912 | DEBUG:matplotlib.font_manager:findfont: score() = 11.05 913 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 914 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 915 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 916 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 917 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 918 | DEBUG:matplotlib.font_manager:findfont: score() = 11.05 919 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 920 | DEBUG:matplotlib.font_manager:findfont: score() = 10.24 921 | DEBUG:matplotlib.font_manager:findfont: score() = 11.05 922 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 923 | DEBUG:matplotlib.font_manager:findfont: score() = 10.335 924 | DEBUG:matplotlib.font_manager:findfont: score() = 10.25 925 | DEBUG:matplotlib.font_manager:findfont: score() = 10.535 926 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 927 | DEBUG:matplotlib.font_manager:findfont: score() = 10.335 928 | DEBUG:matplotlib.font_manager:findfont: score() = 11.335 929 | DEBUG:matplotlib.font_manager:findfont: score() = 10.335 930 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 931 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 932 | DEBUG:matplotlib.font_manager:findfont: score() = 6.8986363636363635 933 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 934 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 935 | DEBUG:matplotlib.font_manager:findfont: score() = 11.05 936 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 937 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 938 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 939 | DEBUG:matplotlib.font_manager:findfont: score() = 11.05 940 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 941 | DEBUG:matplotlib.font_manager:findfont: score() = 11.05 942 | DEBUG:matplotlib.font_manager:findfont: score() = 10.335 943 | DEBUG:matplotlib.font_manager:findfont: score() = 11.05 944 | DEBUG:matplotlib.font_manager:findfont: score() = 10.335 945 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 946 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 947 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 948 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 949 | DEBUG:matplotlib.font_manager:findfont: score() = 10.24 950 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 951 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 952 | DEBUG:matplotlib.font_manager:findfont: score() = 11.05 953 | DEBUG:matplotlib.font_manager:findfont: score() = 11.05 954 | DEBUG:matplotlib.font_manager:findfont: score() = 11.335 955 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 956 | DEBUG:matplotlib.font_manager:findfont: score() = 11.05 957 | DEBUG:matplotlib.font_manager:findfont: score() = 10.535 958 | DEBUG:matplotlib.font_manager:findfont: score() = 10.335 959 | DEBUG:matplotlib.font_manager:findfont: score() = 11.05 960 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 961 | DEBUG:matplotlib.font_manager:findfont: score() = 10.24 962 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 963 | DEBUG:matplotlib.font_manager:findfont: score() = 11.335 964 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 965 | DEBUG:matplotlib.font_manager:findfont: score() = 10.525 966 | DEBUG:matplotlib.font_manager:findfont: score() = 10.335 967 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 968 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 969 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 970 | DEBUG:matplotlib.font_manager:findfont: score() = 10.24 971 | DEBUG:matplotlib.font_manager:findfont: score() = 10.335 972 | DEBUG:matplotlib.font_manager:findfont: score() = 10.525 973 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 974 | DEBUG:matplotlib.font_manager:findfont: score() = 10.335 975 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 976 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 977 | DEBUG:matplotlib.font_manager:findfont: score() = 11.145 978 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 979 | DEBUG:matplotlib.font_manager:findfont: score() = 10.335 980 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 981 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 982 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 983 | DEBUG:matplotlib.font_manager:findfont: score() = 11.43 984 | DEBUG:matplotlib.font_manager:findfont: score() = 11.05 985 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 986 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 987 | DEBUG:matplotlib.font_manager:findfont: score() = 10.335 988 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 989 | DEBUG:matplotlib.font_manager:findfont: score() = 10.24 990 | DEBUG:matplotlib.font_manager:findfont: score() = 10.335 991 | DEBUG:matplotlib.font_manager:findfont: score() = 11.335 992 | DEBUG:matplotlib.font_manager:findfont: score() = 10.335 993 | DEBUG:matplotlib.font_manager:findfont: score() = 10.335 994 | DEBUG:matplotlib.font_manager:findfont: score() = 11.05 995 | DEBUG:matplotlib.font_manager:findfont: score() = 10.335 996 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 997 | DEBUG:matplotlib.font_manager:findfont: score() = 10.25 998 | DEBUG:matplotlib.font_manager:findfont: score() = 4.971363636363637 999 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 1000 | DEBUG:matplotlib.font_manager:findfont: score() = 10.525 1001 | DEBUG:matplotlib.font_manager:findfont: score() = 10.335 1002 | DEBUG:matplotlib.font_manager:findfont: score() = 11.145 1003 | DEBUG:matplotlib.font_manager:findfont: score() = 10.335 1004 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 1005 | DEBUG:matplotlib.font_manager:findfont: score() = 10.535 1006 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 1007 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 1008 | DEBUG:matplotlib.font_manager:findfont: score() = 10.335 1009 | DEBUG:matplotlib.font_manager:findfont: score() = 10.335 1010 | DEBUG:matplotlib.font_manager:findfont: score() = 11.335 1011 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 1012 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 1013 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 1014 | DEBUG:matplotlib.font_manager:findfont: score() = 11.25 1015 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 1016 | DEBUG:matplotlib.font_manager:findfont: score() = 11.335 1017 | DEBUG:matplotlib.font_manager:findfont: score() = 10.145 1018 | DEBUG:matplotlib.font_manager:findfont: score() = 10.24 1019 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 1020 | DEBUG:matplotlib.font_manager:findfont: score() = 10.335 1021 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 1022 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 1023 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 1024 | DEBUG:matplotlib.font_manager:findfont: score() = 11.24 1025 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 1026 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 1027 | DEBUG:matplotlib.font_manager:findfont: score() = 10.335 1028 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 1029 | DEBUG:matplotlib.font_manager:findfont: score() = 11.525 1030 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 1031 | DEBUG:matplotlib.font_manager:findfont: score() = 10.335 1032 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 1033 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 1034 | DEBUG:matplotlib.font_manager:findfont: score() = 11.335 1035 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 1036 | DEBUG:matplotlib.font_manager:findfont: score() = 10.145 1037 | DEBUG:matplotlib.font_manager:findfont: score() = 11.335 1038 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 1039 | DEBUG:matplotlib.font_manager:findfont: score() = 10.335 1040 | DEBUG:matplotlib.font_manager:findfont: score() = 10.335 1041 | DEBUG:matplotlib.font_manager:findfont: score() = 10.145 1042 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 1043 | DEBUG:matplotlib.font_manager:findfont: score() = 10.335 1044 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 1045 | DEBUG:matplotlib.font_manager:findfont: score() = 11.05 1046 | DEBUG:matplotlib.font_manager:findfont: score() = 11.335 1047 | DEBUG:matplotlib.font_manager:findfont: score() = 11.05 1048 | DEBUG:matplotlib.font_manager:findfont: score() = 11.05 1049 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 1050 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 1051 | DEBUG:matplotlib.font_manager:findfont: score() = 10.335 1052 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 1053 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 1054 | DEBUG:matplotlib.font_manager:findfont: score() = 11.05 1055 | DEBUG:matplotlib.font_manager:findfont: score() = 11.05 1056 | DEBUG:matplotlib.font_manager:findfont: score() = 11.05 1057 | DEBUG:matplotlib.font_manager:findfont: score() = 10.145 1058 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 1059 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 1060 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 1061 | DEBUG:matplotlib.font_manager:findfont: score() = 10.335 1062 | DEBUG:matplotlib.font_manager:findfont: score() = 7.413636363636363 1063 | DEBUG:matplotlib.font_manager:findfont: score() = 10.535 1064 | DEBUG:matplotlib.font_manager:findfont: score() = 10.24 1065 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 1066 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 1067 | DEBUG:matplotlib.font_manager:findfont: score() = 11.335 1068 | DEBUG:matplotlib.font_manager:findfont: score() = 11.05 1069 | DEBUG:matplotlib.font_manager:findfont: score() = 10.335 1070 | DEBUG:matplotlib.font_manager:findfont: score() = 10.24 1071 | DEBUG:matplotlib.font_manager:findfont: score() = 10.24 1072 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 1073 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 1074 | DEBUG:matplotlib.font_manager:findfont: score() = 10.335 1075 | DEBUG:matplotlib.font_manager:findfont: score() = 11.05 1076 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 1077 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 1078 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 1079 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 1080 | DEBUG:matplotlib.font_manager:findfont: score() = 10.335 1081 | DEBUG:matplotlib.font_manager:findfont: score() = 11.335 1082 | DEBUG:matplotlib.font_manager:findfont: score() = 10.335 1083 | DEBUG:matplotlib.font_manager:findfont: score() = 10.335 1084 | DEBUG:matplotlib.font_manager:findfont: score() = 10.335 1085 | DEBUG:matplotlib.font_manager:findfont: score() = 11.05 1086 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 1087 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 1088 | DEBUG:matplotlib.font_manager:findfont: score() = 10.335 1089 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 1090 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 1091 | DEBUG:matplotlib.font_manager:findfont: score() = 11.05 1092 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 1093 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 1094 | DEBUG:matplotlib.font_manager:findfont: score() = 10.335 1095 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 1096 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 1097 | DEBUG:matplotlib.font_manager:findfont: score() = 11.05 1098 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 1099 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 1100 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 1101 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 1102 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 1103 | DEBUG:matplotlib.font_manager:findfont: score() = 4.6863636363636365 1104 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 1105 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 1106 | DEBUG:matplotlib.font_manager:findfont: score() = 11.05 1107 | DEBUG:matplotlib.font_manager:findfont: score() = 10.335 1108 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 1109 | DEBUG:matplotlib.font_manager:findfont: score() = 10.24 1110 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 1111 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 1112 | DEBUG:matplotlib.font_manager:findfont: score() = 11.24 1113 | DEBUG:matplotlib.font_manager:findfont: score() = 3.6863636363636365 1114 | DEBUG:matplotlib.font_manager:findfont: score() = 6.698636363636363 1115 | DEBUG:matplotlib.font_manager:findfont: score() = 10.05 1116 | DEBUG:matplotlib.font_manager:findfont: score() = 11.335 1117 | DEBUG:matplotlib.font_manager:findfont: Matching :family=sans-serif:style=normal:variant=normal:weight=normal:stretch=normal:size=10.0 to DejaVu Sans ('C:\\Users\\Hill\\Anaconda3\\lib\\site-packages\\matplotlib\\mpl-data\\fonts\\ttf\\DejaVuSans.ttf') with score of 0.050000. 1118 | --------------------------------------------------------------------------------