为 scipy.optimize.fmin (和其他)设置收敛标准

2023-12-09

我正在开展一项优化任务,其中成本函数评估非常昂贵,并且可以容忍一些错误。我正在使用 scipy.optimize 中的一些预先打包的 scipy 方法来开始。我合作的第一个是fmin,它实现了 nelder mead 单纯形算法。

该函数有两个与收敛相关的参数 xtol 和 ftol,其中(据我了解) 指定收敛标准,其中如果 x 或 f(分别是参数集和成本)在迭代中的变化小于 xtol 或 rtol,则函数返回。

但是,由于成本函数对我来说非常昂贵,因此我还希望能够指定一个成本阈值,如果发现成本低于阈值的点,它将立即返回。

是否可以为 scipy.optimize.fmin 指定此阈值?

额外问题:我还没有详细研究许多其他方法,但看起来这些方法也不存在这个阈值选项。这是 scipy 优化方法的典型吗?尝试贡献此功能对我来说有价值吗?


对于任何可以表示为函数的标准,都可以停止迭代x。这里的想法是劫持callback方法并使用异常进行流量控制。以下是利用这个想法的两个解决方案:

from scipy.optimize import fmin_bfgs
import numpy as np
f = lambda x: np.linalg.norm(x**2)
x0 = np.random.rand(100)

解决方案一:

global result

class SmallEnoughException(Exception):
    pass

def check_conv_criteria(xk):
    global result
    if np.linalg.norm(xk) < 0.1:
        result = xk
        raise SmallEnoughException()

try:
    x, _, _ = fmin_bfgs(f, x0, callback=check_conv_criteria)
except SmallEnoughException:
    x = result

解决方案2:

class StopOptimizingException(Exception):
    pass

class CallbackCollector:

    def __init__(self, f, thresh):
        self._f  = f
        self._thresh = thresh

    def __call__(self, xk):
        if self._f(xk) < self._thresh:
            self.x_opt = xk
            raise StopOptimizingException()

try:
    cb = CallbackCollector(f, thresh=0.2)
    x, _, _ = fmin_bfgs(f, x0, callback=cb)
except StopOptimizingException:
    x = cb.x_opt
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为 scipy.optimize.fmin (和其他)设置收敛标准 的相关文章

