scipy 中的 Basinhopping - 仅对某些维度使用假零导数/雅可比,对其他维度使用非零

问题描述

我正在使用 scipy.optimize.basinhopping 运行一个优化问题,它有大约 7 个维度。对于局部优化阶段,某些维度能否在雅可比矩阵中返回假零梯度?

背景: 其中五个是离散的(电感器和电容器),我已经说过大约 5 个候选值,每个值都是库存中的实用值。两个变量(天线长度和偏移量)是连续变量。

能量函数一个复杂的叠加,利用两个数值模拟,没有封闭形式的公式可用。 (NEC2 使用矩量法;在 LT-Spice 中,我需要为我的设计计算时域瞬态)。这两个数值模拟器使用 maxima 作为线性求解器连接在一起。所以,在我的能量函数中,我将这些多个程序分叉为几个外部子进程——数据的编组/分叉/解析的成本是,假设,每次迭代大约为 O(1) 秒。

带走:大约有 3000 种 5x 离散维度的组合,因此运行时间仅为 O(1) 小时。我不介意蛮力。但是,对于剩余的 2x 连续值维度,我想做梯度下降。

问题:除了我总是盲目地为雅可比矩阵中的 5 个离散维度返回零梯度之外,我可以使用雅可比梯度运行盆地跳跃以从局部优化器中受益吗?

在这种情况下,内部局部优化器会做什么?它只会探索具有非零雅可比行列式的两个连续值维度吗?或者它会被 5 个离散维度的零梯度混淆,因为这是一个善意的谎言?

提前致谢。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)