Abstract interface for surrogate models
Description
Define an abstract interface for surrogate models usable in System.make_surrogate
, so that users can define their own models.
Main changes
- Make
SurrogateModel
a pure interface, with abstract methodstrain
andpredict
. - Define existing models as concrete implementations of
SurrogateModel
. - Implement a proxy pattern in
SystemSurrogate
, to encapsulate the trained/untrained logic previously coded inSystemSurrogate
.
Side changes
- Move module
surrogate_models
fromcosapp.systems
tocosapp.utils
. - Refactoring pass in models and test files.