随机推荐

  • 经过大量阅读后,我仍然无法让 Pathogen 在 Windows 下加载插件

    对于 Windows 7 64 位上的 gVim 7 3 46 完全更新 我运行 gVim 7 3 46 因为它在 Windows 上下文菜单中添加了一个可靠的 使用 Vim 编辑 实例 尽管阅读了大量文章 其中许多文章重复了其他文章 但我
  • 我想知道如果系统上的 aslr 关闭,pie 是否会执行任何操作?还是pie依赖于aslr?

    我还想知道 pie 和 aslr 在内存中的作用是什么 据我所知 aslr 随机化 libc 基地址 堆栈和堆的地址 饼图随机化 elf 基数 并使用 text data bss rodata 这是正确的还是我理解错了 PIE 需要与位置无
  • 如果需要迁移,领域不会自动删除数据库

    我们正在开发中 数据库架构更改经常发生 由于我们不再活着 因此不需要迁移 因此我将 Realm 配置如下 RealmConfiguration config new RealmConfiguration Builder context na
  • 检查 XSLT 中的字符串是否为 Null 或空

    如何检查值是否为 null 或空XSL 例如 如果categoryName是空的 我正在使用一个选择时构造 例如
  • Android 内存不足问题 [已关闭]

    很难说出这里问的是什么 这个问题模棱两可 含糊不清 不完整 过于宽泛或言辞激烈 无法以目前的形式合理回答 如需帮助澄清此问题以便重新打开 访问帮助中心 我的应用程序面临内存不足问题 经过一番搜索 我发现了这段代码 decodes image
  • MKLocalSearch 没有找到明显的结果

    我的代码实际上与以下示例相同 https github com iamamused Example MKLocalSearch git 以下是重要的部分 interface ViewController UIViewController p
  • .mdf 文件上的实体框架

    我现在正在做一些项目 我必须使用本地数据库 因此 我创建了一个新的基于服务的数据库 没有表 atm 然后我想添加实体框架支持 因为我以前从未使用过实体框架 所以我指的是该链接 http msdn microsoft com en us da
  • 忽略更新函数 Laravel 5 的唯一验证

    我有这个customer当您创建时的模型具有独特的phone num 它在创建中工作得很好 但在我的更新功能中工作得很好 这是一个基于自动填充值的表单id 如果用户只更新了address正如预期的unique验证将再次触发说The phon
  • 如何在 iOS 中同时播放两个音频文件

    我正在开发一个带有声音文件的应用程序 在此应用程序中 有一个滑块实现 根据滑块比率 将处理所有文件以设置音量 但有了这种音量效果 假设有字段 A 和 B 的声音集 就会有两组不同文件的声音组合 将有 A 文件的 75 和 B 文件的 25
  • 不返回 python 正则表达式中的整个模式

    我有以下代码 haystack aaa months 3 bbb needle re compile r months days d instances list set needle findall haystack print str
  • 查找 DOM 节点索引

    我想找到给定 DOM 节点的索引 这就像做的相反 document getElementById id of element childNodes K 我想提取的值K鉴于我已经有了对子节点和父节点的引用 我该怎么做呢 在所有版本的 Safa
  • iPhone - NSWeekCalendarUnit 和 NSWeekdayCalendarUnit 之间有什么区别?

    我试图使用这些值设置 UILocalNotification 的重复间隔 但一如既往 Apple 文档非常模糊 有什么线索吗 thanks 也许看看我刚刚发现的这个博客关于主题 AFAIK NSCalendarUnits主要用于将日期或时间
  • 使用模型描述中的标题属性创建 CheckboxFor MVC 帮助程序

    我创建了一个文本框助手来添加取自模型中字段的描述属性的标题 工具提示 public static MvcHtmlString TextBoxForWithTitle
  • EPPlus 日期单元格数据类型不起作用

    我有一些代码接受 IEnumerable 并从中生成 Excel 文档 IEnumerable 中的对象有一个日期字段 我希望将它们格式化为 Excel 中的日期 但是 当您在 Excel 中查看时 日期似乎不是 日期 数据类型 直到您双击
  • 带 GDI 的黑色高亮条

    我为我的 GUI 提供了一些不错的分割器代码 但我无法获得笔 画笔 无论我需要做适当的突出显示是什么 您知道在 Visual Studio 10 中如何拖动分割条 并且有一个漂亮的黑色透明条让您知道当您抬起鼠标按钮时分割将发生在哪里 这是一
  • WooCommerce 客户帐单地址

    我正在尝试将增值税字段添加到客户账单地址 而这可以在结账页面上使用以下代码 Company Name Required add filter woocommerce checkout fields custom override check
  • 龙卷风协程函数中的变量会发生什么情况?

    我对非阻塞 IO 的概念很陌生 并且有一些事情我无法理解 关于协程 考虑这段代码 class UserPostHandler RequestHandler gen coroutine def get self var some variab
  • 如何在用户按下按钮或图像后显示 Google Picker API 对话框?

    有 HTML 专家可以帮助我吗 我想展示Google 选择器 API 对话框用户单击按钮或图像后 我想随后在页面上显示结果 对于知道如何进行 Web 编程的开发人员来说 这应该很简单 如何使用的示例代码位于上面的链接中 十分感谢 现在我自己
  • PHP: $i = $i++ 导致服务器崩溃

    几年前 在我知道 SO 之前 这件事就发生在我身上 但我仍然很好奇 当我还在学习PHP基础知识时 我不小心输入了 i i 当我在浏览器中测试网页时 服务器崩溃了 花了很长时间才恢复 我之前输入过一些非常愚蠢的东西并创建了一堆无限循环 但出于
  • 为 scipy.optimize.fmin (和其他)设置收敛标准

    我正在开展一项优化任务 其中成本函数评估非常昂贵 并且可以容忍一些错误 我正在使用 scipy optimize 中的一些预先打包的 scipy 方法来开始 我合作的第一个是fmin 它实现了 nelder mead 单纯形算法 该函数有两