问题标签 [differential-evolution]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2251 浏览

python - python scipy差分进化优化失败,工人不是1

我正在尝试使用scipy 差分进化算法workers的参数。

当我把它设置为 1 时,我的脚本运行没有问题。如果我放了一些不同的东西,它会失败并出现以下回溯:

有人可以帮忙解释如何使用这个参数(特定的目标函数?其他约束?)?

还可以欣赏使用多核的简单 python 差异进化优化的示例。

0 投票
0 回答
199 浏览

python - 添加约束后 Scipy 差分进化失败

我正在尝试使用 scipy.optimize.differential_evolution 进行优化。我想为 20 个变量找到最佳权重组合,以找到计算的总分和预定排名之间的最大化 Spearman 相关性。由于总权重应约为 100%,因此我需要向 DE 添加约束。在阅读了几篇文章后,我的代码是这样的

但是,DE 只运行一次迭代并返回 999 的“成功”结果。感觉 DE 认为 999 是最佳解决方案并停止寻找更好的解决方案。

我尝试了另一种技巧,通过更改目标以同时最小化“Spearman Correlation + abs(total weights - 1)”,并且可以得到正确的答案。但是我还是想用“if-else”的方式来定义约束,直接得到spearman相关性。

0 投票
1 回答
709 浏览

python - 如果目标函数具有命名元组参数,则 scipy.optimize.differential_evolution 不能并行运行

为了使我的建模代码更整洁,我一直在使用 namedtuples 来管理模型参数。我想使用 SciPy 的差分进化并行实现来使我的模型适合数据,但我只能让它串联工作。

的文档differential_evolution规定目标函数必须是“可腌制的”以进行并行优化。在目标函数参数中使用 namedtuples 似乎违反了这一要求。是否有不涉及完全重写我的建模代码如何处理参数的解决方法?

下面是一个简化的例子。

代码:

程序输出:

0 投票
1 回答
24 浏览

minimum - 差分进化全局最小问题

我试图获得具有线性约束的非线性函数的全局最小值。我分享你的代码:

我不知道为什么,但是当我运行时出现以下内容:

“如果self._binomial中的策略:TypeError:不可散列的类型:'list'

有人遇到过同样的错误吗?这是我第一次尝试解决优化问题,所以我需要一点帮助。欢迎任何建议!非常感谢 !

0 投票
2 回答
709 浏览

python - scipy.optimize different_evolution 似乎忽略了人口规模限制

我正在使用以下代码进行实验并开始学​​习如何使用 DE 优化更复杂的问题。我需要可以使用整数的优化器。

设置popsize时出现问题。我得到的人口比预期的要多,如果我将它设置为 0,它会继续为第一个人口获取 10 个元素,然后为其他人口获取 5 个元素,直到达到最大值。

这是我用上面的代码得到的输出的一个例子

我真的不明白我做错了什么,至少我预计 popsize=0 会出错。此外,是否有任何其他隐藏参数来设置必须编辑的初始种群大小?

我还是个初学者,几周前我开始使用 python,所以我真的很感谢你的简单解释。

非常感谢所有花时间回答我的人。

史蒂夫

0 投票
1 回答
800 浏览

python - 在时间阈值后停止 Scipy different_evolution()

我的问题已经在这里得到了部分回答。我只需要将答案扩展到另一个 Scipy 函数。(Windows 10 上的 Scipy 1.4.0、Python 3.7)

参考@ali_m给出的答案,我尝试将相同的想法应用于differential_evolution()也具有callback参数的 Scipy 函数。

我想确保我的 Scipydifferential_evolution()函数在一定时间限制后停止运行。在本例中,我选择了具有 40 个输入参数和 0.3 秒阈值的 Rosenbrock 函数来突出显示发生的情况。

结果我没有收到任何错误,但似乎 Scipy 中使用的相同逻辑在minimize()这里不起作用。更具体地说,当我运行程序时,即使在引发警告之后,程序也会默默地继续计算所有必要的迭代,直到优化问题收敛。

有谁知道为什么在这种情况下它不像minimize()以防万一?我将衷心感谢您的帮助。

提前致谢

0 投票
1 回答
83 浏览

python - 在 Python 中预测差分进化的并行性能

我是一名工程专业的学生,​​在遗传算法方面实习。最近,我一直在对差异进化进行大量研究。在我实习期间,我们决定直接使用scipy.optimize.differential_evolution()来测试差分进化。

在文档中,提到并行是可能的,但我们不确定它是否真的会产生很大的不同。这就是为什么我们决定寻找是否有一种方法可以预测性能的改进。我发现使用阿姆达尔定律可以实现这样的事情。我的问题是,为了使用阿姆达尔定律,我必须知道“程序的一部分可以并行化”。有没有人可以帮我找到这部分?或者可能以另一种方式预测改进?

先感谢您!

0 投票
0 回答
141 浏览

python - scipy.optimize.Differential_evolution 不会生成可迭代的

其中 invSortino 采用长度为 x ad 的迭代返回一个负标量。

界限由

或者

边界的长度是正确的,(上面的方法2)

但可迭代生成的长度为 0

结果是

导致错误

0 投票
1 回答
75 浏览

evolutionary-algorithm - jDE(自适应差分进化)

在 jDE 中,每个人都有自己的 F 和 CR 值。如何以编程方式将这些值分配给每个人。如何更新这些值。

伪代码会有所帮助。

0 投票
1 回答
135 浏览

python - Scipy 差分进化初始解输入

有谁知道如何将初始解或初始解矩阵输入到 Scipy 库中的差分进化函数中?

该文档没有解释它是否可能,但我知道最初的解决方案实施并不罕见。Scipy 使用如此广泛,我希望它具有这种类型的功能。