如何在 1 维和 n 维空间中有效地选择模拟退火的邻居

2024-04-09

我想使用模拟退火在某个预定义的区间内找到单变量多项式函数的局部最小值。我还想尝试找到二次函数的全局最小值。

像这样的无导数算法并不是解决该问题的最佳方法,因此这仅用于研究目的。

虽然算法本身非常简单,但我不确定如何在单维或 n 维空间中有效地选择邻居。

假设我正在寻找函数的局部最小值:2*​x^​3+​x+​1 在区间 [-0.5, 30] 上,并假设区间减少到每个数字的十分之一,例如 {1.1, 1.2 ,1.3,...,29.9,30}。

我想要实现的是随机游走和从起点到能量较低的点的收敛速度之间的平衡。

如果我每次只是从给定的间隔中选择随机数,那么就没有随机游走,算法可能会绕圈。相反,如果通过简单地以等概率加或减 0.1 来选择下一个点,那么算法可能会变成基于起始点的穷举搜索。

我应该如何有效地平衡单维和n维空间中的模拟退火邻居搜索?


所以你试图找到一个“随机”靠近另一个n维点P的n维点P';例如,在距离 T 处。(由于这是模拟退火,我假设您偶尔会递减 T 一次)。

这可以工作:

double[] displacement(double t, int dimension, Random r) {
      double[] d = new double[dimension];
      for (int i=0; i<dimension; i++) d[i] = r.nextGaussian()*t;
      return d;
}

输出随机分布在所有方向上并以原点为中心(请注意r.nextDouble()倾向于 45° 角并以 0.5 为中心)。您可以通过增加来改变位移t如所须; 95% 的结果将在原点的 2*t 范围内。

EDIT:

要在给定点附近生成位移点,您可以将其修改为

double[] displaced(double t, double[] p, Random r) {
      double[] d = new double[p.length];
      for (int i=0; i<p.length; i++) d[i] = p[i] + r.nextGaussian()*t;
      return d;
}

