• Nenhum resultado encontrado

3.3 Desenho da Solução

4.3.2 Algoritmo Q-learning

Na simulação 1, o algoritmo Q-Learning é aplicado no ponto de decisão referente ao

Agente Produto Tipo 2, agente Q-learning. Como referido no capítulo 3, é necessário

construir uma tabelaQ (tabela 4.13). Apesar de na simulação 1 os Agentes Produto terem

a possibilidade de se movimentarem em três direções diferentes, o agenteQ-learning só

tem a possibilidade de se movimentar em duas destas, ou seja, só pode escolher entre duas ações, sendo estas, movimentar-se para a direita ou para baixo. O agenteQ-learning

só tem acesso a estas duas ações para tornar o seu treino mais rápido, visto que, este só possui a capacidade de escolher uma ação na estação em que a sua decisão afeta o seu tempo de produção, sendo esta o ponto de decisão que corresponde ao Agente Produto Tipo 2.

4.3.2.1 Parâmetros e Recompensas - Simulação 1

Os diferentes estados presentes na tabela 4.13, correspondem às diferentes possibilidades em que os restantes Agentes Produto Tipo 2 se podem encontrar, quando o agente Q- learning se encontra no ponto de decisão supracitado.

Tabela 4.13: Inicialização da tabelaQ utilizada para treinar o agente Q-learning na simu-

lação 1. Direita Baixo 0 0 0 1 0 0 2 0 0 3 0 0 4 0 0 5 0 0 6 0 0 7 0 0 8 0 0 9 0 0 10 0 0 11 0 0 12 0 0 13 0 0 14 0 0 15 0 0 16 0 0

Os estados presentes na tabela 4.13 possuem o seguinte significado:

• ambas as transportadoras verticais, correspondentes aos Agentes Produto Tipo 2, vazias,

• ambos os Agentes Produto Tipo 2 na primeira transportadora vertical ou ambos na segunda transportadora vertical,

• um dos Agentes Produto Tipo 2 na primeira transportadora horizontal, atrás ou à frente do ponto de decisão, e o outro na primeira ou segunda transportadora vertical e vice-versa,

• um Agente Produto Tipo 2 em cada uma das transportadoras verticais, onde se podem encontrar na mesma posição, relativamente ao eixo de coordenadas Y, ou

4 . 3 . A L G O R I T M O S

um dos Agentes Produto numa posição superior relativamente ao outro, tendo em conta o mesmo eixo de coordenadas, e vice-versa.

Como são estipulados, de uma forma genérica, os estados em que os agentes, não treinados, se podem encontrar, é possível deduzir qual das transportadoras verticais ori- ginam um caminho de produção mais rápido, sendo assim atribuída uma recompensa positiva, neste caso um, caso o agente escolha o caminho mais rápido num dado estado, ou uma recompensa negativa, de valor menos um, caso o agente escolha o caminho mais demorado num dado estado.

O agente treinou durante 100000 iterações, onde 50000 foram focadas na fase de exploração aleatória do agente e as últimas 50000 foram focadas na fase de exploração por si próprio. No final do treino a tabelaQ, presente em 4.13, fica preenchida com os

valoresQ, provenientes da equação 3.3, que melhor se aplicam a cada posição da tabela.

A tabelaQ, preenchida pelos valores Q, após o treino do agente Q-learning, encontra-se

na tabela 4.14.

Tabela 4.14: TabelaQ preenchida após o treino do agente RL.

Direita Baixo 0 -0,1 0,1 1 1 -1 2 -1 1 3 -1 1 4 -1 1 5 -1 1 6 -1 1 7 1 -1 8 1 -1 9 -1 1 10 -1 1 11 0 0 12 0 0 13 0 0 14 0 0 15 0 0 16 0 0

Tabela 4.15: Parâmetros de treino do algoritmoQ-learning Parâmetro Valor Ações [0, 1] Número de Ações 2 inicial 1 f inal 0,1 Exploração 50000 γ 0,6 α 0,1 Epochs 100000

Os parâmetros presentes na tabela 4.15, possuem o seguinte significado:

• ações, são representadas por um vetor que armazena as possíveis ações que o agente pode realizar, onde zero representa movimentar para baixo e um movimentar para a direita,

• inicial, representa o valor inicial da política -greedy, sendo este um ou 100%,

• f inal, representa o valor final da política -greedy, sendo este 0,1 ou 10%,

• exploração, representa o valor que define o rácio da política -greedy, ou seja, quando o número de iterações alcança os 50000 significa que o valor de  = 0, 1,

• γ, representa a taxa de desconto, • α, representa a taxa de aprendizagem,

• epochs, representam o número total de iterações realizadas no treino do agenteQ- learning, sendo que neste caso, nas primeiras 50000 iterações o agente encontra-se

numa fase de exploração aleatória, enquanto nas últimas 50000 iterações o agente encontra-se numa fase de exploração por si próprio.

4.3.2.2 Implementação do Algoritmo Q-learning

O algoritmoQ-learning utiliza uma tabela, denominada tabela Q, onde as linhas corres-

pondem aos diferentes estados do ambiente e as colunas correspondem às ações que o agente pode tomar nesses mesmos estados. Com isto, é necessário averiguar quais os esta- dos possíveis presentes na simulação 1, de modo a construir a tabela. Porém, apesar do ambiente ser simples, este apresenta inúmeros estados, pois existem inúmeras combina- ções de posições dos três Agentes Produto Tipo 2. Como tal, foram considerados alguns estados genéricos, presentes na sub-subsecção 4.3.2.1. A tabelaQ foi criada através da

4 . 3 . A L G O R I T M O S

Listagem 4.3: Criação da tabelaQ

1 import numpy as np

2

3 observation_space = 17

4 action_space = 2

5 q_table = np . zeros ([ observation_space , action_space ])

A implementação do algoritmo Q-learning utiliza métodos muito semelhantes ao

descritos na sub-subsecção 4.3.1.4, como por exemplo o métodoinit_train_network. Porém,

apesar dos métodosfind_max_q e train_network serem muito similares aos presentes no

algoritmoDouble-DQN, estes apresentam algumas diferenças.

No método find_max_q, utilizado no algoritmo Q-learning, o agente prevê a ação

baseando-se no maior valorQ presente num certo estado da tabela, tal como presente na

listagem I.29 (em anexo).

Por sua vez, o métodotrain_network utilizado no algoritmo Q-learning apresenta duas

diferenças comparado ao métodotrain_network utilizado no algoritmo Double-DQN. A

primeira diferença consiste na utilização de uma equação de Bellman diferente, sendo que no algoritmoDouble-DQN é utilizada a equação 3.5, enquanto no algoritmo Q-learning é

utilizada a equação 3.3. A segunda diferença encontra-se no facto de que as informações necessárias para a equação de Bellman são obtidas através da tabela.

Tal como no algoritmoDouble-DQN, o método train_network é chamado no método step da classe model, enquanto o método find_max_q é chamado no método step correspon-

dente ao agente a ser treinado. Tal como referido na sub-subsecção 4.3.1.4, os métodos usados nos cenários de testes são muito semelhantes aos utilizados durante o treino.