Code for my PhD project. It has the goal of automated construction of hydrological models with the Catchment Modeling Framework using genetic algorithms.
ACME should, at leat in theory, be compatible with other modeling frameworks. It would be nice if someone could try to implement with other frameworks lice FUSE.
When starting a model with the full genome present, it does not calculate correctly and hangs somewhen in the first year. Strangely, a model build by hand with the same layout (its the same when looked at with cmf.describe), does not show this behaviour. Whats the problem?
Tobias thinks it might be possible to stop spotpy from giving you an output by simply not giving it a dbname and dbformat.
This would be quite handy so nothing is written to the harddrive
The construction of the genotypes is not very self explanatory and therefore needs a lot of documentation. To not overfill the source code this should be outsourced to markdown files (one for each model generator genotype).
When creating the parents it should be somehow guaranteed that more complex models are created roughly equal as simple models. This might be accomplished by making the chance of the addition of more layers and connections higher, in regard how many storages and connections the model already has. This helps compensate for the additional tests that are used.
DREAM uses this weird objective function, can Spotpy still be used to calculate other objective functions in the progress? For example Klingt Gupta, so in the End one can better compare stuff with ACME?
The use of the template is way easier, if only those genes are forwarded to it, which really are expressed. For example a beta parameter can only be expressed if the matching connection exists. Or a connection can only exist when the storages exists which it is meant to connect.
This could probably done even before translating the model to code and thus save computational time
For this one would have to write a function that checks the status of the variables for the existens of the storages and the fluxes.
E.g.
If first_storage not present:
return ModelNotClosedError
if first storage has no connections
return ModelNotClosedError