Os métodos Policy Search (PS) vem sendo utilizados nos últimos anos para se aprender, automaticamente, algoritmos de otimização, obtendo resultados animadores. Nesse repositório, disponibilizamos os códigos utilizados para a comparação de 4 algoritmos dessa família de métodos (REINFORCE, SAC, TD3 e PPO) para resolver 8 problemas de otimização global, aprendendo diferentes algoritmos de otimização de ordem zero.
Esse repositório contém os códigos utilizados pelo artigo Zeroth Order Policy Search Methods for Global Optimization Problems: An Experimental Study, submetido ao ENIAC 2021. Encorajamos ao leitor realizar testes com os códigos e agentes disponibilizados.
.
├── imgs
│
├── policies
| ├── PPO
| ├── REINFORCE
| ├── SAC
| └── TD3
|
└── src
├── environment
├── evaluation
├── functions
└── training
- A pasta
imgs/
contém as imagens utilizadas nesse documento; - A pasta
policies/
contém as políticas aprendidas pelos agentes, que representam os algoritmos de otimização aprendidos; - A pasta
src/
contém os códigos utilizados para o treinamento dos agentes (src/training
), avaliação dos agentes (src/evaluation
), funções de benchmark (src/functions
) e o ambiente (src/environment
).
A implementação dos códigos é feita em Python 3.8
com o TensorFlow 2.5.0
e TF-Agents 0.8
. Para realizar executar os códigos, faz-se necessário clonar o repositório e instalar as dependências necessárias.
Primeiro, realize o clone do repositório
$ git clone https://github.com/rl-opt/rlopt
$ cd rlopt
Então, instale as dependências usando o pip
(é recomendado utilizar um ambiente virtual do python)
$ pip install -r requirements.txt
Os problemas de otimização escolhidos consistem em minimizar 8 funções matemáticas (F1—F8):
Essas funções são conhecidas pela literatura ([Laguna and Martí 2005][Molga and Smutnicki 2005]), sendo parte, inclusive, da IEEE WCCI2020 Competition on Evolutionary Multi-task Optimization.
A implementação das funções se encontra em src/functions/
, os agentes (representados por suas policies) em policies
e os códigos utilizados para o treinamento em src/training
.
Abaixo, estão os gráficos de convergência dos algoritmos de otimização aprendidos para as funções consideradas (d=30). Os algoritmos aprendidos (policies) se encontram em policies/
. Os resultados são apresentados em termos da média de 100 execuções distintas. Utilizamos os algoritmos Gradient Descent (GD) e Nesterov’s Accelerated Gradient (NAG) como baselines.
F1:
F2:
F3:
F4:
F5:
F6:
F7:
F8:
Abaixo, estão as tabelas comparando os diferentes algoritmos de otimização aprendidos para as funções com diferentes dimensões (d=5, d=10 e d=30). Os agentes foram treinados por 500 (d=5), 1000 (d=10) e 2000 (d=30) episódios. Os valores apresentados representam a média da solução final obtida pelos agentes em 100 execuções distintas.
O tempo médio para o treinamento dos agentes foi cerca de:
- 2h 45min para 2000 episódios e d = 30;
- 1h 45min para 1000 episódios e d = 10;
- 45min para 500 episódios e d = 5.