Hello, I'd like to ask a question.
The current implementation only checks minfunc (minimum objective value change) when a better solution is found (fp[i_min] < fg). This causes two issues:
If the objective value reaches a plateau (fp[i_min] == fg), the algorithm continues unnecessary iterations until maxiter.
For problems with exact global optima (e.g., f(x)=0), it fails to terminate early even when |fg - fp[i_min]| = 0 ≤ minfunc.

Optimization results after 300 iterations
=== Optimization Results ===
Optimal pIC50 value: 9.514191

Optimization results after 800 iterations
=== Optimization Results ===
Optimal pIC50 value: 9.514191
When optimizing flat regions (such as converging to the theoretical optimal value), the algorithm will run meaninglessly until "maxiter", wasting computing resources. Is there any solution to this problem?
Hello, I'd like to ask a question.

The current implementation only checks minfunc (minimum objective value change) when a better solution is found (fp[i_min] < fg). This causes two issues:
If the objective value reaches a plateau (fp[i_min] == fg), the algorithm continues unnecessary iterations until maxiter.
For problems with exact global optima (e.g., f(x)=0), it fails to terminate early even when |fg - fp[i_min]| = 0 ≤ minfunc.
Optimization results after 300 iterations
=== Optimization Results ===
Optimal pIC50 value: 9.514191
Optimization results after 800 iterations
=== Optimization Results ===
Optimal pIC50 value: 9.514191
When optimizing flat regions (such as converging to the theoretical optimal value), the algorithm will run meaninglessly until "maxiter", wasting computing resources. Is there any solution to this problem?