问题标签 [pygmo]

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 投票
0 回答
26 浏览

python - 在课堂外加载 dll 会产生不同的行为

我正在使用 python 使用 cdll.LoadLibrary() 加载在 c++ 中生成的 DLL(正常工作)。问题是每次调用类时我都需要在类中重新加载 DLL,否则会产生不同的行为。

当我在类中重新加载 dll 时,代码评估适应度函数大约 4192 次(262 次迭代),但是当我删除重新加载 dll 的两行时,代码只运行 16 次(一次迭代),在收敛之前停止。

这是我的代码:

现在,每次调用健身时代码都会重新加载 dll,这会增加经过的时间。我只想加载一次。

0 投票
1 回答
629 浏览

python - PyGMO 批量适应度评估

我的目标是使用PyGmo执行参数估计(模型校准) 。我的模型将是一个外部“黑色 blox”模型(c 代码),输出J要最小化的目标函数(在这种情况下,J 将是模型输出和测量数据之间的“归一化均方根误差”(NRMSE)。加快优化(校准)我想在多个核心/线程上并行运行我的模型/模拟。因此我想在 PyGMO 中使用批量适应度评估器(bfe)。我使用简单的问题类准备了一个最小示例,但是使用纯python(无外部模型)和罗森布洛克问题:

当我尝试运行此代码时,出现以下错误:

发生异常:ValueError

功能:bfe_check_output_fvs

其中:C:\projects\pagmo2\src\detail\bfe_impl.cpp, 103

什么:批量适应度评估产生了无效结果:产生的适应度向量的数量为 30,与输入决策向量的数量为 1 不同

通过删除或删除这两行:

该脚本可以无错误地运行。

我的问题:

  1. 如何使用批量适应度评估?(我知道这是 PyGMO 的一项新功能,他们仍在编写文档......)有人可以举一个关于如何实现它的最小示例吗?
  2. 这是加快我的模型校准问题的正确方法吗?还是我应该使用岛屿和群岛?如果我没记错的话,群岛中的岛屿不会相互交流,对吧?因此,如果执行例如粒子群优化并希望同时(并行)评估多个目标函数调用,那么批量适应度评估器是正确的选择吗?
  3. 在这个例子中我需要关心群岛和岛屿吗?它们究竟是为了什么?是否值得运行几个优化但具有不同的初始 x(目标函数的输入)然后采取最佳解决方案?这是使用 GA 进行优化的常用方法吗?

我对优化和 PyGMO 领域非常了解,所以谢谢你的帮助!

0 投票
0 回答
67 浏览

python - 我在使用 pygmo 软件时遇到问题

我已经通过 conda 提示安装了 pygmo 软件。并在运行时。出现以下错误。我该如何修复我的安装

0 投票
1 回答
166 浏览

installation - 在 Mac OS X 11.2.2 上使用 Anaconda 安装 PyGMO 期间的冲突

我正在尝试在 Mac OS X 11.2.2 上安装 PyGMO(使用我重新安装的 Anaconda,因此 Anaconda Navigator 现在已升级到 2.0.1。)

安装开始后,它会收集包元数据并报告它发现包冲突。如何解决冲突以便可以运行 PyGMO?

这是开始:

几个小时后,终端返回一份关于冲突的长篇报告并停在那里。这是一个有代表性的输出:

我遵循官方安装指南并设置附加频道及其优先级。我也检查了这个命令,但这本质上是一样的。我还尝试了PyPI的安装命令。我也尝试了这个提示

0 投票
0 回答
21 浏览

python - 在 PyGMO 中访问代数和退出标志

在 PyGMO 中,有没有办法访问和存储总代数和退出标志?

我只想出了以下解决方案

但它非常慢,只解决了一半的问题。

0 投票
0 回答
16 浏览

multithreading - 为什么我的群岛线程没有完成它们的工作?

我现在正在使用 pygmo,直到现在我都忽略了 archiplago 函数,因为我遇到了问题,线程没有完成它们的工作,因此程序“停止”在 archi.wait().

我已经构建了一个测试问题,希望也许我在真正的问题中做了一些不允许多线程处理的问题,但测试问题也不适用于群岛。你有什么想法我做错了吗?

代码:

输出(可能不是必需的,但是嘿)