你应该使用相同的r对于所有调用(因为如果您创建一个新的Random()对于每一个,你都会一遍又一遍地得到相同的位移)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 1 维和 n 维空间中有效地选择模拟退火的邻居 的相关文章

  • 从 OMElement 对象获取 InputStream/io.Reader

    我有一个OMElement对象 从中我想得到一个InputStream或读者对象 我想要的是流式传输xml来自OMElement我有 没有加载到内存中 我只能得到XMLStreamReader对此表示反对 但我找不到办法得到InputStr
  • 基于时间的算法评分

    我们希望创建一种评分算法 在更短的时间内获得更高的分数 在更长的时间内获得更少的分数 需要注意的是 没有实际范围 因此时间范围可以从 100 毫秒到长达 10 分钟或更长时间 点范围为 0 到 50 谢谢你的帮助 你可以简单地把它变成一个线
  • Java Swing:清除JList而不触发监听器

    我的情况如下 我有一个 JList 只要在列表中进行选择 它就会触发搜索 使用 ListSelectionListener 我正在尝试使用以下命令重置列表上的选择list clearSelection 这样做的问题是使用clearSelec
  • .java 和 .scala 类之间是否可能存在循环依赖?

    假设我在 java 文件中定义了类 A 在 scala 文件中定义了类 B A 类使用 B 类 B 类使用 A 类 如果我使用 java 编译器 则会出现编译错误 因为 B 类尚未编译 如果我使用scala编译器A类将找不到 有没有可以同时
  • Spring webflow 应用程序:HTTP 302 暂时移动

    我的 java 应用程序中的每个请求都会生成另外 2 个带有 HTTP 302 错误的请求 例如 如果请求查看名为板 html 这个请求是从首页 html 我收到按以下顺序生成的 3 个请求 POST home html 302 Moved
  • Java/JAXB:将具有相同名称但不同属性值的 XML 元素解组到不同的类成员

    我正在尝试根据其属性之一将具有多个 Fields 元素的 XML 解析为不同的类成员 这是 XML
  • 如何在Spring的applicationContext.xml中指定默认范围来请求范围?

    我想让所有 bean 请求默认作用域 但是 Spring 文档说默认作用域是 Singleton 第 3 4 1 和 3 4 2 节http static springsource org spring docs 2 5 x referen
  • JUnit Eclipse 显示 System.out.print() 的

    我正在使用 JUnit 3 和 Eclipse 3 4 当我运行 JUnit 测试用例时 一切正常并且测试完美完成 唯一的事情是我想查看我正在运行的类的输出 所有类都具有一些输出值的基本 System out print 因此 当我运行测试
  • 如何从二叉搜索树中均匀随机地返回节点?

    给定一个 BST 可能平衡也可能不平衡 如何能够均匀地随机返回 任何 节点 一个限制是您不能使用外部索引数据结构 您必须以每个节点都有平等被访问的机会的方式遍历树 这个问题让我困惑了好一阵子 如果我们确实可以使用外部哈希表 指针 我们可以对
  • 如何在 OpenAPI 3.0 中定义字节数组

    我正在将 API 从 Swagger 2 0 迁移到 OpenAPI 3 0 在 DTO 中 我有一个指定为字节数组的字段 Swagger 对 DTO 的定义 Job type object properties body type str
  • 如何模拟一个方面

    我目前正在使用aspectj 开发一些监控工具 因为这个工具应该是技术独立的 尽可能 所以我没有使用 Spring 进行注入 但我希望我的方面能够经过单元测试 方面示例 Aspect public class ClassLoadAspect
  • JSP 标签+ scriptlet。如何启用脚本?

    我有一个使用标签模板的页面 我的 web xml 非常基本 我只是想在页面中运行一些代码 不 我对标签或其他替代品不感兴趣 我想使用不好的做法 scriptlet 哈哈 到目前为止 我收到了 HTTP ERROR 500 错误 Script
  • 如何使用 Java 原生接口从 Java 调用 Go 函数?

    可以通过以下方式调用 C 方法JNA https en wikipedia org wiki Java Native AccessJava 中的接口 如何使用 Go 实现相同的功能 package main import fmt impor
  • 在 Mac 上使用 JRE 打开 jar 文件

    我有一个 jar 文件 旨在通过命令行运行 我不打算在运行应用程序的机器上进行任何java开发 我的思考过程是 因此我应该只需要JRE而不是JDK 此外 JDK 大约是 JRE 的 4 倍 我不想下载它 在 Mac 上安装 JRE 时 它不
  • Java G1 GC 处理引用对象运行缓慢

    我已经在 J ava 上运行了计数器 它24小时工作 每秒点击通过100次左右 白天 GC 处理时间从 20 60 毫秒缓慢上升到 10000 60000 毫秒 然后下降到 20 60 毫秒 这种模式不时地重复 从 GC 日志中我发现 GC
  • 通用 JSF 实体转换器[重复]

    这个问题在这里已经有答案了 我正在编写我的第一个 Java EE 6 Web 应用程序作为学习练习 我没有使用框架 只是使用 JPA 2 0 EJB 3 1 和 JSF 2 0 我有一个自定义转换器 用于将存储在 SelectOne 组件中
  • 哪种 Java DOM 包装器是最好或最受欢迎的? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • RMI 服务器:rmiregistry 或 LocateRegistry.createRegistry

    对于服务器端的RMI 我们需要启动吗rmiregistry程序 或者只是调用LocateRegistry createRegistry 如果两者都可以的话 各有什么优点和缺点 他们是同一件事 rmiregistry是一个单独的程序 您可以从
  • Java的hashCode可以为不同的字符串产生相同的值吗?

    使用java的哈希码函数是否可以为不同的字符串提供相同的哈希码 或者如果可能的话 其可能性的 是多少 Java 哈希码是 32 位 它散列的可能字符串的数量是无限的 所以是的 会发生冲突 百分比是没有意义的 项目 字符串 的数量是无限的 而
  • 如何使用 Spring AOP 建议静态方法?

    在执行类的静态方法之前和之后需要完成一些日志记录 我尝试使用 Spring AOP 来实现这一点 但它不起作用 而对于正常方法来说它起作用 请帮助我理解如何实现这一点 如果可以使用注释来完成 那就太好了 也许您应该在使用 Spring AO

