thouska / spotpy

A Statistical Parameter Optimization Tool
https://spotpy.readthedocs.io/en/latest/
MIT License
247 stars 149 forks source link

Why a numpy array objectivefunction value is not compared when calling self.status in _algorithm/postprocessing.py module #319

Open OuyangWenyu opened 4 months ago

OuyangWenyu commented 4 months ago

https://github.com/thouska/spotpy/blame/7e5e3f4f268e45e150ba8407dd6747c2f85c4cc0/src/spotpy/algorithms/_algorithm.py#L87

When I use a new loss function which return a numpy array, I found self.compare was ignored in this part:

def __call__(self, objectivefunction, params, block_print=False): self.rep += 1 if type(objectivefunction) == type([]): # TODO: change to iterable self.compare(objectivefunction[0], params) elif type(objectivefunction) == type(np.array([])): pass else: self.compare(objectivefunction, params)

Then in the console the following words will be printed:

"1 of 100, minimal objective function=1e+308, time remaining: 02:01:04"

So I am wondering why numpy array is not allowed?

I am looking forward your reply. Thanks!