45 lines
1.2 KiB
Python
45 lines
1.2 KiB
Python
from typing import Callable
|
|
|
|
from config import ProblemConfig
|
|
from core.state import State
|
|
|
|
|
|
class BaseProblem:
|
|
|
|
jitable = None
|
|
|
|
def __init__(self):
|
|
pass
|
|
|
|
def setup(self, randkey, state: State = State()):
|
|
"""initialize the state of the problem"""
|
|
raise NotImplementedError
|
|
|
|
def evaluate(self, randkey, state: State, act_func: Callable, params):
|
|
"""evaluate one individual"""
|
|
raise NotImplementedError
|
|
|
|
@property
|
|
def input_shape(self):
|
|
"""
|
|
The input shape for the problem to evaluate
|
|
In RL problem, it is the observation space
|
|
In function fitting problem, it is the input shape of the function
|
|
"""
|
|
raise NotImplementedError
|
|
|
|
@property
|
|
def output_shape(self):
|
|
"""
|
|
The output shape for the problem to evaluate
|
|
In RL problem, it is the action space
|
|
In function fitting problem, it is the output shape of the function
|
|
"""
|
|
raise NotImplementedError
|
|
|
|
def show(self, randkey, state: State, act_func: Callable, params, *args, **kwargs):
|
|
"""
|
|
show how a genome perform in this problem
|
|
"""
|
|
raise NotImplementedError
|