问题标签 [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 投票
4 回答
3406 浏览

python - python中的并行/多线程差分进化

我正在尝试对生化过程进行建模,并将我的问题构建为一个优化问题,我使用 differential_evolutionscipy 解决了这个问题。
到目前为止,一切都很好,我对使用 15-19 个参数的简化模型的实现感到非常满意。
我扩展了模型,现在有 32 个参数,花费的时间太长了。并非完全出乎意料,但仍然是一个问题,因此是这个问题。

我已经看到: - R并行差分进化
的几乎相同的问题 - 以及关于该主题 的 github 问题https://github.com/scipy/scipy/issues/4864

但它想留在 python 中(模型在 python 管道中),尽管已经提出了一些选项,但拉取请求还没有导致并正式接受的解决方案。

此外,我无法并行化要优化的函数内的代码,因为这是一系列顺序计算,每个计算都需要上一步的结果。理想的选择是有一些东西可以并行评估一些个体并将它们返回给总体。

总结:
- scipy 中是否有任何选项允许我愚蠢地忽略的差分进化并行化?(理想的解决方案)
- 是否有关于 scipy 中的替代算法的建议,该算法要么(方式)串行速度更快,要么可以并行化?
- 有没有其他提供并行差分进化功能的好包?还是其他适用的优化方法?
- 健全性检查:我是否用 32 个参数重载了 DE,我需要彻底改变方法吗?

PS
我是一名生物学家,正式的数学/统计学并不是我的强项,任何公式到英文的翻译都将不胜感激:)

PPS
作为一个极端的选择,我可以尝试迁移到 R,但我无法编写 C/C++ 或其他语言。

0 投票
1 回答
1010 浏览

python - 为 scipy.differential_evolution 设置初始参数

scipy的差分进化优化算法中,如果我有一些好的起点,是否可以设置初始参数?

例如,假设我知道最好x的是[0.1, 0.5,0.3],是否可以将其添加到里面scipy.differential_evolution

0 投票
1 回答
786 浏览

scipy - 解释 scipy 差分进化中 tol 参数的直觉

我在 scipy 中使用差分进化优化器,但我不理解 tol 参数背后的直觉。具体在文档中说:

tol:浮动,可选

当总体能量的平均值乘以 tol 除以总体能量的标准差大于 1 时,求解过程终止:
convergence = mean(pop) * tol / stdev(pop) > 1

从用户的角度来看,设置 tol 代表什么?

0 投票
1 回答
370 浏览

evolutionary-algorithm - 为什么差异进化如此有效?

差异进化中的突变背后的想法是什么,为什么这种突变会表现良好?我看不出它背后有什么好的几何原因。

谁能指出我对此的一些技术解释?

0 投票
1 回答
44 浏览

function - 使用差分进化为预算问题找到正确的优化适应度函数

我正在建立一个使用差分进化的推荐系统网站。该网站会询问用户的预算和一些标准,并将返回最佳套餐。数据字段看起来像这样,我有 8 个维度(表格)。

到目前为止,我已经提出了这个等式:

最后的 +1 不会被零除,因此 f=1 将是最佳成本/分数。

我已经尝试过这个公式,如果它找不到 f=1,那么成本会产生不好的结果。

有人有更好的解决方案或任何接近此类问题的文献吗?

提前致谢

0 投票
1 回答
3093 浏览

python-3.x - 如何在 scipy.optimize.differential_evolution 中启用并行?

我正在尝试使用来自 scipy.optimize 的差分进化来找到函数的全局最小值。正如 scipy 参考指南中所解释的,我应该在选项中设置:updated='deferred',workers=number of cores

但是,当我运行代码时,它会冻结并且什么也不做。我该如何解决这个问题,或者有没有更好的方法来并行化全局优化器?

以下是我的代码:

0 投票
1 回答
300 浏览

python - Scipy Differential Evolution - init specifying start

Problematic code:

init : str or array-like, optional Specify which type of population initialization is performed. Should be one of: array specifying the initial population. The array should have shape (M, len(x)), where len(x) is the number of parameters. init is clipped to bounds before use.

I am trying to specifying a known starting point for an optimisation. The shape of my array is (1,99), I get the below ValueError

Error:

I am unsure of what M actually is? and am unable to find it anywhere in the documentation. Could anyone help with explaining this.

0 投票
1 回答
313 浏览

r - 在 R DEoptim 中传递优化函数参数

我正在尝试学习DEoptimR 中的库,但我认为我误解了库文档

https://www.rdocumentation.org/packages/DEoptim/versions/2.2-4/topics/DEoptim

argument "returns_covar" is missing, with no default当我尝试下面的代码时出现错误

我试图优化(最小化)的功能是:

同样,最后一行的错误returns_covar是缺少参数,但我尝试将其传递给DEoptim()函数。

我认为上面有括号错误,所以我尝试了以下

这会导致以下错误:

Error in allocations %*% returns_covar %*% t(allocations) : non-conformable arguments

当我检查矩阵的维度时,一切似乎都很好

calculate_portfolio_variance()函数中添加维度检查

表明分配向量NULL在第二次迭代时变为。我不确定为什么或如何解决它。

0 投票
0 回答
232 浏览

matlab - 在 Matlab 中实现 Shekel 函数

我正在尝试编写一种更快的方法来评估此处找到的 Shekel 函数:https ://www.sfu.ca/~ssurjano/shekel.html

他们的代码与我一直使用的代码非常相似,除了我将一个 x 值矩阵传递给函数并在逐个元素的计算中以三个循环结束。matlab应该可以做得更好。

这是我之前使用的代码:

还有这个 R 实现类似于我想做的:https ://www.sfu.ca/~ssurjano/Code/shekelr.html

到目前为止,我已经做到了这一点,但它和前一个一样慢,因为我正在做同样的事情:

该函数可以用这个调用,你应该得到 -0.3007 :

我经常给 Shekel 打电话,它占用了我大部分的执行时间。有什么建议么 ?

编辑:实际操作(人口规模 = 2,维度 = 4,#minimums = 10)

X =

一个=

repmat(X(1,:),m,1)-A

XA =

(repmat(X(1,:),m,1)-A).^2
(XA)^2

sum((repmat(X(1,:),m,1)-A).^2,2).'
XA 行转置的总和

c =

sum((repmat(X(1,:),m,1)-A).^2,2).'+c
sum(XA)+c

1./(sum((repmat(X(r,:),m,1)-A).^2,2).'+c)
1/sum(XA)+c

-sum(1./(sum((repmat(X(1,:),m,1)-A).^2,2).'+c),2)
Shekel(X(1)) = -sum (1/总和(XA)+c)

.. 等等 X(2)

0 投票
0 回答
231 浏览

python - 努力从 python3 中的论文中用 DEAP 实现差分进化算法

我正在尝试实现差分进化算法来求解 PV 模型的参数。我认为我编写的代码是正确的,但我似乎得到了奇怪的答案。随着算法的每次运行,我都会得到新的参数,这些参数变化很大。此外,我似乎也无法使用 sympy 求解方程,因为我认为指数会产生巨大的值,从而导致溢出。使用 sympy 求解得到以下错误代码:“Python int too large to convert to C ssize_t”

我希望每次运行算法时都会收到一些相似的参数,所以我假设我在某个地方犯了一个错误,我真的找不到它,因此我需要一些帮助,因为我仍然掌握了 python 和进化论算法。

是纸。

它们在第 3 页提供了每个步骤的说明,并在第 5 页显示了伪代码。

任何和所有的帮助都将不胜感激,因为我不确定出了什么问题,也不知道有人可以提供帮助。预先感谢您的任何帮助!