Source code for smt_optim.benchmarks.registry
import inspect
from smt_optim.benchmarks.base import BenchmarkProblem
from .misc import original
from .misc import gano
from .misc import avt
from .misc import modified_avt
from .misc import edge_cases
from .sfu import many_local_minima
from .avt311 import avt311
available = {}
def _register_from_module(module):
for name, obj in inspect.getmembers(module, inspect.isclass):
if issubclass(obj, BenchmarkProblem) and obj is not BenchmarkProblem:
available[obj.__name__] = obj()
_register_from_module(original)
_register_from_module(gano)
_register_from_module(avt)
_register_from_module(modified_avt)
_register_from_module(edge_cases)
_register_from_module(many_local_minima)
_register_from_module(avt311)
# def list_problems(**criteria):
#
# results = []
#
# for prob in available.values():
# if all(getattr(prob, k) == v for k, v in criteria.items()):
# results.append(prob)
#
# return results
[docs]
def list_problems(n: list[int] = None, tags: list[str] = None) -> list[BenchmarkProblem]:
results = []
for prob in available.values():
try:
if n is not None:
if prob.num_dim < n[0] or prob.num_dim > n[1]:
continue
if tags is not None:
if not set(tags).issubset(set(prob.tags)):
continue
results.append(prob)
except:
continue
return results
[docs]
def get_problem(name):
return available.get(name)