微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

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

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

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

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

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

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

提前致谢。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。