mas lab03

This commit is contained in:
Ivan I. Ovchinnikov 2023-01-17 23:02:14 +03:00
parent 5b1ecb625a
commit 091376e891
10 changed files with 8754 additions and 0 deletions

441
03-mas-lab-03-report.tex Normal file
View File

@ -0,0 +1,441 @@
\documentclass{article}
\input{../common-preamble}
\input{../bmstu-preamble}
\input{../fancy-listings-preamble}
\numerationTop
\begin{document}
\fontsize{14pt}{14pt}\selectfont
\pagestyle{empty}
\makeBMSTUHeader
\makeReportTitle{лабораторной}{3}{Разработка программы глубокого обучения мультиагентной системы}{Мультиагентные интеллектуальные системы}{}{Большаков В.Э.}
\newpage
\pagestyle{fancy}
\tableofcontents
\newpage
\sloppy
\section{Цель работы}
Разработать лучшей программы глубокого обучения мультиагентной системы.
\section{Задачи}
\begin{enumerate}
\item Создать команду, придумать или адаптировать стратегию игры, разработать и обучить бота используя технологии Deep Reinforcement Learning и библиотеки глубокого обучения Keras, TensorFlow или PyTorch.
\item Для создания проекта использовать виртуальное окружение (virtual environment), а для защиты проекта предоставить версии
использованных библиотек.
\item Обучить агентов и набрать как можно больше очков в мультиагентной среде.
\end{enumerate}
\section{Теоретическая часть}
Описание среды в приложениях \hrf{appendix:MPE} и \hrf{appendix:adversary}
\subsection{Многоагентные среды}
Большинство разработок в области обучения с подкреплением относятся к одноагентным областям. Однако существует ряд важных примеров, когда несколько агентов одновременно обучаются для координации своих действий. В многоагентных средах из-за постоянно меняющейся политики принятия решений агентами существует одна серьезная проблема -- нестационарность среды с точки зрения каждого отдельного агента.
Стандартные алгоритмы RL не очень подходят для многоагентных сред. Исследователи предложили различные подходы для решения этой проблемы нестационарности, которые можно разделить на централизованные и децентрализованные архитектуры.
\subsection{Централизованная и децентрализованная архитектуры}
При децентрализованном обучении агенты обучаются отдельно друг от друга. Каждый агент обучает свою сеть политик, используя в качестве входных данных локальные наблюдения. Чтобы справиться с нестационарностью, обычно используется некоторая форма самовоспроизведения, когда агенты играют со своими текущими или предыдущими версиями, чтобы выучить оптимальную политику.
При централизованном обучении агенты коллективно моделируются определенным образом. В 2017 предложили модель MADDPG, многоагентную централизованную архитектуру, использующую детерминированный алгоритм градиента политики. Этот алгоритм, основанный на архитектуре "актор-критик", имеет централизованного критика и децентрализованного агента. Централизованный критик советует, как обновить политику агента, глядя на глобальную информацию. Поскольку каждый агент имеет доступ к наблюдениям и действиям всех других агентов через критика, оценка градиента политики обусловлена политикой других агентов, и, таким образом, решается проблема нестационарности. Во время тестирования централизованный критик удаляется, остаются только агенты, их политики и локальные наблюдения.
Общий алгоритм Q-обучения выглядит следующим образом:
\[ Q^{new}(s_t, a_t) \gets (1-\alpha) \cdot Q(s_t, a_t) + \alpha (r_t + \gamma \cdot max_a(Q(s_{t+1}, a)))\]
То есть агент делает следующий шаг (переходит в новое состояние) исходя не только из локально оптимального решения (жадный алгоритм), но и потенциальной будущей общей возможной награды. На каждый новый шаг агента, кроме коэффициента обучаемости, также накладывается дисконтирующий фактор и выдаётся непосредственная награда.
\subsection{MADDPG}
Multi-Agent Deep Deterministic Policy Gradient
\begin{figure}[H]
\centering
\includegraphics[width=6cm]{03-mas-lab-03-maddpg.png}
\caption{Мультагентное централизованное градиентное поведение}
\label{pic:}
\end{figure}
В то время как в DDPG у нас есть только один агент. Здесь у нас есть несколько агентов со своими собственными сетями агентов и критиков. Актор-сеть принимает на вход локальное наблюдение агента и выдает рекомендуемое действие, так что ничего нового по сравнению с актор-сетью DDPG. Напротив, сеть критика принимает на вход глобальное наблюдение среды, поэтому она принимает на вход не только состояние среды и действия агента, но и локальные наблюдения и действия других агентов. Выходом критической сети по-прежнему будет оценка Q-значения. Таким образом, критическая сеть используется только в обучающей части, чтобы дать агенту глобальное видение для адаптации к глобальной среде и действиям других агентов. Таким образом, агенты могут научиться стратегии сотрудничества или конкуренции. Далее, поскольку обучение каждого агента обусловлено наблюдением и действиями всех других агентов, каждый агент воспринимает окружающую среду как стационарную.
\section{Выполнение}
На первом этапе обучения была выбрана сеть MADDPG со следующими гиперпараметрами обучения:
\begin{itemize}
\item Эпизодов обучения -- 1100000
\item шум -- 0.1
\item batch-size -- 256
\item learn rate actor = 1e-4
\item learn rate critic = 1e-3
\item $\tau = 0.01$
\item $\varepsilon = 0.1$
\item $\gamma = 0.95$
\end{itemize}
И актор и критик каждого агента обучались с одинаковой нейросетью внутри:
\begin{itemize}
\item 3 слоя
\item 64 нейрона на слое
\item Adam
\end{itemize}
В результате обучения наилучий коэффициент $-6.469$ (усреднённый по тысяче эпизодов) по сумме агентов был получен на миллионном эпизоде обучения. Графики обучения представлены на рис. \hrf{pic:first}. Полный график на рис. \hrf{pic:first-full}, также представлен график обучения (\hrf{pic:first-top}), на котором убраны явно случайные действия агентов в начале обучения.
\begin{figure}[H]
\centering
\begin{subfigure}[b]{0.95\textwidth}
\centering
\resizebox{\textwidth}{!}{\input{pics/03-mas-lab-03-simplefull.pgf}}
\caption{Полный}
\label{pic:first-full}
\end{subfigure}
\begin{subfigure}[b]{0.95\textwidth}
\centering
\resizebox{\textwidth}{!}{\input{pics/03-mas-lab-03-simple.pgf}}
\caption{Без случайных ходов}
\label{pic:first-top}
\end{subfigure}
\caption{Первый вариант обучения}
\label{pic:first}
\end{figure}
Далее были опробованы несколько вариантов:
\begin{enumerate}
\item
\begin{itemize}
\item Эпизодов обучения -- 1000000
\item шум -- 0.1
\item batch-size -- 256
\item learn rate actor = 1e-4
\item learn rate critic = 1e-3
\item $\tau = 0.01$
\item $\varepsilon = 0.1$
\item $\gamma = 0.9$
\end{itemize}
Актор и критик каждого агента обучались со следующими настройками нейросетей:
\begin{itemize}
\item Актор: 4 слоя, 256 нейронов, Adam
\item Критик: 5 слоёв, 128 нейронов, Adamax
\end{itemize}
В результате обучения наилучий коэффициент $-4.569$ (усреднённый по тысяче эпизодов) по сумме агентов был получен на миллионном эпизоде обучения. Графики обучения представлены на рис. \hrf{pic:me2}.
\begin{figure}[H]
\centering
\resizebox{\textwidth}{!}{\input{pics/03-mas-lab-03-me2.pgf}}
\caption{ }
\label{pic:me2}
\end{figure}
\item Далее был проведён эксперимент со следующими параметрами:
\begin{itemize}
\item шум -- 0.1
\item batch-size -- 256
\item learn rate actor = 1e-4
\item learn rate critic = 1e-3
\item $\tau = 0.02$
\item $\varepsilon = 0.1$
\item $\gamma = 0.95$
\end{itemize}
Актор и критик каждого агента обучались со следующими настройками нейросетей:
\begin{itemize}
\item Актор: 4 слоя, 128 нейронов, AdamW
\item Критик: 3 слоя, 256 нейронов, RMSprop
\end{itemize}
В первой части обучения было проведено 200000 эпизодов обучения, на 160000 эпизодах был достигнут локальный максимум $-19.613$ (рис. \hrf{tanya}), настройки сети были изменены (дисконтирующий множитель уменьшен до 0.9, а размер пакета batch-size увеличен до значения 512) и проведено ещё 460000 циклов обучения.
\begin{figure}[H]
\centering
\resizebox{\textwidth}{!}{\input{pics/03-mas-lab-03-tanya.pgf}}
\caption{ }
\label{pic:tanya}
\end{figure}
Эксперимент показал, что значительно снижать дисконтирующий фактор даже для неплохо действующей нейросети -- плохая идея, агенты начинают вести себя почти случайным образом, видимо, надеясь на то, что уже достаточно хорошо изучили среду и за них всю награду заработает другой агент (рис. \hrf{tanya-after})
\begin{figure}[H]
\centering
\resizebox{\textwidth}{!}{\input{pics/03-mas-lab-03-tanya-after.pgf}}
\caption{ }
\label{pic:tanya-after}
\end{figure}
\item
\begin{itemize}
\item Эпизодов обучения -- 1100000
\item шум -- 0.1
\item batch-size -- 256
\item learn rate actor = 1e-4
\item learn rate critic = 1e-3
\item $\tau = 0.01$
\item $\varepsilon = 0.1$
\item $\gamma = 0.95$
\end{itemize}
Актор и критик каждого агента обучались с одинаковыми настройками нейросетей: 4 слоя, 128 нейронов, Adamax.
Заданные настройки показали наилучший результат ($-1.965$), приведённый на графике \hrf{pic:lama} для уточнения, из графика были удалены начальные этапы обучения со случайными действиями агентов, финальный этап обучения представлен на рис \hrf{pic:lamashort}.
\begin{figure}[H]
\centering
\begin{subfigure}[b]{0.95\textwidth}
\centering
\resizebox{\textwidth}{!}{\input{pics/03-mas-lab-03-Lama.pgf}}
\caption{Полный}
\label{pic:lama}
\end{subfigure}
\begin{subfigure}[b]{0.95\textwidth}
\centering
\resizebox{\textwidth}{!}{\input{pics/03-mas-lab-03-Lamashort.pgf}}
\caption{Без случайных ходов}
\label{pic:lamashort}
\end{subfigure}
\caption{Вариант обучения с алгоритмом Adamax}
\label{pic:first}
\end{figure}
\end{enumerate}
%теоретическая часть, графики экспериментов, описание стратегии мультиагентной игры, листинг программы с комментариями, список использованной литературы) + видеофайл.
\section{Выводы}
В результате достаточно долгого обучения агенты «понимают», какие действия приводят, если не к награде, то хотя бы к отсутствию наказания, и если не пытаются добраться до «зелёной точки», то хотя бы разделяются так, чтобы красный агент не преследовал их. Все стандартные сети, проверенные в этой работе обучаются до «приемлемых» коэффициентов $\approx < 20$, в то время как попытка обучения с постепенно увеличивающимся множителем коэффициента обучения (для актора 1е-3 через 50000, и 150000 эпизодов был повышен до 1,5е-3 и 1е-4, соответственно), к ощутимым результатам не привели, график общей оценки продолжил носить псевдослучайный характер и не был приведён в этом отчёте.
К отчёту приложен архив с двумя видео наиболее обученных агентов и архив приложения с Jupyter Notebook (Google Colab) для обучения и запуска среды на обучение и непосредственную игру. Начальный вариант возможно найти в репозитории \href{https://git.iovchinnikov.ru/ivan-igorevich/bmstu-marl}{https://git.iovchinnikov.ru/ivan-igorevich/bmstu-marl}.
\printbibliography
\newpage
\appendix
\setcounter{secnumdepth}{3}
\section*{Приложения}
\addcontentsline{toc}{section}{Приложения}
\renewcommand{\thesubsection}{\Asbuk{subsection}}
\subsection{MADDPG настройки и классы актора, критика}
\label{appendix:maddpg}
\begin{lstlisting}[language=Python,style=PyCodeStyle]
import torch
import torch.nn as nn
import torch.nn.functional as F
# define the actor network
class Actor(nn.Module):
def __init__(self, args, agent_id):
super(Actor, self).__init__()
self.max_action = args.high_action
self.fc1 = nn.Linear(args.obs_shape[agent_id], 128)
self.fc2 = nn.Linear(128, 128)
self.fc3 = nn.Linear(128, 128)
self.fc4 = nn.Linear(128, 128)
self.action_out = nn.Linear(128, args.action_shape[agent_id])
def forward(self, x):
x = F.relu(self.fc1(x))
x = F.relu(self.fc2(x))
x = F.relu(self.fc3(x))
x = F.relu(self.fc4(x))
actions = self.max_action * torch.tanh(self.action_out(x))
return actions
class Critic(nn.Module):
def __init__(self, args):
super(Critic, self).__init__()
self.max_action = args.high_action
self.fc1 = nn.Linear(sum(args.obs_shape) + sum(args.action_shape), 128)
self.fc2 = nn.Linear(128, 128)
self.fc3 = nn.Linear(128, 128)
self.fc4 = nn.Linear(128, 128)
self.q_out = nn.Linear(128, 1)
def forward(self, state, action):
state = torch.cat(state, dim=1)
for i in range(len(action)):
action[i] /= self.max_action
action = torch.cat(action, dim=1)
x = torch.cat([state, action], dim=1)
x = F.relu(self.fc1(x))
x = F.relu(self.fc2(x))
x = F.relu(self.fc3(x))
x = F.relu(self.fc4(x))
q_value = self.q_out(x)
return q_value
import torch
import os
from maddpg.actor_critic import Actor, Critic
class MADDPG:
def __init__(self, args, agent_id):
self.args = args
self.agent_id = agent_id
self.train_step = 0
# create the network
self.actor_network = Actor(args, agent_id)
self.critic_network = Critic(args)
# build up the target network
self.actor_target_network = Actor(args, agent_id)
self.critic_target_network = Critic(args)
# load the weights into the target networks
self.actor_target_network.load_state_dict(self.actor_network.state_dict())
self.critic_target_network.load_state_dict(self.critic_network.state_dict())
# create the optimizer
self.actor_optim = torch.optim.Adamax(self.actor_network.parameters(), lr=self.args.lr_actor)
self.critic_optim = torch.optim.Adamax(self.critic_network.parameters(), lr=self.args.lr_critic)
# create the dict for store the model
if not os.path.exists(self.args.save_dir):
os.mkdir(self.args.save_dir)
# path to save the model
self.model_path = self.args.save_dir + '/' + self.args.scenario_name
if not os.path.exists(self.model_path):
os.mkdir(self.model_path)
self.model_path = self.model_path + '/' + 'agent_%d' % agent_id
if not os.path.exists(self.model_path):
os.mkdir(self.model_path)
if os.path.exists(self.model_path + '/actor_params.pkl'):
self.actor_network.load_state_dict(torch.load(self.model_path + '/actor_params.pkl'))
self.critic_network.load_state_dict(torch.load(self.model_path + '/critic_params.pkl'))
print('Agent {} successfully loaded actor_network: {}'.format(self.agent_id,
self.model_path + '/actor_params.pkl'))
print('Agent {} successfully loaded critic_network: {}'.format(self.agent_id,
self.model_path + '/critic_params.pkl'))
# soft update
def _soft_update_target_network(self):
for target_param, param in zip(self.actor_target_network.parameters(), self.actor_network.parameters()):
target_param.data.copy_((1 - self.args.tau) * target_param.data + self.args.tau * param.data)
for target_param, param in zip(self.critic_target_network.parameters(), self.critic_network.parameters()):
target_param.data.copy_((1 - self.args.tau) * target_param.data + self.args.tau * param.data)
# update the network
def train(self, transitions, other_agents):
for key in transitions.keys():
transitions[key] = torch.tensor(transitions[key], dtype=torch.float32)
r = transitions['r_%d' % self.agent_id] # reward
o, u, o_next = [], [], [] # agent
for agent_id in range(self.args.n_agents):
o.append(transitions['o_%d' % agent_id])
u.append(transitions['u_%d' % agent_id])
o_next.append(transitions['o_next_%d' % agent_id])
# calculate the target Q value function
u_next = []
with torch.no_grad():
index = 0
for agent_id in range(self.args.n_agents):
if agent_id == self.agent_id:
u_next.append(self.actor_target_network(o_next[agent_id]))
else:
# other_agents
u_next.append(other_agents[index].policy.actor_target_network(o_next[agent_id]))
index += 1
q_next = self.critic_target_network(o_next, u_next).detach()
target_q = (r.unsqueeze(1) + self.args.gamma * q_next).detach()
# the q loss
q_value = self.critic_network(o, u)
critic_loss = (target_q - q_value).pow(2).mean()
# the actor loss
u[self.agent_id] = self.actor_network(o[self.agent_id])
actor_loss = - self.critic_network(o, u).mean()
# if self.agent_id == 0:
# print('critic_loss is {}, actor_loss is {}'.format(critic_loss, actor_loss))
# update the network
self.actor_optim.zero_grad()
actor_loss.backward()
self.actor_optim.step()
self.critic_optim.zero_grad()
critic_loss.backward()
self.critic_optim.step()
self._soft_update_target_network()
if self.train_step > 0 and self.train_step % self.args.save_rate == 0:
self.save_model(self.train_step)
self.train_step += 1
def save_model(self, train_step):
num = str(train_step // self.args.save_rate)
model_path = os.path.join(self.args.save_dir, self.args.scenario_name)
if not os.path.exists(model_path):
os.makedirs(model_path)
model_path = os.path.join(model_path, 'agent_%d' % self.agent_id)
if not os.path.exists(model_path):
os.makedirs(model_path)
torch.save(self.actor_network.state_dict(), model_path + '/' + num + '_actor_params.pkl')
torch.save(self.critic_network.state_dict(), model_path + '/' + num + '_critic_params.pkl')
\end{lstlisting}
\subsection{Описание PettingZoo MPE}
\label{appendix:MPE}
\nocite{mordatch2017emergence}
\nocite{lowe2017multi}
Среды с несколькими частицами (MPE) — это набор коммуникационно-ориентированной среды, в которой агенты частиц могут (иногда) перемещаться, общаться, видеть друг друга, толкать друг друга и взаимодействовать с фиксированными ориентирами.
Эти среды взяты из кодовой базы OpenAI MPE с несколькими незначительными исправлениями, в основном связанными с дискретным пространством действий по умолчанию, обеспечением согласованности вознаграждений и очисткой пространства наблюдения определенных сред.
\paragraph{Типы сред} Среды Simple Adversary, Simple Crypto, Simple Push, Simple Tag и Simple World Comm являются враждебными («хороший» агент, получающий вознаграждение, означает, что «противник» наказывается, и наоборот, хотя и не всегда с нулевой суммой). В большинстве таких сред «хорошие» агенты отображаются зеленым цветом, а команда «противников» — красным. Среды Simple Reference, Simple Speaker Listener и Simple Spread носят кооперативный характер (агенты должны работать вместе для достижения своих целей и получать различные вознаграждения, основанные на их собственном успехе и успехах других агентов).
\paragraph{Ключевые идеи}
\begin{itemize}
\item Ориентиры: ориентиры — это статические круглые элементы окружающей среды, которые нельзя контролировать. В некоторых средах, таких как Simple, это места назначения, которые влияют на вознаграждение агентов в зависимости от того, насколько близко к ним находятся агенты. В других средах они могут быть препятствиями, блокирующими движение агентов. Более подробно они описаны в документации для каждой среды.
\item Видимость: когда агент виден другому агенту, наблюдение этого другого агента содержит относительное положение первого агента (а в Simple World Comm и Simple Tag — скорость первого агента). Если агент временно скрыт (возможно только в Simple World Comm), тогда позиция и скорость агента обнуляются.
\item Коммуникация: некоторые агенты в некоторых средах могут транслировать сообщение как часть своего действия (дополнительную информацию см. в области действия), которое будет передано каждому агенту, которому разрешено видеть это сообщение. В Simple Crypto это сообщение используется, чтобы сигнализировать о том, что Боб и Ева реконструировали сообщение.
\item Цвет: поскольку все агенты отображаются в виде кругов, агенты могут быть идентифицированы человеком только по их цвету, поэтому цвет агентов описывается в большинстве сред. Агенты не наблюдают цвет.
\item Расстояния: Ориентиры и агенты обычно начинаются с равномерного случайного размещения на карте от -1 до 1. Это означает, что они обычно находятся на расстоянии около 1-2 единиц друг от друга. Это важно иметь в виду, рассуждая о шкале наград (которая часто зависит от расстояния) и пространстве наблюдения, которое содержит относительные и абсолютные положения.
\end{itemize}
\paragraph{Прекращение} Игра завершается после выполнения количества циклов, указанного аргументом среды \code{max_cycles}. По умолчанию для всех сред установлено значение 25 циклов, как и в исходном коде OpenAI.
\paragraph{Пространство наблюдения} Пространство наблюдения агента представляет собой вектор, обычно состоящий из положения и скорости агента, относительных положений и скоростей других агентов, относительных положений ориентиров, типов ориентиров и агентов, а также сообщений, полученных от других агентов. Точная форма этого подробно описана в документации по средам.
Если агент не может видеть или наблюдать за общением второго агента, то второй агент не включается в пространство наблюдения первого, в результате чего разные агенты имеют разные размеры пространства наблюдения в определенных средах.
\paragraph{Пространство действий} Примечание. MPE OpenAI по умолчанию использует непрерывные пространства действий.
Дискретное пространство действий (по умолчанию):
Пространство действий — это дискретное пространство действий, представляющее комбинации движений и коммуникаций, которые может выполнять агент. Агенты, которые могут двигаться, могут выбирать между 4 основными направлениями или ничего не делать. Агенты, которые могут общаться, выбирают от 2 до 10 опций связи в зависимости от среды, которые передают сообщение всем агентам, которые могут его услышать.
Пространство непрерывного действия (установлено параметром \code{Continuous_actions=True}):
Пространство действий — это непрерывное пространство действий, представляющее движения и коммуникации, которые может выполнять агент. Агенты, которые могут двигаться, могут вводить скорость от 0,0 до 1,0 в каждом из четырех основных направлений, где противоположные скорости, например. левое и правое суммируются. Агенты, которые могут обмениваться данными, могут выводить непрерывное значение по каждому каналу связи в среде, к которой у них есть доступ.
\paragraph{Рендеринг} Рендеринг отображает сцену в окне, которое автоматически увеличивается, если агенты выходят за его границы. Общение отображается в нижней части сцены. Метод render() также возвращает карту пикселей визуализируемой области.
\subsection{Описание Simple Adversary}
\label{appendix:adversary}
В этой среде есть 1 противник (красный), N хороших агентов (зеленый), N ориентиров (по умолчанию N=2). Все агенты наблюдают за положением ориентиров и других агентов. Одним из ориентиров является «целевой ориентир» (зеленый цвет). Хорошие агенты вознаграждаются в зависимости от того, насколько близко один из них находится к целевому ориентиру, но отрицательно вознаграждаются в зависимости от того, насколько близко противник находится к целевому ориентиру. Противник получает вознаграждение в зависимости от расстояния до цели, но он не знает, какой ориентир является целевым ориентиром. Все награды представляют собой немасштабированное евклидово расстояние (см. основную документацию MPE для среднего расстояния). Это означает, что хорошие агенты должны научиться «разделяться» и охватывать все ориентиры, чтобы обмануть противника.
Пространство наблюдения агента: [\code{self_pos}, \code{self_vel}, \code{goal_rel_position}, \code{landmark_rel_position}, \code{other_agent_rel_positions}]
Зона наблюдения противника: [\code{landmark_rel_position}, \code{other_agents_rel_positions}]
Пространство действий агента: [\code{no_action}, \code{move_left}, \code{move_right}, \code{move_down}, \code{move_up}]
Пространство действий противника: [\code{no_action}, \code{move_left}, \code{move_right}, \code{move_down}, \code{move_up}]
Аргументы
\code{simple_adversary_v2.env(N=2, max_cycles=25, Continuous_actions=False)}
N: количество хороших агентов и ориентиров
\code{max_cycles}: количество кадров (шаг для каждого агента) до завершения игры
\code{Continuous_actions}: являются ли пространства действий агента дискретными (по умолчанию) или непрерывными.
\end{document}

141
03-mas-lab-hw.tex Normal file
View File

@ -0,0 +1,141 @@
\documentclass[a4paper]{article}
\input{../common-preamble}
\input{../bmstu-preamble}
\input{../fancy-listings-preamble}
\numerationTop
\begin{document}
\fontsize{14pt}{14pt}\selectfont % Вполне очевидно, что мы хотим 14й шрифт, все его хотят
\thispagestyle{empty}
\makeBMSTUHeader
\makeReportTitle{домашней}{}{Методология проектирования МАС}{Мультиагентные интеллектуальные системы}{}{В.Э. Большаков}
\newpage
\thispagestyle{empty}
\tableofcontents
\newpage
\pagestyle{fancy}
\sloppy
\begin{center}
\Huge MaSE methodology
\end{center}
\section*{Кратко}
MaSE предлагает подробный подход к анализу и разработке мультиагентных систем. MaSE объединяет несколько устоявшихся моделей в комплексную методологию и предоставляет набор шагов, которые показывают, как получить новые модели из существующих. Таким образом, MaSE направляет разработчика в процессе анализа и проектирования. Будущая работа над MaSE будет сосредоточена на его специализации для использования в адаптивных мультиагентных и кооперативных роботизированных системах на основе теоретико-организационного подхода. В настоящее время мы разрабатываем организационную модель, которая предоставит знания, необходимые команде программных или аппаратных агентов для автоматической адаптации к изменениям в их среде, а также для организации и реорганизации для достижения командных целей.
\section{Введение}
В этой главе представлено введение в разработку многоагентных систем (Multiagent Systems Engineering, MaSE), которая представляет собой методологию полного жизненного цикла для анализа, проектирования и разработки гетерогенных МАС (Multi Agent System, MAS). Для этого MaSE использует ряд графических моделей, полученных из стандартных моделей UML, для описания типов агентов в системе и их интерфейсов с другими агентами, а также независимое от архитектуры подробное определение внутренней структуры агента. Основное внимание в MaSE уделяется руководству проектировщиком от первоначального набора требований к анализу, проектированию и внедрению работающей МАС.
MaSE рассматривает МАС как следующий уровень абстракции над объектно-ориентированной парадигмой, в которой агенты являются специализированными объектами. Вместо простых объектов с методами, которые могут вызываться другими объектами, агенты взаимодействуют друг с другом и активно действуют для достижения индивидуальных и общесистемных целей.
Авторы статьи также предлагают инструмент agentTool. AgentTool можно бесплатно загрузить с веб-страницы agentTool по адресу http://www.cis.ksu. edu/~sdeloach. AgentTool -- это полностью интерактивный инструмент разработки программного обеспечения с графическим интерфейсом, который полностью поддерживает каждый этап анализа и проектирования MaSE.
\section{Методология}
Методология MaSE является специализацией более традиционных методологий разработки программного обеспечения. Общая работа MaSE следует фазам и шагам, показанным ниже, и использует связанные с этими шагами модели.
Фазы/Модели
\begin{enumerate}
\item Фаза анализа
\begin{enumerate}
\item Фиксация целей / Иерархия целей
\item Применение вариантов использования / Вариантов использования, диаграмма последовательности
\item Уточнение ролей / Параллельных задач, ролевая
\end{enumerate}
\item Этап проектирования
\begin{enumerate}
\item Создание классов агентов / Диаграммы классов агентов
\item Построение разговоров / Диаграммы разговоров
\item Сборка классов агентов / Диаграммы архитектуры агентов
\item Схемы проектирования / развертывания
\end{enumerate}
\end{enumerate}
Хотя методология представлена последовательно, на практике она является итеративной. Цель состоит в том, чтобы проектировщик мог свободно перемещаться между шагами и фазами, чтобы с каждым последующим проходом добавлялись дополнительные детали и, в конце концов, создавался полный и непротиворечивый проект системы. Одной из сильных сторон MaSE является возможность отслеживать изменения в течение всего процесса. Каждый объект, созданный на этапах анализа и проектирования, можно проследить вперед или назад по различным этапам до других связанных объектов.
\section{Фаза анализа}
На этапе анализа MaSE создается набор ролей и задач, которые описывают, как система достигает своих общих целей. \textbf{Цели} являются абстракцией подробных требований и достигаются ролями. Как правило, система имеет общую цель и набор подцелей, которые должны быть достигнуты для достижения цели системы. Цели используются в MaSE, потому что они фиксируют то, чего пытается достичь система, и имеют тенденцию быть более стабильными во времени, чем функции, процессы или информационные структуры.
\textbf{Роль} описывает объект, который выполняет некоторую функцию в системе. В MaSE каждая роль отвечает за достижение или помощь в достижении определенных системных целей или подцелей.
Общий подход на этапе анализа MaSE прост: определить системные цели из набора требований, а затем определить роли, необходимые для достижения этих целей. Чтобы помочь в определении ролей для достижения конкретных целей, MaSE использует диаграммы «вариантов использования» и диаграммы последовательности.
\subsection{Постановка целей}
Первым шагом на этапе анализа MaSE является определение целей, в рамках которого происходит преобразование исходной спецификации системы в набор структурированных системных целей. В постановке целей есть два подэтапа: определение целей и структурирование целей.
\textbf{Определение целей}. Цель шага под названием «Определение целей» состоит в том, чтобы уловить суть начального набора требований. Этот процесс начинается с извлечения сценариев из исходной спецификации и описания цели этого сценария. Все подробности того, как выполнять системные функции, не включены в качестве целей.
Цели воплощают критические системные требования; поэтому аналитик должен указывать цели как можно более абстрактно, не теряя духа требования. Как только цели зафиксированы, они обеспечивают основу для модели анализа; все роли и задачи, определенные на последующих этапах, должны поддерживать одну из целей. Если позже в ходе анализа аналитик обнаружит роли или задачи, которые не поддерживают существующую системную цель, то либо роли и задачи являются излишними, либо была обнаружена новая цель.
\textbf{Структурирование целей}. Последним шагом в определении целей является структурирование целей в виде диаграммы иерархии целей. Диаграмма иерархии целей представляет собой направленный ациклический граф, в котором узлы представляют цели, а дуги определяют отношения подцелей. Иерархия целей не обязательно представляет собой дерево, поскольку цель может быть подцелью более чем одной родительской цели.
Чтобы разработать иерархию целей, аналитик изучает цели на предмет их важности и взаимосвязей. Несмотря на то, что цели были зафиксированы, они имеют различную важность, размер и уровень детализации. Диаграмма иерархии целей сохраняет такие отношения и делит цели на подцели, которыми легче управлять и понимать.
Каждая подцель должна поддерживать свою родительскую цель в иерархии и определять, что необходимо сделать для достижения родительской цели. \textit{Декомпозиция цели продолжается до тех пор, пока любая дальнейшая декомпозиция не приведет к функциям вместо целей} (т. е. Аналитик предписывает, как цель должна быть достигнута).
Существуют четыре особых типа целей. Это сводные, секционированные, комбинированные и нефункциональные. Цели могут иметь атрибуты более чем одного специального типа целей, однако они вовсе не обязательно должны быть одним из этих типов.
Некоторые цели функционально не поддерживают общую цель системы, но имеют решающее значение для работы системы. Эти нефункциональные цели часто вытекают из нефункциональных требований, таких как надежность или время отклика. Например, если система должна иметь возможность динамически находить ресурсы, может потребоваться цель облегчить поиск динамических ресурсов. В этом случае можно создать еще одну «ветвь» диаграммы иерархии целей и поместить ее под общую цель системного уровня.
\subsection{Применение вариантов использования}
Шаг «Применение вариантов использования» имеет решающее значение для преобразования целей в роли и связанные с ними задачи. Сценарии использования взяты из системных требований и описывают последовательности событий, которые определяют желаемое поведение системы; они являются примерами того, как должна вести себя система. Чтобы помочь определить фактическую связь в МАС, варианты использования преобразуются в диаграммы последовательности. Диаграммы последовательности MaSE аналогичны стандартным диаграммам последовательности UML, за исключением того, что они используются для отображения последовательности событий между ролями и для определения связи между агентами, которые будут играть эти роли. Определённые здесь роли формируют начальный набор ролей, используемых на следующем этапе, а события также используются позже для определения задач и диалогов.
Первым шагом в применении вариантов использования является извлечение вариантов использования из исходного системного контекста, который должен включать как положительные, так и отрицательные варианты использования. \textbf{Положительный вариант использования} описывает, что должно происходить при нормальной работе системы. Однако \textbf{отрицательный вариант использования} определяет поломку или ошибку. Хотя варианты использования не могут использоваться для охвата всех возможных требований, они помогают определить пути и роли коммуникации. Перекрестная проверка окончательного анализа по набору производных целей и вариантов использования обеспечивает избыточный метод для определения поведения системы.
\subsection{Уточнение ролей}
Цель шага -- преобразовать диаграмму иерархии целей и диаграмм последовательности в роли и связанные с ними задачи, формы, более подходящие для разработки МАС. Роли формируют основу для классов агентов и соответствуют целям системы на этапе проектирования. Авторы статьи утверждают, что цели системы будут удовлетворены, если каждая цель связана с ролью и каждая роль исполняется классом агентов. В общем случае преобразование целей в роли происходит взаимно-однозначно, при этом каждая цель сопоставляется с ролью. Однако бывают ситуации, когда полезно иметь одну роль, отвечающую за несколько целей, включая удобство или эффективность. Объединение целей усложняет роль, но может упростить общий дизайн. Как правило, для взаимодействия с внешними или внутренними ресурсами требуется отдельная роль, выступающая в качестве интерфейса для остальной части системы.
Определения ролей фиксируются в ролевой модели MaSE, которая включает информацию о взаимодействии между ролевыми задачами и является более сложной, чем традиционные ролевые модели.
Задачи обычно выводятся из целей, за которые отвечает задача. Роли не должны разделять или дублировать задачи. Разделение задач -- признак неправильного разделения ролей.
Модель параллельных задач. После создания ролей и определения задач разработчик фиксирует поведение роли, определяя детали отдельных задач. Роль может состоять из нескольких задач, которые вместе определяют требуемое поведение этой роли. Каждая задача выполняется в своем собственном потоке управления, но может взаимодействовать друг с другом. Параллельные задачи определяются в моделях параллельных задач как автоматы с конечным числом состояний. Состояния охватывают внутреннюю обработку агента, в то время как переходы обеспечивают связь между агентами или между задачами.
Переход состоит из состояния источника, состояния назначения, триггера, условия защиты и передач. Состояния могут содержать действия, которые представляют собой внутренние рассуждения, считывание информации с датчиков или выполнение действий с помощью исполнительных механизмов. Несколько действий могут быть включены в одно состояние и выполняются в непрерывной последовательности. Попав в состояние, задача остается в нем до тех пор, пока последовательность действий не будет завершена.
Чтобы рассуждать о времени, модель параллельных задач предоставляет встроенную активность таймера.
Как только переход разрешен, он выполняется мгновенно. Если разрешено несколько переходов, используется схема приоритетов.
\section{Этап проектирования}
\subsection{Создание классов агентов}
Классы агентов создаются на основе ролей, определенных на этапе анализа. На этом этапе создается диаграмма классов агентов, которая изображает общую организацию системы агентов, состоящую из классов агентов и диалогов между ними. Класс агента представляет собой шаблон для типа агента в системе и определяется с точки зрения ролей, которые они будут играть, и диалогов, в которых они могут участвовать. Роли позволяют распределять системные цели, в то время как классы агентов позволяют учитывать связь и использование других ресурсов.
Первым шагом является назначение ролей каждому классу агентов. Если назначено несколько ролей, классы агентов могут играть их одновременно или последовательно. Чтобы обеспечить учет системных целей, каждая роль должна быть назначена по крайней мере одному классу агентов. На этом этапе также определяются диалоги, в которых должны участвовать разные классы агентов. Разговоры агента являются производными от внешних коммуникаций назначенных агенту ролей. Классы агентов и диалоги документируются с помощью диаграмм классов агентов, которые аналогичны объектно-ориентированным диаграммам классов с двумя основными отличиями. Во-первых, классы агентов определяются ролями, которые они играют, а не атрибутами и методами. Во-вторых, все отношения между классами агентов фиксируются как диалоги.
Диаграмма классов агентов -- это первый объект дизайна в MaSE, который отображает всю МАС в ее окончательной форме. Если мы внимательно следовали MaSE до этого момента, система, представленная диаграммой классов агентов, будет поддерживать цели и варианты использования, определенные на этапе анализа.
\subsection{Построение бесед}
К этому моменту, дизайнер только идентифицировал разговоры, цель этого шага -- определить детали этих диалогов на основе внутренних деталей параллельных задач. Разговор определяет протокол координации между двумя агентами и документируется с использованием двух диаграмм классов связи, по одной для инициатора и ответчика.
Диаграмма классов связи аналогична модели параллельных задач и определяет состояния диалога двух классов агентов-участников. Инициатор начинает беседу с отправки первого сообщения. Когда другой агент получает сообщение, он сравнивает его со своими активными диалогами. Если он находит совпадение, агент переводит соответствующий диалог в новое состояние и выполняет все необходимые действия. В противном случае агент предполагает, что сообщение является новым запросом на диалог, и сравнивает его с диалогами, в которых он может участвовать с агентом-отправителем.
Как обсуждалось выше, дизайнер устанавливает набор диалогов агента по назначенным ему ролям. Точно так же дизайн разговора зависит от параллельных задач, связанных с этими ролями. После того, как информация из моделей параллельных задач будет интегрирована в диалоги, разработчик должен убедиться, что учитываются другие факторы, такие как надежность и отказоустойчивость.
\subsection{Сборка агентов}
Этап «Сборка агентов» включает два подэтапа: определение архитектуры агентов и определение компонентов архитектуры. Разработчики могут либо разработать собственную архитектуру, либо использовать предопределенные архитектуры, такие как BDI. Точно так же дизайнер может использовать предопределенные компоненты или разрабатывать их с нуля. Компоненты состоят из набора атрибутов, методов и, возможно, подархитектуры.
Архитектурные компоненты подключаются либо к внутренним, либо к внешним соединителям агента. Коннекторы внутреннего агента определяют видимость между компонентами, а коннекторы внешнего агента определяют внешние подключения к ресурсам, таким как агенты, датчики и эффекторы, базы данных и хранилища данных. Поведение внутреннего компонента может быть представлено формальными определениями операций или диаграммами состояний. Архитектура и внутреннее определение компонентов должны соответствовать диалогам, определенным на предыдущем шаге.
\subsection{Проектирование системы}
Проектирование системы является последним этапом методологии MaSE и использует диаграммы развертывания для отображения количества, типов и местоположений экземпляров агентов в системе. Проектирование системы на самом деле является самым простым этапом MaSE, так как большая часть работы была проделана на предыдущих этапах.
Разработчик должен определить развертывание системы перед внедрением, поскольку агентам обычно требуется информация диаграммы развертывания, такая как имя хоста или адрес, для связи. Диаграммы развертывания также дают разработчику возможность настроить систему в соответствии со средой, чтобы максимально увеличить доступную вычислительную мощность и пропускную способность сети. В некоторых случаях разработчик может указать определенное количество агентов в системе или конкретные компьютеры, на которых должны находиться определенные агенты. Разработчик также должен учитывать требования к связи и обработке при назначении агентов компьютерам.
\section{Инструмент agentTool}
Система \code{agentTool} была разработана для поддержки и обеспечения соблюдения MaSE. В настоящее время реализует все семь шагов MaSE, а также поддержку автоматизированного проектирования.
В то время как разработчик может использовать существующие архитектуры или разработать новую с нуля, \code{agentTool} также предоставляет возможность полуавтоматического получения архитектуры агента непосредственно из ролей и задач, определенных на этапе анализа. Преимущество этого подхода состоит в том, что он обеспечивает прямое сопоставление анализа с проектированием.
Система \code{agentTool} также обеспечивает автоматическую проверку разговоров. Процесс проверки начинается с полностью автоматизированного перевода системных диалогов на язык моделирования \code{Promela}.
\section{Применение}
MaSE успешно применяется во многих проектах для выпускников, а также в нескольких исследовательских проектах. Проект Multiagent Distributed Goal Satisfaction использовал MaSE для разработки совместной среды агентов для интеграции различных систем удовлетворения ограничений и планирования. В проекте «The Multiagent Distributed Goal Satisfaction» MaSE также использовался для разработки МАС, ориентированной на распределенное планирование людей и машин. MaSE успешно использовался для разработки гетерогенной системы баз данных на основе агентов, а также мультиагентного подхода к биологической иммунной системе компьютерных вирусов. MaSE также обеспечил высокоуровневый нисходящий подход, отсутствующий во многих приложениях для совместной работы роботов.
\section{Сравнение с другими методологиями}
Для разработки МАС было предложено несколько методологий. Однако мы сравниваем MaSE только с двумя другими методологиями: Gaia и Tropos.
Метод Gaia, является одним из самых известных подходов к построению МАС и имеет много общего с MaSE. Как и в MaSE, Gaia использует роли в качестве строительных блоков. В целом обе фазы анализа MaSE и Gaia собирают большую часть информации одного и того же типа, хотя и в разных типах моделей. Основное отличие заключается в уровне поддержки детального проектирования агентов, предоставляемого Gaia. Gaia производит высокоуровневый проект и предполагает, что детали будут разработаны с использованием традиционных методов, тогда как MaSE предоставляет модели и рекомендации по созданию детального проекта.
Tropos, использует подход, существенно отличающийся от MaSE. Tropos фокусируется на раннем определении требований, на что не влияет MaSE. Tropos использует фреймворк i* (Yu, 2001), который обеспечивает хороший внешний интерфейс для Tropos. Фактически подход ранних требований Tropos можно использовать с MaSE, поскольку целевая модель каждой методологии практически одинакова.
\end{document}

1318
pics/03-mas-lab-03-Lama.pgf Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,966 @@
%% Creator: Matplotlib, PGF backend
%%
%% To include the figure in your LaTeX document, write
%% \input{<filename>.pgf}
%%
%% Make sure the required packages are loaded in your preamble
%% \usepackage{pgf}
%%
%% Also ensure that all the required font packages are loaded; for instance,
%% the lmodern package is sometimes necessary when using math font.
%% \usepackage{lmodern}
%%
%% Figures using additional raster images can only be included by \input if
%% they are in the same directory as the main LaTeX file. For loading figures
%% from other directories you can use the `import` package
%% \usepackage{import}
%%
%% and then include the figures with
%% \import{<path to file>}{<filename>.pgf}
%%
%% Matplotlib used the following preamble
%%
%% \makeatletter\@ifpackageloaded{underscore}{}{\usepackage[strings]{underscore}}\makeatother
%%
\begingroup%
\makeatletter%
\begin{pgfpicture}%
\pgfpathrectangle{\pgfpointorigin}{\pgfqpoint{14.000000in}{9.000000in}}%
\pgfusepath{use as bounding box, clip}%
\begin{pgfscope}%
\pgfsetbuttcap%
\pgfsetmiterjoin%
\pgfsetlinewidth{0.000000pt}%
\definecolor{currentstroke}{rgb}{1.000000,1.000000,1.000000}%
\pgfsetstrokecolor{currentstroke}%
\pgfsetstrokeopacity{0.000000}%
\pgfsetdash{}{0pt}%
\pgfpathmoveto{\pgfqpoint{0.000000in}{0.000000in}}%
\pgfpathlineto{\pgfqpoint{14.000000in}{0.000000in}}%
\pgfpathlineto{\pgfqpoint{14.000000in}{9.000000in}}%
\pgfpathlineto{\pgfqpoint{0.000000in}{9.000000in}}%
\pgfpathlineto{\pgfqpoint{0.000000in}{0.000000in}}%
\pgfpathclose%
\pgfusepath{}%
\end{pgfscope}%
\begin{pgfscope}%
\pgfsetbuttcap%
\pgfsetmiterjoin%
\definecolor{currentfill}{rgb}{1.000000,1.000000,1.000000}%
\pgfsetfillcolor{currentfill}%
\pgfsetlinewidth{0.000000pt}%
\definecolor{currentstroke}{rgb}{0.000000,0.000000,0.000000}%
\pgfsetstrokecolor{currentstroke}%
\pgfsetstrokeopacity{0.000000}%
\pgfsetdash{}{0pt}%
\pgfpathmoveto{\pgfqpoint{1.750000in}{1.125000in}}%
\pgfpathlineto{\pgfqpoint{12.600000in}{1.125000in}}%
\pgfpathlineto{\pgfqpoint{12.600000in}{7.920000in}}%
\pgfpathlineto{\pgfqpoint{1.750000in}{7.920000in}}%
\pgfpathlineto{\pgfqpoint{1.750000in}{1.125000in}}%
\pgfpathclose%
\pgfusepath{fill}%
\end{pgfscope}%
\begin{pgfscope}%
\pgfpathrectangle{\pgfqpoint{1.750000in}{1.125000in}}{\pgfqpoint{10.850000in}{6.795000in}}%
\pgfusepath{clip}%
\pgfsetbuttcap%
\pgfsetroundjoin%
\pgfsetlinewidth{0.803000pt}%
\definecolor{currentstroke}{rgb}{0.501961,0.501961,0.501961}%
\pgfsetstrokecolor{currentstroke}%
\pgfsetdash{{2.960000pt}{1.280000pt}}{0.000000pt}%
\pgfpathmoveto{\pgfqpoint{2.243182in}{1.125000in}}%
\pgfpathlineto{\pgfqpoint{2.243182in}{7.920000in}}%
\pgfusepath{stroke}%
\end{pgfscope}%
\begin{pgfscope}%
\pgfsetbuttcap%
\pgfsetroundjoin%
\definecolor{currentfill}{rgb}{0.000000,0.000000,0.000000}%
\pgfsetfillcolor{currentfill}%
\pgfsetlinewidth{0.803000pt}%
\definecolor{currentstroke}{rgb}{0.000000,0.000000,0.000000}%
\pgfsetstrokecolor{currentstroke}%
\pgfsetdash{}{0pt}%
\pgfsys@defobject{currentmarker}{\pgfqpoint{0.000000in}{-0.048611in}}{\pgfqpoint{0.000000in}{0.000000in}}{%
\pgfpathmoveto{\pgfqpoint{0.000000in}{0.000000in}}%
\pgfpathlineto{\pgfqpoint{0.000000in}{-0.048611in}}%
\pgfusepath{stroke,fill}%
}%
\begin{pgfscope}%
\pgfsys@transformshift{2.243182in}{1.125000in}%
\pgfsys@useobject{currentmarker}{}%
\end{pgfscope}%
\end{pgfscope}%
\begin{pgfscope}%
\definecolor{textcolor}{rgb}{0.000000,0.000000,0.000000}%
\pgfsetstrokecolor{textcolor}%
\pgfsetfillcolor{textcolor}%
\pgftext[x=2.243182in,y=1.027778in,,top]{\color{textcolor}\rmfamily\fontsize{10.000000}{12.000000}\selectfont \(\displaystyle {0.55}\)}%
\end{pgfscope}%
\begin{pgfscope}%
\pgfpathrectangle{\pgfqpoint{1.750000in}{1.125000in}}{\pgfqpoint{10.850000in}{6.795000in}}%
\pgfusepath{clip}%
\pgfsetbuttcap%
\pgfsetroundjoin%
\pgfsetlinewidth{0.803000pt}%
\definecolor{currentstroke}{rgb}{0.501961,0.501961,0.501961}%
\pgfsetstrokecolor{currentstroke}%
\pgfsetdash{{2.960000pt}{1.280000pt}}{0.000000pt}%
\pgfpathmoveto{\pgfqpoint{3.139878in}{1.125000in}}%
\pgfpathlineto{\pgfqpoint{3.139878in}{7.920000in}}%
\pgfusepath{stroke}%
\end{pgfscope}%
\begin{pgfscope}%
\pgfsetbuttcap%
\pgfsetroundjoin%
\definecolor{currentfill}{rgb}{0.000000,0.000000,0.000000}%
\pgfsetfillcolor{currentfill}%
\pgfsetlinewidth{0.803000pt}%
\definecolor{currentstroke}{rgb}{0.000000,0.000000,0.000000}%
\pgfsetstrokecolor{currentstroke}%
\pgfsetdash{}{0pt}%
\pgfsys@defobject{currentmarker}{\pgfqpoint{0.000000in}{-0.048611in}}{\pgfqpoint{0.000000in}{0.000000in}}{%
\pgfpathmoveto{\pgfqpoint{0.000000in}{0.000000in}}%
\pgfpathlineto{\pgfqpoint{0.000000in}{-0.048611in}}%
\pgfusepath{stroke,fill}%
}%
\begin{pgfscope}%
\pgfsys@transformshift{3.139878in}{1.125000in}%
\pgfsys@useobject{currentmarker}{}%
\end{pgfscope}%
\end{pgfscope}%
\begin{pgfscope}%
\definecolor{textcolor}{rgb}{0.000000,0.000000,0.000000}%
\pgfsetstrokecolor{textcolor}%
\pgfsetfillcolor{textcolor}%
\pgftext[x=3.139878in,y=1.027778in,,top]{\color{textcolor}\rmfamily\fontsize{10.000000}{12.000000}\selectfont \(\displaystyle {0.60}\)}%
\end{pgfscope}%
\begin{pgfscope}%
\pgfpathrectangle{\pgfqpoint{1.750000in}{1.125000in}}{\pgfqpoint{10.850000in}{6.795000in}}%
\pgfusepath{clip}%
\pgfsetbuttcap%
\pgfsetroundjoin%
\pgfsetlinewidth{0.803000pt}%
\definecolor{currentstroke}{rgb}{0.501961,0.501961,0.501961}%
\pgfsetstrokecolor{currentstroke}%
\pgfsetdash{{2.960000pt}{1.280000pt}}{0.000000pt}%
\pgfpathmoveto{\pgfqpoint{4.036591in}{1.125000in}}%
\pgfpathlineto{\pgfqpoint{4.036591in}{7.920000in}}%
\pgfusepath{stroke}%
\end{pgfscope}%
\begin{pgfscope}%
\pgfsetbuttcap%
\pgfsetroundjoin%
\definecolor{currentfill}{rgb}{0.000000,0.000000,0.000000}%
\pgfsetfillcolor{currentfill}%
\pgfsetlinewidth{0.803000pt}%
\definecolor{currentstroke}{rgb}{0.000000,0.000000,0.000000}%
\pgfsetstrokecolor{currentstroke}%
\pgfsetdash{}{0pt}%
\pgfsys@defobject{currentmarker}{\pgfqpoint{0.000000in}{-0.048611in}}{\pgfqpoint{0.000000in}{0.000000in}}{%
\pgfpathmoveto{\pgfqpoint{0.000000in}{0.000000in}}%
\pgfpathlineto{\pgfqpoint{0.000000in}{-0.048611in}}%
\pgfusepath{stroke,fill}%
}%
\begin{pgfscope}%
\pgfsys@transformshift{4.036591in}{1.125000in}%
\pgfsys@useobject{currentmarker}{}%
\end{pgfscope}%
\end{pgfscope}%
\begin{pgfscope}%
\definecolor{textcolor}{rgb}{0.000000,0.000000,0.000000}%
\pgfsetstrokecolor{textcolor}%
\pgfsetfillcolor{textcolor}%
\pgftext[x=4.036591in,y=1.027778in,,top]{\color{textcolor}\rmfamily\fontsize{10.000000}{12.000000}\selectfont \(\displaystyle {0.65}\)}%
\end{pgfscope}%
\begin{pgfscope}%
\pgfpathrectangle{\pgfqpoint{1.750000in}{1.125000in}}{\pgfqpoint{10.850000in}{6.795000in}}%
\pgfusepath{clip}%
\pgfsetbuttcap%
\pgfsetroundjoin%
\pgfsetlinewidth{0.803000pt}%
\definecolor{currentstroke}{rgb}{0.501961,0.501961,0.501961}%
\pgfsetstrokecolor{currentstroke}%
\pgfsetdash{{2.960000pt}{1.280000pt}}{0.000000pt}%
\pgfpathmoveto{\pgfqpoint{4.933323in}{1.125000in}}%
\pgfpathlineto{\pgfqpoint{4.933323in}{7.920000in}}%
\pgfusepath{stroke}%
\end{pgfscope}%
\begin{pgfscope}%
\pgfsetbuttcap%
\pgfsetroundjoin%
\definecolor{currentfill}{rgb}{0.000000,0.000000,0.000000}%
\pgfsetfillcolor{currentfill}%
\pgfsetlinewidth{0.803000pt}%
\definecolor{currentstroke}{rgb}{0.000000,0.000000,0.000000}%
\pgfsetstrokecolor{currentstroke}%
\pgfsetdash{}{0pt}%
\pgfsys@defobject{currentmarker}{\pgfqpoint{0.000000in}{-0.048611in}}{\pgfqpoint{0.000000in}{0.000000in}}{%
\pgfpathmoveto{\pgfqpoint{0.000000in}{0.000000in}}%
\pgfpathlineto{\pgfqpoint{0.000000in}{-0.048611in}}%
\pgfusepath{stroke,fill}%
}%
\begin{pgfscope}%
\pgfsys@transformshift{4.933323in}{1.125000in}%
\pgfsys@useobject{currentmarker}{}%
\end{pgfscope}%
\end{pgfscope}%
\begin{pgfscope}%
\definecolor{textcolor}{rgb}{0.000000,0.000000,0.000000}%
\pgfsetstrokecolor{textcolor}%
\pgfsetfillcolor{textcolor}%
\pgftext[x=4.933323in,y=1.027778in,,top]{\color{textcolor}\rmfamily\fontsize{10.000000}{12.000000}\selectfont \(\displaystyle {0.70}\)}%
\end{pgfscope}%
\begin{pgfscope}%
\pgfpathrectangle{\pgfqpoint{1.750000in}{1.125000in}}{\pgfqpoint{10.850000in}{6.795000in}}%
\pgfusepath{clip}%
\pgfsetbuttcap%
\pgfsetroundjoin%
\pgfsetlinewidth{0.803000pt}%
\definecolor{currentstroke}{rgb}{0.501961,0.501961,0.501961}%
\pgfsetstrokecolor{currentstroke}%
\pgfsetdash{{2.960000pt}{1.280000pt}}{0.000000pt}%
\pgfpathmoveto{\pgfqpoint{5.829947in}{1.125000in}}%
\pgfpathlineto{\pgfqpoint{5.829947in}{7.920000in}}%
\pgfusepath{stroke}%
\end{pgfscope}%
\begin{pgfscope}%
\pgfsetbuttcap%
\pgfsetroundjoin%
\definecolor{currentfill}{rgb}{0.000000,0.000000,0.000000}%
\pgfsetfillcolor{currentfill}%
\pgfsetlinewidth{0.803000pt}%
\definecolor{currentstroke}{rgb}{0.000000,0.000000,0.000000}%
\pgfsetstrokecolor{currentstroke}%
\pgfsetdash{}{0pt}%
\pgfsys@defobject{currentmarker}{\pgfqpoint{0.000000in}{-0.048611in}}{\pgfqpoint{0.000000in}{0.000000in}}{%
\pgfpathmoveto{\pgfqpoint{0.000000in}{0.000000in}}%
\pgfpathlineto{\pgfqpoint{0.000000in}{-0.048611in}}%
\pgfusepath{stroke,fill}%
}%
\begin{pgfscope}%
\pgfsys@transformshift{5.829947in}{1.125000in}%
\pgfsys@useobject{currentmarker}{}%
\end{pgfscope}%
\end{pgfscope}%
\begin{pgfscope}%
\definecolor{textcolor}{rgb}{0.000000,0.000000,0.000000}%
\pgfsetstrokecolor{textcolor}%
\pgfsetfillcolor{textcolor}%
\pgftext[x=5.829947in,y=1.027778in,,top]{\color{textcolor}\rmfamily\fontsize{10.000000}{12.000000}\selectfont \(\displaystyle {0.75}\)}%
\end{pgfscope}%
\begin{pgfscope}%
\pgfpathrectangle{\pgfqpoint{1.750000in}{1.125000in}}{\pgfqpoint{10.850000in}{6.795000in}}%
\pgfusepath{clip}%
\pgfsetbuttcap%
\pgfsetroundjoin%
\pgfsetlinewidth{0.803000pt}%
\definecolor{currentstroke}{rgb}{0.501961,0.501961,0.501961}%
\pgfsetstrokecolor{currentstroke}%
\pgfsetdash{{2.960000pt}{1.280000pt}}{0.000000pt}%
\pgfpathmoveto{\pgfqpoint{6.726697in}{1.125000in}}%
\pgfpathlineto{\pgfqpoint{6.726697in}{7.920000in}}%
\pgfusepath{stroke}%
\end{pgfscope}%
\begin{pgfscope}%
\pgfsetbuttcap%
\pgfsetroundjoin%
\definecolor{currentfill}{rgb}{0.000000,0.000000,0.000000}%
\pgfsetfillcolor{currentfill}%
\pgfsetlinewidth{0.803000pt}%
\definecolor{currentstroke}{rgb}{0.000000,0.000000,0.000000}%
\pgfsetstrokecolor{currentstroke}%
\pgfsetdash{}{0pt}%
\pgfsys@defobject{currentmarker}{\pgfqpoint{0.000000in}{-0.048611in}}{\pgfqpoint{0.000000in}{0.000000in}}{%
\pgfpathmoveto{\pgfqpoint{0.000000in}{0.000000in}}%
\pgfpathlineto{\pgfqpoint{0.000000in}{-0.048611in}}%
\pgfusepath{stroke,fill}%
}%
\begin{pgfscope}%
\pgfsys@transformshift{6.726697in}{1.125000in}%
\pgfsys@useobject{currentmarker}{}%
\end{pgfscope}%
\end{pgfscope}%
\begin{pgfscope}%
\definecolor{textcolor}{rgb}{0.000000,0.000000,0.000000}%
\pgfsetstrokecolor{textcolor}%
\pgfsetfillcolor{textcolor}%
\pgftext[x=6.726697in,y=1.027778in,,top]{\color{textcolor}\rmfamily\fontsize{10.000000}{12.000000}\selectfont \(\displaystyle {0.80}\)}%
\end{pgfscope}%
\begin{pgfscope}%
\pgfpathrectangle{\pgfqpoint{1.750000in}{1.125000in}}{\pgfqpoint{10.850000in}{6.795000in}}%
\pgfusepath{clip}%
\pgfsetbuttcap%
\pgfsetroundjoin%
\pgfsetlinewidth{0.803000pt}%
\definecolor{currentstroke}{rgb}{0.501961,0.501961,0.501961}%
\pgfsetstrokecolor{currentstroke}%
\pgfsetdash{{2.960000pt}{1.280000pt}}{0.000000pt}%
\pgfpathmoveto{\pgfqpoint{7.623357in}{1.125000in}}%
\pgfpathlineto{\pgfqpoint{7.623357in}{7.920000in}}%
\pgfusepath{stroke}%
\end{pgfscope}%
\begin{pgfscope}%
\pgfsetbuttcap%
\pgfsetroundjoin%
\definecolor{currentfill}{rgb}{0.000000,0.000000,0.000000}%
\pgfsetfillcolor{currentfill}%
\pgfsetlinewidth{0.803000pt}%
\definecolor{currentstroke}{rgb}{0.000000,0.000000,0.000000}%
\pgfsetstrokecolor{currentstroke}%
\pgfsetdash{}{0pt}%
\pgfsys@defobject{currentmarker}{\pgfqpoint{0.000000in}{-0.048611in}}{\pgfqpoint{0.000000in}{0.000000in}}{%
\pgfpathmoveto{\pgfqpoint{0.000000in}{0.000000in}}%
\pgfpathlineto{\pgfqpoint{0.000000in}{-0.048611in}}%
\pgfusepath{stroke,fill}%
}%
\begin{pgfscope}%
\pgfsys@transformshift{7.623357in}{1.125000in}%
\pgfsys@useobject{currentmarker}{}%
\end{pgfscope}%
\end{pgfscope}%
\begin{pgfscope}%
\definecolor{textcolor}{rgb}{0.000000,0.000000,0.000000}%
\pgfsetstrokecolor{textcolor}%
\pgfsetfillcolor{textcolor}%
\pgftext[x=7.623357in,y=1.027778in,,top]{\color{textcolor}\rmfamily\fontsize{10.000000}{12.000000}\selectfont \(\displaystyle {0.85}\)}%
\end{pgfscope}%
\begin{pgfscope}%
\pgfpathrectangle{\pgfqpoint{1.750000in}{1.125000in}}{\pgfqpoint{10.850000in}{6.795000in}}%
\pgfusepath{clip}%
\pgfsetbuttcap%
\pgfsetroundjoin%
\pgfsetlinewidth{0.803000pt}%
\definecolor{currentstroke}{rgb}{0.501961,0.501961,0.501961}%
\pgfsetstrokecolor{currentstroke}%
\pgfsetdash{{2.960000pt}{1.280000pt}}{0.000000pt}%
\pgfpathmoveto{\pgfqpoint{8.520089in}{1.125000in}}%
\pgfpathlineto{\pgfqpoint{8.520089in}{7.920000in}}%
\pgfusepath{stroke}%
\end{pgfscope}%
\begin{pgfscope}%
\pgfsetbuttcap%
\pgfsetroundjoin%
\definecolor{currentfill}{rgb}{0.000000,0.000000,0.000000}%
\pgfsetfillcolor{currentfill}%
\pgfsetlinewidth{0.803000pt}%
\definecolor{currentstroke}{rgb}{0.000000,0.000000,0.000000}%
\pgfsetstrokecolor{currentstroke}%
\pgfsetdash{}{0pt}%
\pgfsys@defobject{currentmarker}{\pgfqpoint{0.000000in}{-0.048611in}}{\pgfqpoint{0.000000in}{0.000000in}}{%
\pgfpathmoveto{\pgfqpoint{0.000000in}{0.000000in}}%
\pgfpathlineto{\pgfqpoint{0.000000in}{-0.048611in}}%
\pgfusepath{stroke,fill}%
}%
\begin{pgfscope}%
\pgfsys@transformshift{8.520089in}{1.125000in}%
\pgfsys@useobject{currentmarker}{}%
\end{pgfscope}%
\end{pgfscope}%
\begin{pgfscope}%
\definecolor{textcolor}{rgb}{0.000000,0.000000,0.000000}%
\pgfsetstrokecolor{textcolor}%
\pgfsetfillcolor{textcolor}%
\pgftext[x=8.520089in,y=1.027778in,,top]{\color{textcolor}\rmfamily\fontsize{10.000000}{12.000000}\selectfont \(\displaystyle {0.90}\)}%
\end{pgfscope}%
\begin{pgfscope}%
\pgfpathrectangle{\pgfqpoint{1.750000in}{1.125000in}}{\pgfqpoint{10.850000in}{6.795000in}}%
\pgfusepath{clip}%
\pgfsetbuttcap%
\pgfsetroundjoin%
\pgfsetlinewidth{0.803000pt}%
\definecolor{currentstroke}{rgb}{0.501961,0.501961,0.501961}%
\pgfsetstrokecolor{currentstroke}%
\pgfsetdash{{2.960000pt}{1.280000pt}}{0.000000pt}%
\pgfpathmoveto{\pgfqpoint{9.416802in}{1.125000in}}%
\pgfpathlineto{\pgfqpoint{9.416802in}{7.920000in}}%
\pgfusepath{stroke}%
\end{pgfscope}%
\begin{pgfscope}%
\pgfsetbuttcap%
\pgfsetroundjoin%
\definecolor{currentfill}{rgb}{0.000000,0.000000,0.000000}%
\pgfsetfillcolor{currentfill}%
\pgfsetlinewidth{0.803000pt}%
\definecolor{currentstroke}{rgb}{0.000000,0.000000,0.000000}%
\pgfsetstrokecolor{currentstroke}%
\pgfsetdash{}{0pt}%
\pgfsys@defobject{currentmarker}{\pgfqpoint{0.000000in}{-0.048611in}}{\pgfqpoint{0.000000in}{0.000000in}}{%
\pgfpathmoveto{\pgfqpoint{0.000000in}{0.000000in}}%
\pgfpathlineto{\pgfqpoint{0.000000in}{-0.048611in}}%
\pgfusepath{stroke,fill}%
}%
\begin{pgfscope}%
\pgfsys@transformshift{9.416802in}{1.125000in}%
\pgfsys@useobject{currentmarker}{}%
\end{pgfscope}%
\end{pgfscope}%
\begin{pgfscope}%
\definecolor{textcolor}{rgb}{0.000000,0.000000,0.000000}%
\pgfsetstrokecolor{textcolor}%
\pgfsetfillcolor{textcolor}%
\pgftext[x=9.416802in,y=1.027778in,,top]{\color{textcolor}\rmfamily\fontsize{10.000000}{12.000000}\selectfont \(\displaystyle {0.95}\)}%
\end{pgfscope}%
\begin{pgfscope}%
\pgfpathrectangle{\pgfqpoint{1.750000in}{1.125000in}}{\pgfqpoint{10.850000in}{6.795000in}}%
\pgfusepath{clip}%
\pgfsetbuttcap%
\pgfsetroundjoin%
\pgfsetlinewidth{0.803000pt}%
\definecolor{currentstroke}{rgb}{0.501961,0.501961,0.501961}%
\pgfsetstrokecolor{currentstroke}%
\pgfsetdash{{2.960000pt}{1.280000pt}}{0.000000pt}%
\pgfpathmoveto{\pgfqpoint{10.313498in}{1.125000in}}%
\pgfpathlineto{\pgfqpoint{10.313498in}{7.920000in}}%
\pgfusepath{stroke}%
\end{pgfscope}%
\begin{pgfscope}%
\pgfsetbuttcap%
\pgfsetroundjoin%
\definecolor{currentfill}{rgb}{0.000000,0.000000,0.000000}%
\pgfsetfillcolor{currentfill}%
\pgfsetlinewidth{0.803000pt}%
\definecolor{currentstroke}{rgb}{0.000000,0.000000,0.000000}%
\pgfsetstrokecolor{currentstroke}%
\pgfsetdash{}{0pt}%
\pgfsys@defobject{currentmarker}{\pgfqpoint{0.000000in}{-0.048611in}}{\pgfqpoint{0.000000in}{0.000000in}}{%
\pgfpathmoveto{\pgfqpoint{0.000000in}{0.000000in}}%
\pgfpathlineto{\pgfqpoint{0.000000in}{-0.048611in}}%
\pgfusepath{stroke,fill}%
}%
\begin{pgfscope}%
\pgfsys@transformshift{10.313498in}{1.125000in}%
\pgfsys@useobject{currentmarker}{}%
\end{pgfscope}%
\end{pgfscope}%
\begin{pgfscope}%
\definecolor{textcolor}{rgb}{0.000000,0.000000,0.000000}%
\pgfsetstrokecolor{textcolor}%
\pgfsetfillcolor{textcolor}%
\pgftext[x=10.313498in,y=1.027778in,,top]{\color{textcolor}\rmfamily\fontsize{10.000000}{12.000000}\selectfont \(\displaystyle {1.00}\)}%
\end{pgfscope}%
\begin{pgfscope}%
\pgfpathrectangle{\pgfqpoint{1.750000in}{1.125000in}}{\pgfqpoint{10.850000in}{6.795000in}}%
\pgfusepath{clip}%
\pgfsetbuttcap%
\pgfsetroundjoin%
\pgfsetlinewidth{0.803000pt}%
\definecolor{currentstroke}{rgb}{0.501961,0.501961,0.501961}%
\pgfsetstrokecolor{currentstroke}%
\pgfsetdash{{2.960000pt}{1.280000pt}}{0.000000pt}%
\pgfpathmoveto{\pgfqpoint{11.210140in}{1.125000in}}%
\pgfpathlineto{\pgfqpoint{11.210140in}{7.920000in}}%
\pgfusepath{stroke}%
\end{pgfscope}%
\begin{pgfscope}%
\pgfsetbuttcap%
\pgfsetroundjoin%
\definecolor{currentfill}{rgb}{0.000000,0.000000,0.000000}%
\pgfsetfillcolor{currentfill}%
\pgfsetlinewidth{0.803000pt}%
\definecolor{currentstroke}{rgb}{0.000000,0.000000,0.000000}%
\pgfsetstrokecolor{currentstroke}%
\pgfsetdash{}{0pt}%
\pgfsys@defobject{currentmarker}{\pgfqpoint{0.000000in}{-0.048611in}}{\pgfqpoint{0.000000in}{0.000000in}}{%
\pgfpathmoveto{\pgfqpoint{0.000000in}{0.000000in}}%
\pgfpathlineto{\pgfqpoint{0.000000in}{-0.048611in}}%
\pgfusepath{stroke,fill}%
}%
\begin{pgfscope}%
\pgfsys@transformshift{11.210140in}{1.125000in}%
\pgfsys@useobject{currentmarker}{}%
\end{pgfscope}%
\end{pgfscope}%
\begin{pgfscope}%
\definecolor{textcolor}{rgb}{0.000000,0.000000,0.000000}%
\pgfsetstrokecolor{textcolor}%
\pgfsetfillcolor{textcolor}%
\pgftext[x=11.210140in,y=1.027778in,,top]{\color{textcolor}\rmfamily\fontsize{10.000000}{12.000000}\selectfont \(\displaystyle {1.05}\)}%
\end{pgfscope}%
\begin{pgfscope}%
\pgfpathrectangle{\pgfqpoint{1.750000in}{1.125000in}}{\pgfqpoint{10.850000in}{6.795000in}}%
\pgfusepath{clip}%
\pgfsetbuttcap%
\pgfsetroundjoin%
\pgfsetlinewidth{0.803000pt}%
\definecolor{currentstroke}{rgb}{0.501961,0.501961,0.501961}%
\pgfsetstrokecolor{currentstroke}%
\pgfsetdash{{2.960000pt}{1.280000pt}}{0.000000pt}%
\pgfpathmoveto{\pgfqpoint{12.106818in}{1.125000in}}%
\pgfpathlineto{\pgfqpoint{12.106818in}{7.920000in}}%
\pgfusepath{stroke}%
\end{pgfscope}%
\begin{pgfscope}%
\pgfsetbuttcap%
\pgfsetroundjoin%
\definecolor{currentfill}{rgb}{0.000000,0.000000,0.000000}%
\pgfsetfillcolor{currentfill}%
\pgfsetlinewidth{0.803000pt}%
\definecolor{currentstroke}{rgb}{0.000000,0.000000,0.000000}%
\pgfsetstrokecolor{currentstroke}%
\pgfsetdash{}{0pt}%
\pgfsys@defobject{currentmarker}{\pgfqpoint{0.000000in}{-0.048611in}}{\pgfqpoint{0.000000in}{0.000000in}}{%
\pgfpathmoveto{\pgfqpoint{0.000000in}{0.000000in}}%
\pgfpathlineto{\pgfqpoint{0.000000in}{-0.048611in}}%
\pgfusepath{stroke,fill}%
}%
\begin{pgfscope}%
\pgfsys@transformshift{12.106818in}{1.125000in}%
\pgfsys@useobject{currentmarker}{}%
\end{pgfscope}%
\end{pgfscope}%
\begin{pgfscope}%
\definecolor{textcolor}{rgb}{0.000000,0.000000,0.000000}%
\pgfsetstrokecolor{textcolor}%
\pgfsetfillcolor{textcolor}%
\pgftext[x=12.106818in,y=1.027778in,,top]{\color{textcolor}\rmfamily\fontsize{10.000000}{12.000000}\selectfont \(\displaystyle {1.10}\)}%
\end{pgfscope}%
\begin{pgfscope}%
\definecolor{textcolor}{rgb}{0.000000,0.000000,0.000000}%
\pgfsetstrokecolor{textcolor}%
\pgfsetfillcolor{textcolor}%
\pgftext[x=12.600000in,y=0.862654in,right,top]{\color{textcolor}\rmfamily\fontsize{10.000000}{12.000000}\selectfont \(\displaystyle \times{10^{6}}{}\)}%
\end{pgfscope}%
\begin{pgfscope}%
\pgfpathrectangle{\pgfqpoint{1.750000in}{1.125000in}}{\pgfqpoint{10.850000in}{6.795000in}}%
\pgfusepath{clip}%
\pgfsetbuttcap%
\pgfsetroundjoin%
\pgfsetlinewidth{0.803000pt}%
\definecolor{currentstroke}{rgb}{0.501961,0.501961,0.501961}%
\pgfsetstrokecolor{currentstroke}%
\pgfsetdash{{2.960000pt}{1.280000pt}}{0.000000pt}%
\pgfpathmoveto{\pgfqpoint{1.750000in}{1.756865in}}%
\pgfpathlineto{\pgfqpoint{12.600000in}{1.756865in}}%
\pgfusepath{stroke}%
\end{pgfscope}%
\begin{pgfscope}%
\pgfsetbuttcap%
\pgfsetroundjoin%
\definecolor{currentfill}{rgb}{0.000000,0.000000,0.000000}%
\pgfsetfillcolor{currentfill}%
\pgfsetlinewidth{0.803000pt}%
\definecolor{currentstroke}{rgb}{0.000000,0.000000,0.000000}%
\pgfsetstrokecolor{currentstroke}%
\pgfsetdash{}{0pt}%
\pgfsys@defobject{currentmarker}{\pgfqpoint{-0.048611in}{0.000000in}}{\pgfqpoint{-0.000000in}{0.000000in}}{%
\pgfpathmoveto{\pgfqpoint{-0.000000in}{0.000000in}}%
\pgfpathlineto{\pgfqpoint{-0.048611in}{0.000000in}}%
\pgfusepath{stroke,fill}%
}%
\begin{pgfscope}%
\pgfsys@transformshift{1.750000in}{1.756865in}%
\pgfsys@useobject{currentmarker}{}%
\end{pgfscope}%
\end{pgfscope}%
\begin{pgfscope}%
\definecolor{textcolor}{rgb}{0.000000,0.000000,0.000000}%
\pgfsetstrokecolor{textcolor}%
\pgfsetfillcolor{textcolor}%
\pgftext[x=1.405863in, y=1.708639in, left, base]{\color{textcolor}\rmfamily\fontsize{10.000000}{12.000000}\selectfont \(\displaystyle {\ensuremath{-}40}\)}%
\end{pgfscope}%
\begin{pgfscope}%
\pgfpathrectangle{\pgfqpoint{1.750000in}{1.125000in}}{\pgfqpoint{10.850000in}{6.795000in}}%
\pgfusepath{clip}%
\pgfsetbuttcap%
\pgfsetroundjoin%
\pgfsetlinewidth{0.803000pt}%
\definecolor{currentstroke}{rgb}{0.501961,0.501961,0.501961}%
\pgfsetstrokecolor{currentstroke}%
\pgfsetdash{{2.960000pt}{1.280000pt}}{0.000000pt}%
\pgfpathmoveto{\pgfqpoint{1.750000in}{2.526455in}}%
\pgfpathlineto{\pgfqpoint{12.600000in}{2.526455in}}%
\pgfusepath{stroke}%
\end{pgfscope}%
\begin{pgfscope}%
\pgfsetbuttcap%
\pgfsetroundjoin%
\definecolor{currentfill}{rgb}{0.000000,0.000000,0.000000}%
\pgfsetfillcolor{currentfill}%
\pgfsetlinewidth{0.803000pt}%
\definecolor{currentstroke}{rgb}{0.000000,0.000000,0.000000}%
\pgfsetstrokecolor{currentstroke}%
\pgfsetdash{}{0pt}%
\pgfsys@defobject{currentmarker}{\pgfqpoint{-0.048611in}{0.000000in}}{\pgfqpoint{-0.000000in}{0.000000in}}{%
\pgfpathmoveto{\pgfqpoint{-0.000000in}{0.000000in}}%
\pgfpathlineto{\pgfqpoint{-0.048611in}{0.000000in}}%
\pgfusepath{stroke,fill}%
}%
\begin{pgfscope}%
\pgfsys@transformshift{1.750000in}{2.526455in}%
\pgfsys@useobject{currentmarker}{}%
\end{pgfscope}%
\end{pgfscope}%
\begin{pgfscope}%
\definecolor{textcolor}{rgb}{0.000000,0.000000,0.000000}%
\pgfsetstrokecolor{textcolor}%
\pgfsetfillcolor{textcolor}%
\pgftext[x=1.405863in, y=2.478230in, left, base]{\color{textcolor}\rmfamily\fontsize{10.000000}{12.000000}\selectfont \(\displaystyle {\ensuremath{-}35}\)}%
\end{pgfscope}%
\begin{pgfscope}%
\pgfpathrectangle{\pgfqpoint{1.750000in}{1.125000in}}{\pgfqpoint{10.850000in}{6.795000in}}%
\pgfusepath{clip}%
\pgfsetbuttcap%
\pgfsetroundjoin%
\pgfsetlinewidth{0.803000pt}%
\definecolor{currentstroke}{rgb}{0.501961,0.501961,0.501961}%
\pgfsetstrokecolor{currentstroke}%
\pgfsetdash{{2.960000pt}{1.280000pt}}{0.000000pt}%
\pgfpathmoveto{\pgfqpoint{1.750000in}{3.296045in}}%
\pgfpathlineto{\pgfqpoint{12.600000in}{3.296045in}}%
\pgfusepath{stroke}%
\end{pgfscope}%
\begin{pgfscope}%
\pgfsetbuttcap%
\pgfsetroundjoin%
\definecolor{currentfill}{rgb}{0.000000,0.000000,0.000000}%
\pgfsetfillcolor{currentfill}%
\pgfsetlinewidth{0.803000pt}%
\definecolor{currentstroke}{rgb}{0.000000,0.000000,0.000000}%
\pgfsetstrokecolor{currentstroke}%
\pgfsetdash{}{0pt}%
\pgfsys@defobject{currentmarker}{\pgfqpoint{-0.048611in}{0.000000in}}{\pgfqpoint{-0.000000in}{0.000000in}}{%
\pgfpathmoveto{\pgfqpoint{-0.000000in}{0.000000in}}%
\pgfpathlineto{\pgfqpoint{-0.048611in}{0.000000in}}%
\pgfusepath{stroke,fill}%
}%
\begin{pgfscope}%
\pgfsys@transformshift{1.750000in}{3.296045in}%
\pgfsys@useobject{currentmarker}{}%
\end{pgfscope}%
\end{pgfscope}%
\begin{pgfscope}%
\definecolor{textcolor}{rgb}{0.000000,0.000000,0.000000}%
\pgfsetstrokecolor{textcolor}%
\pgfsetfillcolor{textcolor}%
\pgftext[x=1.405863in, y=3.247820in, left, base]{\color{textcolor}\rmfamily\fontsize{10.000000}{12.000000}\selectfont \(\displaystyle {\ensuremath{-}30}\)}%
\end{pgfscope}%
\begin{pgfscope}%
\pgfpathrectangle{\pgfqpoint{1.750000in}{1.125000in}}{\pgfqpoint{10.850000in}{6.795000in}}%
\pgfusepath{clip}%
\pgfsetbuttcap%
\pgfsetroundjoin%
\pgfsetlinewidth{0.803000pt}%
\definecolor{currentstroke}{rgb}{0.501961,0.501961,0.501961}%
\pgfsetstrokecolor{currentstroke}%
\pgfsetdash{{2.960000pt}{1.280000pt}}{0.000000pt}%
\pgfpathmoveto{\pgfqpoint{1.750000in}{4.065636in}}%
\pgfpathlineto{\pgfqpoint{12.600000in}{4.065636in}}%
\pgfusepath{stroke}%
\end{pgfscope}%
\begin{pgfscope}%
\pgfsetbuttcap%
\pgfsetroundjoin%
\definecolor{currentfill}{rgb}{0.000000,0.000000,0.000000}%
\pgfsetfillcolor{currentfill}%
\pgfsetlinewidth{0.803000pt}%
\definecolor{currentstroke}{rgb}{0.000000,0.000000,0.000000}%
\pgfsetstrokecolor{currentstroke}%
\pgfsetdash{}{0pt}%
\pgfsys@defobject{currentmarker}{\pgfqpoint{-0.048611in}{0.000000in}}{\pgfqpoint{-0.000000in}{0.000000in}}{%
\pgfpathmoveto{\pgfqpoint{-0.000000in}{0.000000in}}%
\pgfpathlineto{\pgfqpoint{-0.048611in}{0.000000in}}%
\pgfusepath{stroke,fill}%
}%
\begin{pgfscope}%
\pgfsys@transformshift{1.750000in}{4.065636in}%
\pgfsys@useobject{currentmarker}{}%
\end{pgfscope}%
\end{pgfscope}%
\begin{pgfscope}%
\definecolor{textcolor}{rgb}{0.000000,0.000000,0.000000}%
\pgfsetstrokecolor{textcolor}%
\pgfsetfillcolor{textcolor}%
\pgftext[x=1.405863in, y=4.017411in, left, base]{\color{textcolor}\rmfamily\fontsize{10.000000}{12.000000}\selectfont \(\displaystyle {\ensuremath{-}25}\)}%
\end{pgfscope}%
\begin{pgfscope}%
\pgfpathrectangle{\pgfqpoint{1.750000in}{1.125000in}}{\pgfqpoint{10.850000in}{6.795000in}}%
\pgfusepath{clip}%
\pgfsetbuttcap%
\pgfsetroundjoin%
\pgfsetlinewidth{0.803000pt}%
\definecolor{currentstroke}{rgb}{0.501961,0.501961,0.501961}%
\pgfsetstrokecolor{currentstroke}%
\pgfsetdash{{2.960000pt}{1.280000pt}}{0.000000pt}%
\pgfpathmoveto{\pgfqpoint{1.750000in}{4.835226in}}%
\pgfpathlineto{\pgfqpoint{12.600000in}{4.835226in}}%
\pgfusepath{stroke}%
\end{pgfscope}%
\begin{pgfscope}%
\pgfsetbuttcap%
\pgfsetroundjoin%
\definecolor{currentfill}{rgb}{0.000000,0.000000,0.000000}%
\pgfsetfillcolor{currentfill}%
\pgfsetlinewidth{0.803000pt}%
\definecolor{currentstroke}{rgb}{0.000000,0.000000,0.000000}%
\pgfsetstrokecolor{currentstroke}%
\pgfsetdash{}{0pt}%
\pgfsys@defobject{currentmarker}{\pgfqpoint{-0.048611in}{0.000000in}}{\pgfqpoint{-0.000000in}{0.000000in}}{%
\pgfpathmoveto{\pgfqpoint{-0.000000in}{0.000000in}}%
\pgfpathlineto{\pgfqpoint{-0.048611in}{0.000000in}}%
\pgfusepath{stroke,fill}%
}%
\begin{pgfscope}%
\pgfsys@transformshift{1.750000in}{4.835226in}%
\pgfsys@useobject{currentmarker}{}%
\end{pgfscope}%
\end{pgfscope}%
\begin{pgfscope}%
\definecolor{textcolor}{rgb}{0.000000,0.000000,0.000000}%
\pgfsetstrokecolor{textcolor}%
\pgfsetfillcolor{textcolor}%
\pgftext[x=1.405863in, y=4.787001in, left, base]{\color{textcolor}\rmfamily\fontsize{10.000000}{12.000000}\selectfont \(\displaystyle {\ensuremath{-}20}\)}%
\end{pgfscope}%
\begin{pgfscope}%
\pgfpathrectangle{\pgfqpoint{1.750000in}{1.125000in}}{\pgfqpoint{10.850000in}{6.795000in}}%
\pgfusepath{clip}%
\pgfsetbuttcap%
\pgfsetroundjoin%
\pgfsetlinewidth{0.803000pt}%
\definecolor{currentstroke}{rgb}{0.501961,0.501961,0.501961}%
\pgfsetstrokecolor{currentstroke}%
\pgfsetdash{{2.960000pt}{1.280000pt}}{0.000000pt}%
\pgfpathmoveto{\pgfqpoint{1.750000in}{5.604816in}}%
\pgfpathlineto{\pgfqpoint{12.600000in}{5.604816in}}%
\pgfusepath{stroke}%
\end{pgfscope}%
\begin{pgfscope}%
\pgfsetbuttcap%
\pgfsetroundjoin%
\definecolor{currentfill}{rgb}{0.000000,0.000000,0.000000}%
\pgfsetfillcolor{currentfill}%
\pgfsetlinewidth{0.803000pt}%
\definecolor{currentstroke}{rgb}{0.000000,0.000000,0.000000}%
\pgfsetstrokecolor{currentstroke}%
\pgfsetdash{}{0pt}%
\pgfsys@defobject{currentmarker}{\pgfqpoint{-0.048611in}{0.000000in}}{\pgfqpoint{-0.000000in}{0.000000in}}{%
\pgfpathmoveto{\pgfqpoint{-0.000000in}{0.000000in}}%
\pgfpathlineto{\pgfqpoint{-0.048611in}{0.000000in}}%
\pgfusepath{stroke,fill}%
}%
\begin{pgfscope}%
\pgfsys@transformshift{1.750000in}{5.604816in}%
\pgfsys@useobject{currentmarker}{}%
\end{pgfscope}%
\end{pgfscope}%
\begin{pgfscope}%
\definecolor{textcolor}{rgb}{0.000000,0.000000,0.000000}%
\pgfsetstrokecolor{textcolor}%
\pgfsetfillcolor{textcolor}%
\pgftext[x=1.405863in, y=5.556591in, left, base]{\color{textcolor}\rmfamily\fontsize{10.000000}{12.000000}\selectfont \(\displaystyle {\ensuremath{-}15}\)}%
\end{pgfscope}%
\begin{pgfscope}%
\pgfpathrectangle{\pgfqpoint{1.750000in}{1.125000in}}{\pgfqpoint{10.850000in}{6.795000in}}%
\pgfusepath{clip}%
\pgfsetbuttcap%
\pgfsetroundjoin%
\pgfsetlinewidth{0.803000pt}%
\definecolor{currentstroke}{rgb}{0.501961,0.501961,0.501961}%
\pgfsetstrokecolor{currentstroke}%
\pgfsetdash{{2.960000pt}{1.280000pt}}{0.000000pt}%
\pgfpathmoveto{\pgfqpoint{1.750000in}{6.374407in}}%
\pgfpathlineto{\pgfqpoint{12.600000in}{6.374407in}}%
\pgfusepath{stroke}%
\end{pgfscope}%
\begin{pgfscope}%
\pgfsetbuttcap%
\pgfsetroundjoin%
\definecolor{currentfill}{rgb}{0.000000,0.000000,0.000000}%
\pgfsetfillcolor{currentfill}%
\pgfsetlinewidth{0.803000pt}%
\definecolor{currentstroke}{rgb}{0.000000,0.000000,0.000000}%
\pgfsetstrokecolor{currentstroke}%
\pgfsetdash{}{0pt}%
\pgfsys@defobject{currentmarker}{\pgfqpoint{-0.048611in}{0.000000in}}{\pgfqpoint{-0.000000in}{0.000000in}}{%
\pgfpathmoveto{\pgfqpoint{-0.000000in}{0.000000in}}%
\pgfpathlineto{\pgfqpoint{-0.048611in}{0.000000in}}%
\pgfusepath{stroke,fill}%
}%
\begin{pgfscope}%
\pgfsys@transformshift{1.750000in}{6.374407in}%
\pgfsys@useobject{currentmarker}{}%
\end{pgfscope}%
\end{pgfscope}%
\begin{pgfscope}%
\definecolor{textcolor}{rgb}{0.000000,0.000000,0.000000}%
\pgfsetstrokecolor{textcolor}%
\pgfsetfillcolor{textcolor}%
\pgftext[x=1.405863in, y=6.326182in, left, base]{\color{textcolor}\rmfamily\fontsize{10.000000}{12.000000}\selectfont \(\displaystyle {\ensuremath{-}10}\)}%
\end{pgfscope}%
\begin{pgfscope}%
\pgfpathrectangle{\pgfqpoint{1.750000in}{1.125000in}}{\pgfqpoint{10.850000in}{6.795000in}}%
\pgfusepath{clip}%
\pgfsetbuttcap%
\pgfsetroundjoin%
\pgfsetlinewidth{0.803000pt}%
\definecolor{currentstroke}{rgb}{0.501961,0.501961,0.501961}%
\pgfsetstrokecolor{currentstroke}%
\pgfsetdash{{2.960000pt}{1.280000pt}}{0.000000pt}%
\pgfpathmoveto{\pgfqpoint{1.750000in}{7.143997in}}%
\pgfpathlineto{\pgfqpoint{12.600000in}{7.143997in}}%
\pgfusepath{stroke}%
\end{pgfscope}%
\begin{pgfscope}%
\pgfsetbuttcap%
\pgfsetroundjoin%
\definecolor{currentfill}{rgb}{0.000000,0.000000,0.000000}%
\pgfsetfillcolor{currentfill}%
\pgfsetlinewidth{0.803000pt}%
\definecolor{currentstroke}{rgb}{0.000000,0.000000,0.000000}%
\pgfsetstrokecolor{currentstroke}%
\pgfsetdash{}{0pt}%
\pgfsys@defobject{currentmarker}{\pgfqpoint{-0.048611in}{0.000000in}}{\pgfqpoint{-0.000000in}{0.000000in}}{%
\pgfpathmoveto{\pgfqpoint{-0.000000in}{0.000000in}}%
\pgfpathlineto{\pgfqpoint{-0.048611in}{0.000000in}}%
\pgfusepath{stroke,fill}%
}%
\begin{pgfscope}%
\pgfsys@transformshift{1.750000in}{7.143997in}%
\pgfsys@useobject{currentmarker}{}%
\end{pgfscope}%
\end{pgfscope}%
\begin{pgfscope}%
\definecolor{textcolor}{rgb}{0.000000,0.000000,0.000000}%
\pgfsetstrokecolor{textcolor}%
\pgfsetfillcolor{textcolor}%
\pgftext[x=1.475308in, y=7.095772in, left, base]{\color{textcolor}\rmfamily\fontsize{10.000000}{12.000000}\selectfont \(\displaystyle {\ensuremath{-}5}\)}%
\end{pgfscope}%
\begin{pgfscope}%
\pgfpathrectangle{\pgfqpoint{1.750000in}{1.125000in}}{\pgfqpoint{10.850000in}{6.795000in}}%
\pgfusepath{clip}%
\pgfsetbuttcap%
\pgfsetroundjoin%
\pgfsetlinewidth{0.803000pt}%
\definecolor{currentstroke}{rgb}{0.501961,0.501961,0.501961}%
\pgfsetstrokecolor{currentstroke}%
\pgfsetdash{{2.960000pt}{1.280000pt}}{0.000000pt}%
\pgfpathmoveto{\pgfqpoint{1.750000in}{7.913588in}}%
\pgfpathlineto{\pgfqpoint{12.600000in}{7.913588in}}%
\pgfusepath{stroke}%
\end{pgfscope}%
\begin{pgfscope}%
\pgfsetbuttcap%
\pgfsetroundjoin%
\definecolor{currentfill}{rgb}{0.000000,0.000000,0.000000}%
\pgfsetfillcolor{currentfill}%
\pgfsetlinewidth{0.803000pt}%
\definecolor{currentstroke}{rgb}{0.000000,0.000000,0.000000}%
\pgfsetstrokecolor{currentstroke}%
\pgfsetdash{}{0pt}%
\pgfsys@defobject{currentmarker}{\pgfqpoint{-0.048611in}{0.000000in}}{\pgfqpoint{-0.000000in}{0.000000in}}{%
\pgfpathmoveto{\pgfqpoint{-0.000000in}{0.000000in}}%
\pgfpathlineto{\pgfqpoint{-0.048611in}{0.000000in}}%
\pgfusepath{stroke,fill}%
}%
\begin{pgfscope}%
\pgfsys@transformshift{1.750000in}{7.913588in}%
\pgfsys@useobject{currentmarker}{}%
\end{pgfscope}%
\end{pgfscope}%
\begin{pgfscope}%
\definecolor{textcolor}{rgb}{0.000000,0.000000,0.000000}%
\pgfsetstrokecolor{textcolor}%
\pgfsetfillcolor{textcolor}%
\pgftext[x=1.583333in, y=7.865362in, left, base]{\color{textcolor}\rmfamily\fontsize{10.000000}{12.000000}\selectfont \(\displaystyle {0}\)}%
\end{pgfscope}%
\begin{pgfscope}%
\pgfpathrectangle{\pgfqpoint{1.750000in}{1.125000in}}{\pgfqpoint{10.850000in}{6.795000in}}%
\pgfusepath{clip}%
\pgfsetrectcap%
\pgfsetroundjoin%
\pgfsetlinewidth{1.505625pt}%
\definecolor{currentstroke}{rgb}{0.000000,0.000000,1.000000}%
\pgfsetstrokecolor{currentstroke}%
\pgfsetdash{}{0pt}%
\pgfpathmoveto{\pgfqpoint{2.243182in}{5.444669in}}%
\pgfpathlineto{\pgfqpoint{3.139878in}{5.777610in}}%
\pgfpathlineto{\pgfqpoint{4.036591in}{6.840424in}}%
\pgfpathlineto{\pgfqpoint{4.933323in}{7.226178in}}%
\pgfpathlineto{\pgfqpoint{5.829947in}{6.082037in}}%
\pgfpathlineto{\pgfqpoint{6.726697in}{1.433864in}}%
\pgfpathlineto{\pgfqpoint{7.623357in}{4.505139in}}%
\pgfpathlineto{\pgfqpoint{8.520089in}{3.697646in}}%
\pgfpathlineto{\pgfqpoint{9.416802in}{2.850599in}}%
\pgfpathlineto{\pgfqpoint{10.313498in}{7.611136in}}%
\pgfpathlineto{\pgfqpoint{11.210140in}{5.227322in}}%
\pgfpathlineto{\pgfqpoint{12.106818in}{6.919653in}}%
\pgfusepath{stroke}%
\end{pgfscope}%
\begin{pgfscope}%
\pgfsetrectcap%
\pgfsetmiterjoin%
\pgfsetlinewidth{0.803000pt}%
\definecolor{currentstroke}{rgb}{0.000000,0.000000,0.000000}%
\pgfsetstrokecolor{currentstroke}%
\pgfsetdash{}{0pt}%
\pgfpathmoveto{\pgfqpoint{1.750000in}{1.125000in}}%
\pgfpathlineto{\pgfqpoint{1.750000in}{7.920000in}}%
\pgfusepath{stroke}%
\end{pgfscope}%
\begin{pgfscope}%
\pgfsetrectcap%
\pgfsetmiterjoin%
\pgfsetlinewidth{0.803000pt}%
\definecolor{currentstroke}{rgb}{0.000000,0.000000,0.000000}%
\pgfsetstrokecolor{currentstroke}%
\pgfsetdash{}{0pt}%
\pgfpathmoveto{\pgfqpoint{12.600000in}{1.125000in}}%
\pgfpathlineto{\pgfqpoint{12.600000in}{7.920000in}}%
\pgfusepath{stroke}%
\end{pgfscope}%
\begin{pgfscope}%
\pgfsetrectcap%
\pgfsetmiterjoin%
\pgfsetlinewidth{0.803000pt}%
\definecolor{currentstroke}{rgb}{0.000000,0.000000,0.000000}%
\pgfsetstrokecolor{currentstroke}%
\pgfsetdash{}{0pt}%
\pgfpathmoveto{\pgfqpoint{1.750000in}{1.125000in}}%
\pgfpathlineto{\pgfqpoint{12.600000in}{1.125000in}}%
\pgfusepath{stroke}%
\end{pgfscope}%
\begin{pgfscope}%
\pgfsetrectcap%
\pgfsetmiterjoin%
\pgfsetlinewidth{0.803000pt}%
\definecolor{currentstroke}{rgb}{0.000000,0.000000,0.000000}%
\pgfsetstrokecolor{currentstroke}%
\pgfsetdash{}{0pt}%
\pgfpathmoveto{\pgfqpoint{1.750000in}{7.920000in}}%
\pgfpathlineto{\pgfqpoint{12.600000in}{7.920000in}}%
\pgfusepath{stroke}%
\end{pgfscope}%
\begin{pgfscope}%
\pgfsetroundcap%
\pgfsetroundjoin%
\pgfsetlinewidth{1.003750pt}%
\definecolor{currentstroke}{rgb}{0.000000,0.000000,0.000000}%
\pgfsetstrokecolor{currentstroke}%
\pgfsetdash{}{0pt}%
\pgfpathmoveto{\pgfqpoint{10.546329in}{8.299647in}}%
\pgfpathquadraticcurveto{\pgfqpoint{10.434369in}{7.968566in}}{\pgfqpoint{10.327383in}{7.652195in}}%
\pgfusepath{stroke}%
\end{pgfscope}%
\begin{pgfscope}%
\pgfsetroundcap%
\pgfsetroundjoin%
\pgfsetlinewidth{1.003750pt}%
\definecolor{currentstroke}{rgb}{0.000000,0.000000,0.000000}%
\pgfsetstrokecolor{currentstroke}%
\pgfsetdash{}{0pt}%
\pgfpathmoveto{\pgfqpoint{10.371494in}{7.695924in}}%
\pgfpathlineto{\pgfqpoint{10.327383in}{7.652195in}}%
\pgfpathlineto{\pgfqpoint{10.318866in}{7.713721in}}%
\pgfusepath{stroke}%
\end{pgfscope}%
\begin{pgfscope}%
\definecolor{textcolor}{rgb}{0.000000,0.000000,0.000000}%
\pgfsetstrokecolor{textcolor}%
\pgfsetfillcolor{textcolor}%
\pgftext[x=10.313498in,y=8.380727in,left,base]{\color{textcolor}\rmfamily\fontsize{10.000000}{12.000000}\selectfont y=-1.965}%
\end{pgfscope}%
\end{pgfpicture}%
\makeatother%
\endgroup%

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

1240
pics/03-mas-lab-03-me2.pgf Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,806 @@
%% Creator: Matplotlib, PGF backend
%%
%% To include the figure in your LaTeX document, write
%% \input{<filename>.pgf}
%%
%% Make sure the required packages are loaded in your preamble
%% \usepackage{pgf}
%%
%% Also ensure that all the required font packages are loaded; for instance,
%% the lmodern package is sometimes necessary when using math font.
%% \usepackage{lmodern}
%%
%% Figures using additional raster images can only be included by \input if
%% they are in the same directory as the main LaTeX file. For loading figures
%% from other directories you can use the `import` package
%% \usepackage{import}
%%
%% and then include the figures with
%% \import{<path to file>}{<filename>.pgf}
%%
%% Matplotlib used the following preamble
%%
%% \makeatletter\@ifpackageloaded{underscore}{}{\usepackage[strings]{underscore}}\makeatother
%%
\begingroup%
\makeatletter%
\begin{pgfpicture}%
\pgfpathrectangle{\pgfpointorigin}{\pgfqpoint{14.000000in}{9.000000in}}%
\pgfusepath{use as bounding box, clip}%
\begin{pgfscope}%
\pgfsetbuttcap%
\pgfsetmiterjoin%
\pgfsetlinewidth{0.000000pt}%
\definecolor{currentstroke}{rgb}{1.000000,1.000000,1.000000}%
\pgfsetstrokecolor{currentstroke}%
\pgfsetstrokeopacity{0.000000}%
\pgfsetdash{}{0pt}%
\pgfpathmoveto{\pgfqpoint{0.000000in}{0.000000in}}%
\pgfpathlineto{\pgfqpoint{14.000000in}{0.000000in}}%
\pgfpathlineto{\pgfqpoint{14.000000in}{9.000000in}}%
\pgfpathlineto{\pgfqpoint{0.000000in}{9.000000in}}%
\pgfpathlineto{\pgfqpoint{0.000000in}{0.000000in}}%
\pgfpathclose%
\pgfusepath{}%
\end{pgfscope}%
\begin{pgfscope}%
\pgfsetbuttcap%
\pgfsetmiterjoin%
\definecolor{currentfill}{rgb}{1.000000,1.000000,1.000000}%
\pgfsetfillcolor{currentfill}%
\pgfsetlinewidth{0.000000pt}%
\definecolor{currentstroke}{rgb}{0.000000,0.000000,0.000000}%
\pgfsetstrokecolor{currentstroke}%
\pgfsetstrokeopacity{0.000000}%
\pgfsetdash{}{0pt}%
\pgfpathmoveto{\pgfqpoint{1.750000in}{1.125000in}}%
\pgfpathlineto{\pgfqpoint{12.600000in}{1.125000in}}%
\pgfpathlineto{\pgfqpoint{12.600000in}{7.920000in}}%
\pgfpathlineto{\pgfqpoint{1.750000in}{7.920000in}}%
\pgfpathlineto{\pgfqpoint{1.750000in}{1.125000in}}%
\pgfpathclose%
\pgfusepath{fill}%
\end{pgfscope}%
\begin{pgfscope}%
\pgfpathrectangle{\pgfqpoint{1.750000in}{1.125000in}}{\pgfqpoint{10.850000in}{6.795000in}}%
\pgfusepath{clip}%
\pgfsetbuttcap%
\pgfsetroundjoin%
\pgfsetlinewidth{0.803000pt}%
\definecolor{currentstroke}{rgb}{0.501961,0.501961,0.501961}%
\pgfsetstrokecolor{currentstroke}%
\pgfsetdash{{2.960000pt}{1.280000pt}}{0.000000pt}%
\pgfpathmoveto{\pgfqpoint{2.243182in}{1.125000in}}%
\pgfpathlineto{\pgfqpoint{2.243182in}{7.920000in}}%
\pgfusepath{stroke}%
\end{pgfscope}%
\begin{pgfscope}%
\pgfsetbuttcap%
\pgfsetroundjoin%
\definecolor{currentfill}{rgb}{0.000000,0.000000,0.000000}%
\pgfsetfillcolor{currentfill}%
\pgfsetlinewidth{0.803000pt}%
\definecolor{currentstroke}{rgb}{0.000000,0.000000,0.000000}%
\pgfsetstrokecolor{currentstroke}%
\pgfsetdash{}{0pt}%
\pgfsys@defobject{currentmarker}{\pgfqpoint{0.000000in}{-0.048611in}}{\pgfqpoint{0.000000in}{0.000000in}}{%
\pgfpathmoveto{\pgfqpoint{0.000000in}{0.000000in}}%
\pgfpathlineto{\pgfqpoint{0.000000in}{-0.048611in}}%
\pgfusepath{stroke,fill}%
}%
\begin{pgfscope}%
\pgfsys@transformshift{2.243182in}{1.125000in}%
\pgfsys@useobject{currentmarker}{}%
\end{pgfscope}%
\end{pgfscope}%
\begin{pgfscope}%
\definecolor{textcolor}{rgb}{0.000000,0.000000,0.000000}%
\pgfsetstrokecolor{textcolor}%
\pgfsetfillcolor{textcolor}%
\pgftext[x=2.243182in,y=1.027778in,,top]{\color{textcolor}\rmfamily\fontsize{10.000000}{12.000000}\selectfont \(\displaystyle {19999}\)}%
\end{pgfscope}%
\begin{pgfscope}%
\pgfpathrectangle{\pgfqpoint{1.750000in}{1.125000in}}{\pgfqpoint{10.850000in}{6.795000in}}%
\pgfusepath{clip}%
\pgfsetbuttcap%
\pgfsetroundjoin%
\pgfsetlinewidth{0.803000pt}%
\definecolor{currentstroke}{rgb}{0.501961,0.501961,0.501961}%
\pgfsetstrokecolor{currentstroke}%
\pgfsetdash{{2.960000pt}{1.280000pt}}{0.000000pt}%
\pgfpathmoveto{\pgfqpoint{3.339190in}{1.125000in}}%
\pgfpathlineto{\pgfqpoint{3.339190in}{7.920000in}}%
\pgfusepath{stroke}%
\end{pgfscope}%
\begin{pgfscope}%
\pgfsetbuttcap%
\pgfsetroundjoin%
\definecolor{currentfill}{rgb}{0.000000,0.000000,0.000000}%
\pgfsetfillcolor{currentfill}%
\pgfsetlinewidth{0.803000pt}%
\definecolor{currentstroke}{rgb}{0.000000,0.000000,0.000000}%
\pgfsetstrokecolor{currentstroke}%
\pgfsetdash{}{0pt}%
\pgfsys@defobject{currentmarker}{\pgfqpoint{0.000000in}{-0.048611in}}{\pgfqpoint{0.000000in}{0.000000in}}{%
\pgfpathmoveto{\pgfqpoint{0.000000in}{0.000000in}}%
\pgfpathlineto{\pgfqpoint{0.000000in}{-0.048611in}}%
\pgfusepath{stroke,fill}%
}%
\begin{pgfscope}%
\pgfsys@transformshift{3.339190in}{1.125000in}%
\pgfsys@useobject{currentmarker}{}%
\end{pgfscope}%
\end{pgfscope}%
\begin{pgfscope}%
\definecolor{textcolor}{rgb}{0.000000,0.000000,0.000000}%
\pgfsetstrokecolor{textcolor}%
\pgfsetfillcolor{textcolor}%
\pgftext[x=3.339190in,y=1.027778in,,top]{\color{textcolor}\rmfamily\fontsize{10.000000}{12.000000}\selectfont \(\displaystyle {40000}\)}%
\end{pgfscope}%
\begin{pgfscope}%
\pgfpathrectangle{\pgfqpoint{1.750000in}{1.125000in}}{\pgfqpoint{10.850000in}{6.795000in}}%
\pgfusepath{clip}%
\pgfsetbuttcap%
\pgfsetroundjoin%
\pgfsetlinewidth{0.803000pt}%
\definecolor{currentstroke}{rgb}{0.501961,0.501961,0.501961}%
\pgfsetstrokecolor{currentstroke}%
\pgfsetdash{{2.960000pt}{1.280000pt}}{0.000000pt}%
\pgfpathmoveto{\pgfqpoint{4.435144in}{1.125000in}}%
\pgfpathlineto{\pgfqpoint{4.435144in}{7.920000in}}%
\pgfusepath{stroke}%
\end{pgfscope}%
\begin{pgfscope}%
\pgfsetbuttcap%
\pgfsetroundjoin%
\definecolor{currentfill}{rgb}{0.000000,0.000000,0.000000}%
\pgfsetfillcolor{currentfill}%
\pgfsetlinewidth{0.803000pt}%
\definecolor{currentstroke}{rgb}{0.000000,0.000000,0.000000}%
\pgfsetstrokecolor{currentstroke}%
\pgfsetdash{}{0pt}%
\pgfsys@defobject{currentmarker}{\pgfqpoint{0.000000in}{-0.048611in}}{\pgfqpoint{0.000000in}{0.000000in}}{%
\pgfpathmoveto{\pgfqpoint{0.000000in}{0.000000in}}%
\pgfpathlineto{\pgfqpoint{0.000000in}{-0.048611in}}%
\pgfusepath{stroke,fill}%
}%
\begin{pgfscope}%
\pgfsys@transformshift{4.435144in}{1.125000in}%
\pgfsys@useobject{currentmarker}{}%
\end{pgfscope}%
\end{pgfscope}%
\begin{pgfscope}%
\definecolor{textcolor}{rgb}{0.000000,0.000000,0.000000}%
\pgfsetstrokecolor{textcolor}%
\pgfsetfillcolor{textcolor}%
\pgftext[x=4.435144in,y=1.027778in,,top]{\color{textcolor}\rmfamily\fontsize{10.000000}{12.000000}\selectfont \(\displaystyle {60000}\)}%
\end{pgfscope}%
\begin{pgfscope}%
\pgfpathrectangle{\pgfqpoint{1.750000in}{1.125000in}}{\pgfqpoint{10.850000in}{6.795000in}}%
\pgfusepath{clip}%
\pgfsetbuttcap%
\pgfsetroundjoin%
\pgfsetlinewidth{0.803000pt}%
\definecolor{currentstroke}{rgb}{0.501961,0.501961,0.501961}%
\pgfsetstrokecolor{currentstroke}%
\pgfsetdash{{2.960000pt}{1.280000pt}}{0.000000pt}%
\pgfpathmoveto{\pgfqpoint{5.531042in}{1.125000in}}%
\pgfpathlineto{\pgfqpoint{5.531042in}{7.920000in}}%
\pgfusepath{stroke}%
\end{pgfscope}%
\begin{pgfscope}%
\pgfsetbuttcap%
\pgfsetroundjoin%
\definecolor{currentfill}{rgb}{0.000000,0.000000,0.000000}%
\pgfsetfillcolor{currentfill}%
\pgfsetlinewidth{0.803000pt}%
\definecolor{currentstroke}{rgb}{0.000000,0.000000,0.000000}%
\pgfsetstrokecolor{currentstroke}%
\pgfsetdash{}{0pt}%
\pgfsys@defobject{currentmarker}{\pgfqpoint{0.000000in}{-0.048611in}}{\pgfqpoint{0.000000in}{0.000000in}}{%
\pgfpathmoveto{\pgfqpoint{0.000000in}{0.000000in}}%
\pgfpathlineto{\pgfqpoint{0.000000in}{-0.048611in}}%
\pgfusepath{stroke,fill}%
}%
\begin{pgfscope}%
\pgfsys@transformshift{5.531042in}{1.125000in}%
\pgfsys@useobject{currentmarker}{}%
\end{pgfscope}%
\end{pgfscope}%
\begin{pgfscope}%
\definecolor{textcolor}{rgb}{0.000000,0.000000,0.000000}%
\pgfsetstrokecolor{textcolor}%
\pgfsetfillcolor{textcolor}%
\pgftext[x=5.531042in,y=1.027778in,,top]{\color{textcolor}\rmfamily\fontsize{10.000000}{12.000000}\selectfont \(\displaystyle {79999}\)}%
\end{pgfscope}%
\begin{pgfscope}%
\pgfpathrectangle{\pgfqpoint{1.750000in}{1.125000in}}{\pgfqpoint{10.850000in}{6.795000in}}%
\pgfusepath{clip}%
\pgfsetbuttcap%
\pgfsetroundjoin%
\pgfsetlinewidth{0.803000pt}%
\definecolor{currentstroke}{rgb}{0.501961,0.501961,0.501961}%
\pgfsetstrokecolor{currentstroke}%
\pgfsetdash{{2.960000pt}{1.280000pt}}{0.000000pt}%
\pgfpathmoveto{\pgfqpoint{6.626941in}{1.125000in}}%
\pgfpathlineto{\pgfqpoint{6.626941in}{7.920000in}}%
\pgfusepath{stroke}%
\end{pgfscope}%
\begin{pgfscope}%
\pgfsetbuttcap%
\pgfsetroundjoin%
\definecolor{currentfill}{rgb}{0.000000,0.000000,0.000000}%
\pgfsetfillcolor{currentfill}%
\pgfsetlinewidth{0.803000pt}%
\definecolor{currentstroke}{rgb}{0.000000,0.000000,0.000000}%
\pgfsetstrokecolor{currentstroke}%
\pgfsetdash{}{0pt}%
\pgfsys@defobject{currentmarker}{\pgfqpoint{0.000000in}{-0.048611in}}{\pgfqpoint{0.000000in}{0.000000in}}{%
\pgfpathmoveto{\pgfqpoint{0.000000in}{0.000000in}}%
\pgfpathlineto{\pgfqpoint{0.000000in}{-0.048611in}}%
\pgfusepath{stroke,fill}%
}%
\begin{pgfscope}%
\pgfsys@transformshift{6.626941in}{1.125000in}%
\pgfsys@useobject{currentmarker}{}%
\end{pgfscope}%
\end{pgfscope}%
\begin{pgfscope}%
\definecolor{textcolor}{rgb}{0.000000,0.000000,0.000000}%
\pgfsetstrokecolor{textcolor}%
\pgfsetfillcolor{textcolor}%
\pgftext[x=6.626941in,y=1.027778in,,top]{\color{textcolor}\rmfamily\fontsize{10.000000}{12.000000}\selectfont \(\displaystyle {99998}\)}%
\end{pgfscope}%
\begin{pgfscope}%
\pgfpathrectangle{\pgfqpoint{1.750000in}{1.125000in}}{\pgfqpoint{10.850000in}{6.795000in}}%
\pgfusepath{clip}%
\pgfsetbuttcap%
\pgfsetroundjoin%
\pgfsetlinewidth{0.803000pt}%
\definecolor{currentstroke}{rgb}{0.501961,0.501961,0.501961}%
\pgfsetstrokecolor{currentstroke}%
\pgfsetdash{{2.960000pt}{1.280000pt}}{0.000000pt}%
\pgfpathmoveto{\pgfqpoint{7.723004in}{1.125000in}}%
\pgfpathlineto{\pgfqpoint{7.723004in}{7.920000in}}%
\pgfusepath{stroke}%
\end{pgfscope}%
\begin{pgfscope}%
\pgfsetbuttcap%
\pgfsetroundjoin%
\definecolor{currentfill}{rgb}{0.000000,0.000000,0.000000}%
\pgfsetfillcolor{currentfill}%
\pgfsetlinewidth{0.803000pt}%
\definecolor{currentstroke}{rgb}{0.000000,0.000000,0.000000}%
\pgfsetstrokecolor{currentstroke}%
\pgfsetdash{}{0pt}%
\pgfsys@defobject{currentmarker}{\pgfqpoint{0.000000in}{-0.048611in}}{\pgfqpoint{0.000000in}{0.000000in}}{%
\pgfpathmoveto{\pgfqpoint{0.000000in}{0.000000in}}%
\pgfpathlineto{\pgfqpoint{0.000000in}{-0.048611in}}%
\pgfusepath{stroke,fill}%
}%
\begin{pgfscope}%
\pgfsys@transformshift{7.723004in}{1.125000in}%
\pgfsys@useobject{currentmarker}{}%
\end{pgfscope}%
\end{pgfscope}%
\begin{pgfscope}%
\definecolor{textcolor}{rgb}{0.000000,0.000000,0.000000}%
\pgfsetstrokecolor{textcolor}%
\pgfsetfillcolor{textcolor}%
\pgftext[x=7.723004in,y=1.027778in,,top]{\color{textcolor}\rmfamily\fontsize{10.000000}{12.000000}\selectfont \(\displaystyle {120000}\)}%
\end{pgfscope}%
\begin{pgfscope}%
\pgfpathrectangle{\pgfqpoint{1.750000in}{1.125000in}}{\pgfqpoint{10.850000in}{6.795000in}}%
\pgfusepath{clip}%
\pgfsetbuttcap%
\pgfsetroundjoin%
\pgfsetlinewidth{0.803000pt}%
\definecolor{currentstroke}{rgb}{0.501961,0.501961,0.501961}%
\pgfsetstrokecolor{currentstroke}%
\pgfsetdash{{2.960000pt}{1.280000pt}}{0.000000pt}%
\pgfpathmoveto{\pgfqpoint{8.818903in}{1.125000in}}%
\pgfpathlineto{\pgfqpoint{8.818903in}{7.920000in}}%
\pgfusepath{stroke}%
\end{pgfscope}%
\begin{pgfscope}%
\pgfsetbuttcap%
\pgfsetroundjoin%
\definecolor{currentfill}{rgb}{0.000000,0.000000,0.000000}%
\pgfsetfillcolor{currentfill}%
\pgfsetlinewidth{0.803000pt}%
\definecolor{currentstroke}{rgb}{0.000000,0.000000,0.000000}%
\pgfsetstrokecolor{currentstroke}%
\pgfsetdash{}{0pt}%
\pgfsys@defobject{currentmarker}{\pgfqpoint{0.000000in}{-0.048611in}}{\pgfqpoint{0.000000in}{0.000000in}}{%
\pgfpathmoveto{\pgfqpoint{0.000000in}{0.000000in}}%
\pgfpathlineto{\pgfqpoint{0.000000in}{-0.048611in}}%
\pgfusepath{stroke,fill}%
}%
\begin{pgfscope}%
\pgfsys@transformshift{8.818903in}{1.125000in}%
\pgfsys@useobject{currentmarker}{}%
\end{pgfscope}%
\end{pgfscope}%
\begin{pgfscope}%
\definecolor{textcolor}{rgb}{0.000000,0.000000,0.000000}%
\pgfsetstrokecolor{textcolor}%
\pgfsetfillcolor{textcolor}%
\pgftext[x=8.818903in,y=1.027778in,,top]{\color{textcolor}\rmfamily\fontsize{10.000000}{12.000000}\selectfont \(\displaystyle {139999}\)}%
\end{pgfscope}%
\begin{pgfscope}%
\pgfpathrectangle{\pgfqpoint{1.750000in}{1.125000in}}{\pgfqpoint{10.850000in}{6.795000in}}%
\pgfusepath{clip}%
\pgfsetbuttcap%
\pgfsetroundjoin%
\pgfsetlinewidth{0.803000pt}%
\definecolor{currentstroke}{rgb}{0.501961,0.501961,0.501961}%
\pgfsetstrokecolor{currentstroke}%
\pgfsetdash{{2.960000pt}{1.280000pt}}{0.000000pt}%
\pgfpathmoveto{\pgfqpoint{9.914802in}{1.125000in}}%
\pgfpathlineto{\pgfqpoint{9.914802in}{7.920000in}}%
\pgfusepath{stroke}%
\end{pgfscope}%
\begin{pgfscope}%
\pgfsetbuttcap%
\pgfsetroundjoin%
\definecolor{currentfill}{rgb}{0.000000,0.000000,0.000000}%
\pgfsetfillcolor{currentfill}%
\pgfsetlinewidth{0.803000pt}%
\definecolor{currentstroke}{rgb}{0.000000,0.000000,0.000000}%
\pgfsetstrokecolor{currentstroke}%
\pgfsetdash{}{0pt}%
\pgfsys@defobject{currentmarker}{\pgfqpoint{0.000000in}{-0.048611in}}{\pgfqpoint{0.000000in}{0.000000in}}{%
\pgfpathmoveto{\pgfqpoint{0.000000in}{0.000000in}}%
\pgfpathlineto{\pgfqpoint{0.000000in}{-0.048611in}}%
\pgfusepath{stroke,fill}%
}%
\begin{pgfscope}%
\pgfsys@transformshift{9.914802in}{1.125000in}%
\pgfsys@useobject{currentmarker}{}%
\end{pgfscope}%
\end{pgfscope}%
\begin{pgfscope}%
\definecolor{textcolor}{rgb}{0.000000,0.000000,0.000000}%
\pgfsetstrokecolor{textcolor}%
\pgfsetfillcolor{textcolor}%
\pgftext[x=9.914802in,y=1.027778in,,top]{\color{textcolor}\rmfamily\fontsize{10.000000}{12.000000}\selectfont \(\displaystyle {159998}\)}%
\end{pgfscope}%
\begin{pgfscope}%
\pgfpathrectangle{\pgfqpoint{1.750000in}{1.125000in}}{\pgfqpoint{10.850000in}{6.795000in}}%
\pgfusepath{clip}%
\pgfsetbuttcap%
\pgfsetroundjoin%
\pgfsetlinewidth{0.803000pt}%
\definecolor{currentstroke}{rgb}{0.501961,0.501961,0.501961}%
\pgfsetstrokecolor{currentstroke}%
\pgfsetdash{{2.960000pt}{1.280000pt}}{0.000000pt}%
\pgfpathmoveto{\pgfqpoint{11.010810in}{1.125000in}}%
\pgfpathlineto{\pgfqpoint{11.010810in}{7.920000in}}%
\pgfusepath{stroke}%
\end{pgfscope}%
\begin{pgfscope}%
\pgfsetbuttcap%
\pgfsetroundjoin%
\definecolor{currentfill}{rgb}{0.000000,0.000000,0.000000}%
\pgfsetfillcolor{currentfill}%
\pgfsetlinewidth{0.803000pt}%
\definecolor{currentstroke}{rgb}{0.000000,0.000000,0.000000}%
\pgfsetstrokecolor{currentstroke}%
\pgfsetdash{}{0pt}%
\pgfsys@defobject{currentmarker}{\pgfqpoint{0.000000in}{-0.048611in}}{\pgfqpoint{0.000000in}{0.000000in}}{%
\pgfpathmoveto{\pgfqpoint{0.000000in}{0.000000in}}%
\pgfpathlineto{\pgfqpoint{0.000000in}{-0.048611in}}%
\pgfusepath{stroke,fill}%
}%
\begin{pgfscope}%
\pgfsys@transformshift{11.010810in}{1.125000in}%
\pgfsys@useobject{currentmarker}{}%
\end{pgfscope}%
\end{pgfscope}%
\begin{pgfscope}%
\definecolor{textcolor}{rgb}{0.000000,0.000000,0.000000}%
\pgfsetstrokecolor{textcolor}%
\pgfsetfillcolor{textcolor}%
\pgftext[x=11.010810in,y=1.027778in,,top]{\color{textcolor}\rmfamily\fontsize{10.000000}{12.000000}\selectfont \(\displaystyle {179999}\)}%
\end{pgfscope}%
\begin{pgfscope}%
\pgfpathrectangle{\pgfqpoint{1.750000in}{1.125000in}}{\pgfqpoint{10.850000in}{6.795000in}}%
\pgfusepath{clip}%
\pgfsetbuttcap%
\pgfsetroundjoin%
\pgfsetlinewidth{0.803000pt}%
\definecolor{currentstroke}{rgb}{0.501961,0.501961,0.501961}%
\pgfsetstrokecolor{currentstroke}%
\pgfsetdash{{2.960000pt}{1.280000pt}}{0.000000pt}%
\pgfpathmoveto{\pgfqpoint{12.106818in}{1.125000in}}%
\pgfpathlineto{\pgfqpoint{12.106818in}{7.920000in}}%
\pgfusepath{stroke}%
\end{pgfscope}%
\begin{pgfscope}%
\pgfsetbuttcap%
\pgfsetroundjoin%
\definecolor{currentfill}{rgb}{0.000000,0.000000,0.000000}%
\pgfsetfillcolor{currentfill}%
\pgfsetlinewidth{0.803000pt}%
\definecolor{currentstroke}{rgb}{0.000000,0.000000,0.000000}%
\pgfsetstrokecolor{currentstroke}%
\pgfsetdash{}{0pt}%
\pgfsys@defobject{currentmarker}{\pgfqpoint{0.000000in}{-0.048611in}}{\pgfqpoint{0.000000in}{0.000000in}}{%
\pgfpathmoveto{\pgfqpoint{0.000000in}{0.000000in}}%
\pgfpathlineto{\pgfqpoint{0.000000in}{-0.048611in}}%
\pgfusepath{stroke,fill}%
}%
\begin{pgfscope}%
\pgfsys@transformshift{12.106818in}{1.125000in}%
\pgfsys@useobject{currentmarker}{}%
\end{pgfscope}%
\end{pgfscope}%
\begin{pgfscope}%
\definecolor{textcolor}{rgb}{0.000000,0.000000,0.000000}%
\pgfsetstrokecolor{textcolor}%
\pgfsetfillcolor{textcolor}%
\pgftext[x=12.106818in,y=1.027778in,,top]{\color{textcolor}\rmfamily\fontsize{10.000000}{12.000000}\selectfont \(\displaystyle {200000}\)}%
\end{pgfscope}%
\begin{pgfscope}%
\pgfpathrectangle{\pgfqpoint{1.750000in}{1.125000in}}{\pgfqpoint{10.850000in}{6.795000in}}%
\pgfusepath{clip}%
\pgfsetbuttcap%
\pgfsetroundjoin%
\pgfsetlinewidth{0.803000pt}%
\definecolor{currentstroke}{rgb}{0.501961,0.501961,0.501961}%
\pgfsetstrokecolor{currentstroke}%
\pgfsetdash{{2.960000pt}{1.280000pt}}{0.000000pt}%
\pgfpathmoveto{\pgfqpoint{1.750000in}{1.321419in}}%
\pgfpathlineto{\pgfqpoint{12.600000in}{1.321419in}}%
\pgfusepath{stroke}%
\end{pgfscope}%
\begin{pgfscope}%
\pgfsetbuttcap%
\pgfsetroundjoin%
\definecolor{currentfill}{rgb}{0.000000,0.000000,0.000000}%
\pgfsetfillcolor{currentfill}%
\pgfsetlinewidth{0.803000pt}%
\definecolor{currentstroke}{rgb}{0.000000,0.000000,0.000000}%
\pgfsetstrokecolor{currentstroke}%
\pgfsetdash{}{0pt}%
\pgfsys@defobject{currentmarker}{\pgfqpoint{-0.048611in}{0.000000in}}{\pgfqpoint{-0.000000in}{0.000000in}}{%
\pgfpathmoveto{\pgfqpoint{-0.000000in}{0.000000in}}%
\pgfpathlineto{\pgfqpoint{-0.048611in}{0.000000in}}%
\pgfusepath{stroke,fill}%
}%
\begin{pgfscope}%
\pgfsys@transformshift{1.750000in}{1.321419in}%
\pgfsys@useobject{currentmarker}{}%
\end{pgfscope}%
\end{pgfscope}%
\begin{pgfscope}%
\definecolor{textcolor}{rgb}{0.000000,0.000000,0.000000}%
\pgfsetstrokecolor{textcolor}%
\pgfsetfillcolor{textcolor}%
\pgftext[x=1.266974in, y=1.273194in, left, base]{\color{textcolor}\rmfamily\fontsize{10.000000}{12.000000}\selectfont \(\displaystyle {\ensuremath{-}6000}\)}%
\end{pgfscope}%
\begin{pgfscope}%
\pgfpathrectangle{\pgfqpoint{1.750000in}{1.125000in}}{\pgfqpoint{10.850000in}{6.795000in}}%
\pgfusepath{clip}%
\pgfsetbuttcap%
\pgfsetroundjoin%
\pgfsetlinewidth{0.803000pt}%
\definecolor{currentstroke}{rgb}{0.501961,0.501961,0.501961}%
\pgfsetstrokecolor{currentstroke}%
\pgfsetdash{{2.960000pt}{1.280000pt}}{0.000000pt}%
\pgfpathmoveto{\pgfqpoint{1.750000in}{2.373143in}}%
\pgfpathlineto{\pgfqpoint{12.600000in}{2.373143in}}%
\pgfusepath{stroke}%
\end{pgfscope}%
\begin{pgfscope}%
\pgfsetbuttcap%
\pgfsetroundjoin%
\definecolor{currentfill}{rgb}{0.000000,0.000000,0.000000}%
\pgfsetfillcolor{currentfill}%
\pgfsetlinewidth{0.803000pt}%
\definecolor{currentstroke}{rgb}{0.000000,0.000000,0.000000}%
\pgfsetstrokecolor{currentstroke}%
\pgfsetdash{}{0pt}%
\pgfsys@defobject{currentmarker}{\pgfqpoint{-0.048611in}{0.000000in}}{\pgfqpoint{-0.000000in}{0.000000in}}{%
\pgfpathmoveto{\pgfqpoint{-0.000000in}{0.000000in}}%
\pgfpathlineto{\pgfqpoint{-0.048611in}{0.000000in}}%
\pgfusepath{stroke,fill}%
}%
\begin{pgfscope}%
\pgfsys@transformshift{1.750000in}{2.373143in}%
\pgfsys@useobject{currentmarker}{}%
\end{pgfscope}%
\end{pgfscope}%
\begin{pgfscope}%
\definecolor{textcolor}{rgb}{0.000000,0.000000,0.000000}%
\pgfsetstrokecolor{textcolor}%
\pgfsetfillcolor{textcolor}%
\pgftext[x=1.266974in, y=2.324918in, left, base]{\color{textcolor}\rmfamily\fontsize{10.000000}{12.000000}\selectfont \(\displaystyle {\ensuremath{-}5000}\)}%
\end{pgfscope}%
\begin{pgfscope}%
\pgfpathrectangle{\pgfqpoint{1.750000in}{1.125000in}}{\pgfqpoint{10.850000in}{6.795000in}}%
\pgfusepath{clip}%
\pgfsetbuttcap%
\pgfsetroundjoin%
\pgfsetlinewidth{0.803000pt}%
\definecolor{currentstroke}{rgb}{0.501961,0.501961,0.501961}%
\pgfsetstrokecolor{currentstroke}%
\pgfsetdash{{2.960000pt}{1.280000pt}}{0.000000pt}%
\pgfpathmoveto{\pgfqpoint{1.750000in}{3.424868in}}%
\pgfpathlineto{\pgfqpoint{12.600000in}{3.424868in}}%
\pgfusepath{stroke}%
\end{pgfscope}%
\begin{pgfscope}%
\pgfsetbuttcap%
\pgfsetroundjoin%
\definecolor{currentfill}{rgb}{0.000000,0.000000,0.000000}%
\pgfsetfillcolor{currentfill}%
\pgfsetlinewidth{0.803000pt}%
\definecolor{currentstroke}{rgb}{0.000000,0.000000,0.000000}%
\pgfsetstrokecolor{currentstroke}%
\pgfsetdash{}{0pt}%
\pgfsys@defobject{currentmarker}{\pgfqpoint{-0.048611in}{0.000000in}}{\pgfqpoint{-0.000000in}{0.000000in}}{%
\pgfpathmoveto{\pgfqpoint{-0.000000in}{0.000000in}}%
\pgfpathlineto{\pgfqpoint{-0.048611in}{0.000000in}}%
\pgfusepath{stroke,fill}%
}%
\begin{pgfscope}%
\pgfsys@transformshift{1.750000in}{3.424868in}%
\pgfsys@useobject{currentmarker}{}%
\end{pgfscope}%
\end{pgfscope}%
\begin{pgfscope}%
\definecolor{textcolor}{rgb}{0.000000,0.000000,0.000000}%
\pgfsetstrokecolor{textcolor}%
\pgfsetfillcolor{textcolor}%
\pgftext[x=1.266974in, y=3.376642in, left, base]{\color{textcolor}\rmfamily\fontsize{10.000000}{12.000000}\selectfont \(\displaystyle {\ensuremath{-}4000}\)}%
\end{pgfscope}%
\begin{pgfscope}%
\pgfpathrectangle{\pgfqpoint{1.750000in}{1.125000in}}{\pgfqpoint{10.850000in}{6.795000in}}%
\pgfusepath{clip}%
\pgfsetbuttcap%
\pgfsetroundjoin%
\pgfsetlinewidth{0.803000pt}%
\definecolor{currentstroke}{rgb}{0.501961,0.501961,0.501961}%
\pgfsetstrokecolor{currentstroke}%
\pgfsetdash{{2.960000pt}{1.280000pt}}{0.000000pt}%
\pgfpathmoveto{\pgfqpoint{1.750000in}{4.476592in}}%
\pgfpathlineto{\pgfqpoint{12.600000in}{4.476592in}}%
\pgfusepath{stroke}%
\end{pgfscope}%
\begin{pgfscope}%
\pgfsetbuttcap%
\pgfsetroundjoin%
\definecolor{currentfill}{rgb}{0.000000,0.000000,0.000000}%
\pgfsetfillcolor{currentfill}%
\pgfsetlinewidth{0.803000pt}%
\definecolor{currentstroke}{rgb}{0.000000,0.000000,0.000000}%
\pgfsetstrokecolor{currentstroke}%
\pgfsetdash{}{0pt}%
\pgfsys@defobject{currentmarker}{\pgfqpoint{-0.048611in}{0.000000in}}{\pgfqpoint{-0.000000in}{0.000000in}}{%
\pgfpathmoveto{\pgfqpoint{-0.000000in}{0.000000in}}%
\pgfpathlineto{\pgfqpoint{-0.048611in}{0.000000in}}%
\pgfusepath{stroke,fill}%
}%
\begin{pgfscope}%
\pgfsys@transformshift{1.750000in}{4.476592in}%
\pgfsys@useobject{currentmarker}{}%
\end{pgfscope}%
\end{pgfscope}%
\begin{pgfscope}%
\definecolor{textcolor}{rgb}{0.000000,0.000000,0.000000}%
\pgfsetstrokecolor{textcolor}%
\pgfsetfillcolor{textcolor}%
\pgftext[x=1.266974in, y=4.428366in, left, base]{\color{textcolor}\rmfamily\fontsize{10.000000}{12.000000}\selectfont \(\displaystyle {\ensuremath{-}3000}\)}%
\end{pgfscope}%
\begin{pgfscope}%
\pgfpathrectangle{\pgfqpoint{1.750000in}{1.125000in}}{\pgfqpoint{10.850000in}{6.795000in}}%
\pgfusepath{clip}%
\pgfsetbuttcap%
\pgfsetroundjoin%
\pgfsetlinewidth{0.803000pt}%
\definecolor{currentstroke}{rgb}{0.501961,0.501961,0.501961}%
\pgfsetstrokecolor{currentstroke}%
\pgfsetdash{{2.960000pt}{1.280000pt}}{0.000000pt}%
\pgfpathmoveto{\pgfqpoint{1.750000in}{5.528316in}}%
\pgfpathlineto{\pgfqpoint{12.600000in}{5.528316in}}%
\pgfusepath{stroke}%
\end{pgfscope}%
\begin{pgfscope}%
\pgfsetbuttcap%
\pgfsetroundjoin%
\definecolor{currentfill}{rgb}{0.000000,0.000000,0.000000}%
\pgfsetfillcolor{currentfill}%
\pgfsetlinewidth{0.803000pt}%
\definecolor{currentstroke}{rgb}{0.000000,0.000000,0.000000}%
\pgfsetstrokecolor{currentstroke}%
\pgfsetdash{}{0pt}%
\pgfsys@defobject{currentmarker}{\pgfqpoint{-0.048611in}{0.000000in}}{\pgfqpoint{-0.000000in}{0.000000in}}{%
\pgfpathmoveto{\pgfqpoint{-0.000000in}{0.000000in}}%
\pgfpathlineto{\pgfqpoint{-0.048611in}{0.000000in}}%
\pgfusepath{stroke,fill}%
}%
\begin{pgfscope}%
\pgfsys@transformshift{1.750000in}{5.528316in}%
\pgfsys@useobject{currentmarker}{}%
\end{pgfscope}%
\end{pgfscope}%
\begin{pgfscope}%
\definecolor{textcolor}{rgb}{0.000000,0.000000,0.000000}%
\pgfsetstrokecolor{textcolor}%
\pgfsetfillcolor{textcolor}%
\pgftext[x=1.266974in, y=5.480090in, left, base]{\color{textcolor}\rmfamily\fontsize{10.000000}{12.000000}\selectfont \(\displaystyle {\ensuremath{-}2000}\)}%
\end{pgfscope}%
\begin{pgfscope}%
\pgfpathrectangle{\pgfqpoint{1.750000in}{1.125000in}}{\pgfqpoint{10.850000in}{6.795000in}}%
\pgfusepath{clip}%
\pgfsetbuttcap%
\pgfsetroundjoin%
\pgfsetlinewidth{0.803000pt}%
\definecolor{currentstroke}{rgb}{0.501961,0.501961,0.501961}%
\pgfsetstrokecolor{currentstroke}%
\pgfsetdash{{2.960000pt}{1.280000pt}}{0.000000pt}%
\pgfpathmoveto{\pgfqpoint{1.750000in}{6.580040in}}%
\pgfpathlineto{\pgfqpoint{12.600000in}{6.580040in}}%
\pgfusepath{stroke}%
\end{pgfscope}%
\begin{pgfscope}%
\pgfsetbuttcap%
\pgfsetroundjoin%
\definecolor{currentfill}{rgb}{0.000000,0.000000,0.000000}%
\pgfsetfillcolor{currentfill}%
\pgfsetlinewidth{0.803000pt}%
\definecolor{currentstroke}{rgb}{0.000000,0.000000,0.000000}%
\pgfsetstrokecolor{currentstroke}%
\pgfsetdash{}{0pt}%
\pgfsys@defobject{currentmarker}{\pgfqpoint{-0.048611in}{0.000000in}}{\pgfqpoint{-0.000000in}{0.000000in}}{%
\pgfpathmoveto{\pgfqpoint{-0.000000in}{0.000000in}}%
\pgfpathlineto{\pgfqpoint{-0.048611in}{0.000000in}}%
\pgfusepath{stroke,fill}%
}%
\begin{pgfscope}%
\pgfsys@transformshift{1.750000in}{6.580040in}%
\pgfsys@useobject{currentmarker}{}%
\end{pgfscope}%
\end{pgfscope}%
\begin{pgfscope}%
\definecolor{textcolor}{rgb}{0.000000,0.000000,0.000000}%
\pgfsetstrokecolor{textcolor}%
\pgfsetfillcolor{textcolor}%
\pgftext[x=1.266974in, y=6.531814in, left, base]{\color{textcolor}\rmfamily\fontsize{10.000000}{12.000000}\selectfont \(\displaystyle {\ensuremath{-}1000}\)}%
\end{pgfscope}%
\begin{pgfscope}%
\pgfpathrectangle{\pgfqpoint{1.750000in}{1.125000in}}{\pgfqpoint{10.850000in}{6.795000in}}%
\pgfusepath{clip}%
\pgfsetbuttcap%
\pgfsetroundjoin%
\pgfsetlinewidth{0.803000pt}%
\definecolor{currentstroke}{rgb}{0.501961,0.501961,0.501961}%
\pgfsetstrokecolor{currentstroke}%
\pgfsetdash{{2.960000pt}{1.280000pt}}{0.000000pt}%
\pgfpathmoveto{\pgfqpoint{1.750000in}{7.631764in}}%
\pgfpathlineto{\pgfqpoint{12.600000in}{7.631764in}}%
\pgfusepath{stroke}%
\end{pgfscope}%
\begin{pgfscope}%
\pgfsetbuttcap%
\pgfsetroundjoin%
\definecolor{currentfill}{rgb}{0.000000,0.000000,0.000000}%
\pgfsetfillcolor{currentfill}%
\pgfsetlinewidth{0.803000pt}%
\definecolor{currentstroke}{rgb}{0.000000,0.000000,0.000000}%
\pgfsetstrokecolor{currentstroke}%
\pgfsetdash{}{0pt}%
\pgfsys@defobject{currentmarker}{\pgfqpoint{-0.048611in}{0.000000in}}{\pgfqpoint{-0.000000in}{0.000000in}}{%
\pgfpathmoveto{\pgfqpoint{-0.000000in}{0.000000in}}%
\pgfpathlineto{\pgfqpoint{-0.048611in}{0.000000in}}%
\pgfusepath{stroke,fill}%
}%
\begin{pgfscope}%
\pgfsys@transformshift{1.750000in}{7.631764in}%
\pgfsys@useobject{currentmarker}{}%
\end{pgfscope}%
\end{pgfscope}%
\begin{pgfscope}%
\definecolor{textcolor}{rgb}{0.000000,0.000000,0.000000}%
\pgfsetstrokecolor{textcolor}%
\pgfsetfillcolor{textcolor}%
\pgftext[x=1.583333in, y=7.583538in, left, base]{\color{textcolor}\rmfamily\fontsize{10.000000}{12.000000}\selectfont \(\displaystyle {0}\)}%
\end{pgfscope}%
\begin{pgfscope}%
\pgfpathrectangle{\pgfqpoint{1.750000in}{1.125000in}}{\pgfqpoint{10.850000in}{6.795000in}}%
\pgfusepath{clip}%
\pgfsetrectcap%
\pgfsetroundjoin%
\pgfsetlinewidth{1.505625pt}%
\definecolor{currentstroke}{rgb}{0.000000,0.000000,1.000000}%
\pgfsetstrokecolor{currentstroke}%
\pgfsetdash{}{0pt}%
\pgfpathmoveto{\pgfqpoint{2.243182in}{1.433864in}}%
\pgfpathlineto{\pgfqpoint{3.339190in}{1.936537in}}%
\pgfpathlineto{\pgfqpoint{4.435144in}{6.205070in}}%
\pgfpathlineto{\pgfqpoint{5.531042in}{7.540830in}}%
\pgfpathlineto{\pgfqpoint{6.626941in}{7.500542in}}%
\pgfpathlineto{\pgfqpoint{7.723004in}{1.694385in}}%
\pgfpathlineto{\pgfqpoint{8.818903in}{7.447469in}}%
\pgfpathlineto{\pgfqpoint{9.914802in}{7.611136in}}%
\pgfpathlineto{\pgfqpoint{11.010810in}{7.370528in}}%
\pgfpathlineto{\pgfqpoint{12.106818in}{6.461878in}}%
\pgfusepath{stroke}%
\end{pgfscope}%
\begin{pgfscope}%
\pgfsetrectcap%
\pgfsetmiterjoin%
\pgfsetlinewidth{0.803000pt}%
\definecolor{currentstroke}{rgb}{0.000000,0.000000,0.000000}%
\pgfsetstrokecolor{currentstroke}%
\pgfsetdash{}{0pt}%
\pgfpathmoveto{\pgfqpoint{1.750000in}{1.125000in}}%
\pgfpathlineto{\pgfqpoint{1.750000in}{7.920000in}}%
\pgfusepath{stroke}%
\end{pgfscope}%
\begin{pgfscope}%
\pgfsetrectcap%
\pgfsetmiterjoin%
\pgfsetlinewidth{0.803000pt}%
\definecolor{currentstroke}{rgb}{0.000000,0.000000,0.000000}%
\pgfsetstrokecolor{currentstroke}%
\pgfsetdash{}{0pt}%
\pgfpathmoveto{\pgfqpoint{12.600000in}{1.125000in}}%
\pgfpathlineto{\pgfqpoint{12.600000in}{7.920000in}}%
\pgfusepath{stroke}%
\end{pgfscope}%
\begin{pgfscope}%
\pgfsetrectcap%
\pgfsetmiterjoin%
\pgfsetlinewidth{0.803000pt}%
\definecolor{currentstroke}{rgb}{0.000000,0.000000,0.000000}%
\pgfsetstrokecolor{currentstroke}%
\pgfsetdash{}{0pt}%
\pgfpathmoveto{\pgfqpoint{1.750000in}{1.125000in}}%
\pgfpathlineto{\pgfqpoint{12.600000in}{1.125000in}}%
\pgfusepath{stroke}%
\end{pgfscope}%
\begin{pgfscope}%
\pgfsetrectcap%
\pgfsetmiterjoin%
\pgfsetlinewidth{0.803000pt}%
\definecolor{currentstroke}{rgb}{0.000000,0.000000,0.000000}%
\pgfsetstrokecolor{currentstroke}%
\pgfsetdash{}{0pt}%
\pgfpathmoveto{\pgfqpoint{1.750000in}{7.920000in}}%
\pgfpathlineto{\pgfqpoint{12.600000in}{7.920000in}}%
\pgfusepath{stroke}%
\end{pgfscope}%
\begin{pgfscope}%
\pgfsetroundcap%
\pgfsetroundjoin%
\pgfsetlinewidth{1.003750pt}%
\definecolor{currentstroke}{rgb}{0.000000,0.000000,0.000000}%
\pgfsetstrokecolor{currentstroke}%
\pgfsetdash{}{0pt}%
\pgfpathmoveto{\pgfqpoint{10.193997in}{7.647530in}}%
\pgfpathquadraticcurveto{\pgfqpoint{10.068202in}{7.631132in}}{\pgfqpoint{9.957806in}{7.616742in}}%
\pgfusepath{stroke}%
\end{pgfscope}%
\begin{pgfscope}%
\pgfsetroundcap%
\pgfsetroundjoin%
\pgfsetlinewidth{1.003750pt}%
\definecolor{currentstroke}{rgb}{0.000000,0.000000,0.000000}%
\pgfsetstrokecolor{currentstroke}%
\pgfsetdash{}{0pt}%
\pgfpathmoveto{\pgfqpoint{10.016486in}{7.596378in}}%
\pgfpathlineto{\pgfqpoint{9.957806in}{7.616742in}}%
\pgfpathlineto{\pgfqpoint{10.009304in}{7.651468in}}%
\pgfusepath{stroke}%
\end{pgfscope}%
\begin{pgfscope}%
\definecolor{textcolor}{rgb}{0.000000,0.000000,0.000000}%
\pgfsetstrokecolor{textcolor}%
\pgfsetfillcolor{textcolor}%
\pgftext[x=9.914802in,y=7.616395in,left,base]{\color{textcolor}\rmfamily\fontsize{10.000000}{12.000000}\selectfont y=-19.613}%
\end{pgfscope}%
\end{pgfpicture}%
\makeatother%
\endgroup%