一、基础环境类
必须有step方法,传参状态和动作 observation,action,返回新状态、新状态的奖励值和动作完成标签,observation_,reward,done。
from abc import ABC,abstractclassmethod
class Enviroment(ABC):
@abstractclassmethod
def setp(self,observation,action):
# return observation_,reward,done
...
基础类里面的...是py 合法语法,应该完全拷贝。
二、基础人工智能类
基础人工智能类包含一个动作选择方法,传参状态值,返回选择动作。
class ArtificialIntelligence(ABC):
@abstractclassmethod
def choose_action(self,observation):
# return action
...
三、用法
继承基础环境和人工智能类,重写step和choose_action方法,如果没有复写这两个方法,会报错。
class Env(Enviroment):
...
class Ai(ArtificialIntelligence):
...
env = Env()
ai = Ai()
报错:
TypeError: Can't instantiate abstract class Env with abstract method setp
这是因为基类ABCMeta的@abstractclassmethod装饰器在起作用。