40 lines
1.1 KiB
Python
40 lines
1.1 KiB
Python
from typing import Callable
|
|
|
|
from utils import State
|
|
|
|
|
|
class BaseProblem:
|
|
jitable = None
|
|
|
|
def setup(self, state: State = State()):
|
|
"""initialize the state of the problem"""
|
|
return state
|
|
|
|
def evaluate(self, state: State, randkey, 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, state: State, randkey, act_func: Callable, params, *args, **kwargs):
|
|
"""
|
|
show how a genome perform in this problem
|
|
"""
|
|
raise NotImplementedError
|