我正在尝试使用遗传算法解决优化问题。成本函数评估涉及使用 scipy.sove_ivp 中的“LSODA”求解器求解初始值微分方程。输入参数空间非常大,对于某些输入参数,基础微分方程变得非常僵硬,然后 scipy.solve_ivp() 会发出警告。现在,我想捕捉 scipy 集成器发出警告并人为增加我的成本函数的输出以使其不会传播到下一代的情况。知道如何仅在收到警告时设置标志吗?任何帮助将不胜感激。谢谢。
import warnings
def fxn():
warnings.warn("deprecated", DeprecationWarning)
\################
def cost_function():
/\* Cost \<- solving the differential equation using scipy \*/
with warnings.catch_warnings():
warnings.simplefilter("ignore")
fxn()
try:
Cost1 = Cost;
except DeprecationWarning:
Cost1 = 1e11;
print('#cost = ',Cost1);