【发布时间】:2025-12-22 06:00:11
【问题描述】:
我想使用模拟退火。我的目标函数存在多个变量,其中一些变量只有几个可能的选项。我在这里的 Stack 上看到了同样的问题: How to use simulated annealing for a function with discrete paremeters?,但没有答案,只能参考:How to put mathematical constraints with GenSA function in R。
我不明白如何将第二个链接中的建议应用于我的情况(但我认为可以在那里找到答案)。
例如:
v <- c(50, 50, 25, 25)
lower <- c(0,0,0,20)
upper <- c(100,100,50,40)
out <- GenSA(v, lower = lower, upper = upper, fn = efficientFunction)
假设第四个参数 v[4] 只能在 {20,25,30,35,40} 中。他们建议使用拉格朗日乘数,因此,我想的是:lambda * ceil(v[4] / 5)。这是一个好主意吗 ?
但是我能做什么呢?变量的样本空间没有很好的模式,例如第三个参数 v[3],只能在 {0,21,33,89,100} 中。我不明白为什么拉格朗日乘数可以在这种情况下提供帮助。我是否需要使参数的形式不同于它们遵循某种模式,还是有其他选择?
如果拉格朗日乘数是唯一的选择,我将在我的目标中得到 8 个这些公式。在我看来,还有另一种选择,但我不知道如何!
提前致以诚挚的问候和感谢, 罗斯
【问题讨论】:
标签: r discrete-mathematics simulated-annealing