问题标签 [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.
python - python scipy差分进化优化失败,工人不是1
我正在尝试使用scipy 差分进化算法workers
的参数。
当我把它设置为 1 时,我的脚本运行没有问题。如果我放了一些不同的东西,它会失败并出现以下回溯:
有人可以帮忙解释如何使用这个参数(特定的目标函数?其他约束?)?
还可以欣赏使用多核的简单 python 差异进化优化的示例。
python - 添加约束后 Scipy 差分进化失败
我正在尝试使用 scipy.optimize.differential_evolution 进行优化。我想为 20 个变量找到最佳权重组合,以找到计算的总分和预定排名之间的最大化 Spearman 相关性。由于总权重应约为 100%,因此我需要向 DE 添加约束。在阅读了几篇文章后,我的代码是这样的
但是,DE 只运行一次迭代并返回 999 的“成功”结果。感觉 DE 认为 999 是最佳解决方案并停止寻找更好的解决方案。
我尝试了另一种技巧,通过更改目标以同时最小化“Spearman Correlation + abs(total weights - 1)”,并且可以得到正确的答案。但是我还是想用“if-else”的方式来定义约束,直接得到spearman相关性。
python - 如果目标函数具有命名元组参数,则 scipy.optimize.differential_evolution 不能并行运行
为了使我的建模代码更整洁,我一直在使用 namedtuples 来管理模型参数。我想使用 SciPy 的差分进化并行实现来使我的模型适合数据,但我只能让它串联工作。
的文档differential_evolution
规定目标函数必须是“可腌制的”以进行并行优化。在目标函数参数中使用 namedtuples 似乎违反了这一要求。是否有不涉及完全重写我的建模代码如何处理参数的解决方法?
下面是一个简化的例子。
代码:
程序输出:
minimum - 差分进化全局最小问题
我试图获得具有线性约束的非线性函数的全局最小值。我分享你的代码:
我不知道为什么,但是当我运行时出现以下内容:
“如果self._binomial中的策略:TypeError:不可散列的类型:'list'
有人遇到过同样的错误吗?这是我第一次尝试解决优化问题,所以我需要一点帮助。欢迎任何建议!非常感谢 !
python - scipy.optimize different_evolution 似乎忽略了人口规模限制
我正在使用以下代码进行实验并开始学习如何使用 DE 优化更复杂的问题。我需要可以使用整数的优化器。
设置popsize时出现问题。我得到的人口比预期的要多,如果我将它设置为 0,它会继续为第一个人口获取 10 个元素,然后为其他人口获取 5 个元素,直到达到最大值。
这是我用上面的代码得到的输出的一个例子
我真的不明白我做错了什么,至少我预计 popsize=0 会出错。此外,是否有任何其他隐藏参数来设置必须编辑的初始种群大小?
我还是个初学者,几周前我开始使用 python,所以我真的很感谢你的简单解释。
非常感谢所有花时间回答我的人。
史蒂夫
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()
以防万一?我将衷心感谢您的帮助。
提前致谢
python - 在 Python 中预测差分进化的并行性能
我是一名工程专业的学生,在遗传算法方面实习。最近,我一直在对差异进化进行大量研究。在我实习期间,我们决定直接使用scipy.optimize.differential_evolution()来测试差分进化。
在文档中,提到并行是可能的,但我们不确定它是否真的会产生很大的不同。这就是为什么我们决定寻找是否有一种方法可以预测性能的改进。我发现使用阿姆达尔定律可以实现这样的事情。我的问题是,为了使用阿姆达尔定律,我必须知道“程序的一部分可以并行化”。有没有人可以帮我找到这部分?或者可能以另一种方式预测改进?
先感谢您!
python - scipy.optimize.Differential_evolution 不会生成可迭代的
其中 invSortino 采用长度为 x ad 的迭代返回一个负标量。
界限由
或者
边界的长度是正确的,(上面的方法2)
但可迭代生成的长度为 0
结果是
导致错误
evolutionary-algorithm - jDE(自适应差分进化)
在 jDE 中,每个人都有自己的 F 和 CR 值。如何以编程方式将这些值分配给每个人。如何更新这些值。
伪代码会有所帮助。
python - Scipy 差分进化初始解输入
有谁知道如何将初始解或初始解矩阵输入到 Scipy 库中的差分进化函数中?
该文档没有解释它是否可能,但我知道最初的解决方案实施并不罕见。Scipy 使用如此广泛,我希望它具有这种类型的功能。