随机推荐

  • 将附加模板添加到右侧边栏 magento

    我只是尝试添加额外的模板文件以在右侧栏中包含内容块 但失败了 下面是我的努力 添加到 local xml 文件中
  • 如何将文本附加到android中的edittext中?

    在我的应用程序中 我想为用户提供从列表中选择文本并附加到编辑文本中的方法 但是我找不到任何有关如何执行此操作的文档 任何帮助都会有很大帮助 谢谢 只需使用 EditText 的append 即可 参数将附加在可编辑内容的末尾
  • 如何在 anaconda python 中导入 OpenGL?

    我在 anaconda python 上使用 ipython 笔记本 但我不知道如何安装或导入 opengl 谁能帮我解决这个问题吗 我在 Linux xubuntu 上使用 anaconda 抱歉英语不好 正如 David 所指出的 Vi
  • 用javascript求解线性方程组[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 使用 JavaScript 求解线性方程组的最佳方法是什么 我想找到向量 r 的解决方案 M r b 其中 M 是矩阵 b 是向量 我知道
  • SMS 的 .NET 代码

    HI all 我正在编写一些代码来通过 Zeep Mobile 发送 接收短信 http zeepmobile com developers http zeepmobile com developers 我查看了他们的谷歌群组 甚至联系了他
  • 如何更改另一个程序窗口的按钮文本

    我的任务是更改窗口中按钮的文本 我没有并且cannot访问源代码 因为它由我们付费订阅的公司拥有 如何在没有源代码的情况下更改按钮文本 我正在尝试使用 pInvoke 但遇到问题 窗口标题会根据您的合作对象而变化 订单输入表 姓氏 名字 因
  • JSON 反序列化抛出异常 - 无法从 START_OBJECT 令牌中反序列化 java.util.ArrayList 的实例

    以下是我的 JSON 响应 导致 com fasterxml jackson databind JsonMappingException 无法从 START OBJECT 令牌反序列化 java util ArrayList 的实例 在 来
  • Java正则表达式 - 在空格上分割字符串 - 忽略引号中的空格和转义引号[重复]

    这个问题在这里已经有答案了 我正在寻找正则表达式来在Java中执行以下操作 String originalString String splitString originalString spilt regex 一些测试用例 Origina
  • 单击标签未打开选择

    我一直以为 点击label将或多或少地 触发 相应表单元素的点击 然而 这似乎不起作用select 选择字段上的鼠标按下 动画有效 但选择未打开 我试过这个
  • 使用 CSS,P 标签在 Firefox 中的显示位置低于在 Internet Explorer 中的显示位置

    我制作了一个在 Internet Explorer 上看起来很完美的网站 但是当用 Firefox 加载时 某些元素不对齐 例如 出现在坐标 20 20 上的 p 标签在 Firefox 中会出现在坐标 20 40 上 出于某种原因 Fir
  • 为什么要实现finalize()?

    我已经阅读了很多 Java 新手问题finalize 令人困惑的是 没有人真正明确表示 Finalize 是一种不可靠的清理资源的方法 我看到有人评论说他们用它来清理连接 这真的很可怕 因为接近保证连接关闭的唯一方法是最后实现 try ca
  • IntelliJ 调试:暂停整个虚拟机,然后进入单线程

    我正在调试一个具有大量线程的应用程序 我的断点设置为暂停整个虚拟机 当线程遇到其中一个断点时 我想使用 Step Over 但这似乎会恢复整个虚拟机 直到该步骤完成 如果我可以只单步执行到达断点的单个线程 那确实会有帮助 在 Intelli
  • 如何获取托管对象的引用计数?

    NET 分析器可以显示托管对象的引用计数 他们如何计算它们 他们使用非托管 API 来提供对探查器的访问 ICorProfiler回调 http msdn microsoft com en us library ms230818 aspx
  • 如何清除宏中的文本框?

    我有一个用于组合 onclick 事件的宏 当用户单击组合框并进行选择时 如何以相同的形式清除文本框 我想在同一个宏而不是过程中进行清除 不清楚宏是什么意思 您是指 Access 中的新宏语言 还是 VBA 代码 在 VBA 代码中 您可以
  • Typescript 类似数组的类型,每个项目的键之间具有相同的泛型类型

    我想编写一个接受这样的参数的打字稿函数 myFunc initialValue 6 number finalValue 8 number initialValue hello string finalValue goodbye string
  • 在 mac os x 上将 echo 或寄存器内容发送到 pbcopy / mac 剪贴板

    我在 vimscript 中有一个自定义函数 它创建一个字符串 然后将其回显到底部控制台 目前 我使用 cmd c 复制并粘贴该输出 将其复制到 mac os x 剪贴板 我想通过将 echo 通过管道传输到 pbcopy 来缩短此工作流程
  • 如何计算字符串的字符数?

    我是 Scala 的新手 我想计算一个字符在字符串中出现的次数 我该怎么做呢 我开始写这样的东西 但我发现语法很难掌握 有什么帮助吗 var s hello var list s toList distinct list foreach p
  • iOS - ViewController 在 ARC 下弹出时未释放

    I have aUITabBarController作为我的主要基础视图控制器 在第一个选项卡下 我有一个UINavigationController这当然有一个rootViewController与它相关联 称之为vcA vcA有一个触发
  • 在更改路线或检测到新构建时刷新部署在 Firebase 托管上的构建

    问题 我们是否可以在更改路线 或聚焦选项卡 并重新加载页面时检查部署在 Firebase 托管上的新版本 以便用户可以查看新功能 目前 用户必须刷新站点才能查看构建中部署的新功能 以下是我的项目中当前安装的依赖项 dependencies
  • 如何在 1 维和 n 维空间中有效地选择模拟退火的邻居

    我想使用模拟退火在某个预定义的区间内找到单变量多项式函数的局部最小值 我还想尝试找到二次函数的全局最小值 像这样的无导数算法并不是解决该问题的最佳方法 因此这仅用于研究目的 虽然算法本身非常简单 但我不确定如何在单维或 n 维空间中有效地选