Howto RL-009: Wrap native MLPro environment class to PettingZoo environment

Prerequisites

Please install the following packages to run this examples properly:

Executable code

## -------------------------------------------------------------------------------------------------
## -- Project : MLPro - A Synoptic Framework for Standardized Machine Learning Tasks
## -- Package : mlpro
## -- Module  : howto_rl_009_wrap_mlpro_environment_to_pettingzoo_environment.py
## -------------------------------------------------------------------------------------------------
## -- History :
## -- yyyy-mm-dd  Ver.      Auth.    Description
## -- 2021-10-02  0.0.0     SY       Creation
## -- 2021-10-02  1.0.0     SY       Released first version
## -- 2021-10-04  1.0.1     DA       Minor fix
## -- 2021-11-15  1.0.2     DA       Refactoring
## -- 2021-12-03  1.0.3     DA       Refactoring
## -------------------------------------------------------------------------------------------------

"""
Ver. 1.0.3 (2021-12-03)

This module shows how to wrap mlpro's Environment class to petting zoo compatible.
"""


from mlpro.bf.math import *
from mlpro.rl.models import *
from mlpro.wrappers.pettingzoo import WrEnvMLPro2PZoo
from mlpro.rl.pool.envs.bglp import BGLP
import random

from pettingzoo.test import api_test

mlpro_env   = BGLP(p_logging=Mode.C_LOG_ALL)
env         = WrEnvMLPro2PZoo(mlpro_env, p_num_agents=5, p_state_space=None, p_action_space=None).pzoo_env
try:
    api_test(env, num_cycles=10, verbose_progress=False)
    print("test completed")
    assert True
except:
    print("test failed")  
    assert False
    

Results

The Bulk Good Laboratory Plant (BGLP) environment will be wrapped to a PettingZoo compliant environment.

YYYY-MM-DD  HH:MM:SS.SSSSSS  I  Environment BGLP: Instantiated
YYYY-MM-DD  HH:MM:SS.SSSSSS  I  Environment BGLP: Instantiated
YYYY-MM-DD  HH:MM:SS.SSSSSS  I  Environment BGLP: Operation mode set to 0
YYYY-MM-DD  HH:MM:SS.SSSSSS  I  Environment BGLP: Reset
Starting API test
...
Passed API test
test completed

There are several lines of action processing logs due to the API tests. When there is no detected failure, the environment is successfully wrapped.