问题标签 [mystic]
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 - 查找具有边界和约束的离散变量的函数最小值
我试图找到一种(相对)快速的方法来最小化给定约束和界限的自然数集上的函数。我知道函数的数学形式及其约束,所以蛮力方法似乎很慢而且不是很优雅。解决这个问题的最佳方法是什么?
基本上,我试图从使用 scipy.optimize.minimize 对实数进行功能最小化到自然数上的一个。(我知道这要困难得多)
让事情变得容易。我在想这样的例子:
换句话说,我希望添加约束和界限
(我知道我可以通过从 xr 中排除这些值来强加它们,但这对于我所想到的实际情况来说似乎不太优雅且不太实用)
所以我期待有一些不同的最小化器,比如 scipy.optimize.basinhopping 或者神秘的东西来做这个把戏?有什么建议么?
python - Mystic - 如何正确停止优化
我有一个相当大且复杂的 Python 应用程序,我最近添加了使用 Mystic ( https://github.com/uqfoundation/mystic )执行非线性优化的能力。优化在与主 (GUI) 线程不同的线程中运行。我天真地使用fmin_powell
anddiffev
来运行优化。
由于目标函数的评估可能很长,因此用户可以单击“停止”按钮并停止模拟。
也就是说,我还没有找到一种智能方法来实际停止优化线程,因为似乎没有停止fmin_powell
ordiffev
函数。我不需要能够在模拟中间停止当前函数评估,我也很乐意等到当前函数评估完成后再停止优化。
有谁知道这是否真的可能?
预先感谢您的帮助。
安德里亚。
python - 如何找到参数以优化(最大化)具有全局随机变量的函数的期望值(使用python mystic)
如果以错误的方式使用它,我很抱歉在 StackOverflow 上提问。
我在一篇论文中有一个最大化问题,就像这样:
和一些限制:
其中r_f,t+1和γ给定常数,r_t+1是多维随机变量向量(这里是4维),f_t(r_t+1)是r_t+1的多维分布函数。问题是找到一个权重向量 w_t 来最大化期望值。
该论文说它是如何解决这个问题的,“积分是通过从多元条件回报分布 f_t(rt+1) 模拟 4 个因子(r_t+1 向量)的 100,000 个变量来解决的”。我知道如何生成随机数并从分布中获取平均值,但不完全了解如何在优化问题中使用它。
我尝试使用一些随机数并将平均值作为目标函数返回,如下例所示:
接下来,我使用模块mystic来解决全局最小值。
我真正的问题产生了 50000 个随机数,似乎找不到确切的全局最小解,因为每次代码找到不同的解并且目标函数的值不同。即使在阅读文档并将参数“npop”更改为 1000 并将“scale”(试验解决方案的突变乘数)更改为 0.1 之后,它也没有按预期工作。
我用来解决优化问题的方式是不是错了?使用模拟数据最大化期望值的确切方法是什么?还是使用神秘模块有什么问题?或者,是否有另一种有效的方法来解决上述最大化问题?
非常感谢您的帮助!</p>
python-3.x - 如何在 Mystic 中应用不等式约束
我正在尝试使用 Mystic 最大化受不平等约束的目标,但我正在努力了解如何应用惩罚约束。这个问题是非凸的,涉及最大化目标,其中只有一个变量会改变 (x)。我正在尝试 Mystic,因为我听说它有利于大规模优化,并且 x 是一个包含数百万个项目(大小 N)的一维数组。
存在三个由数字 a、b 和 c 组成的一维数组,它们都有 N 个值(a 和 b 中的值在 0-1 之间)。x 中的每一项都将大于 >= 0
我已经看到了使用generate_penalty
andgenerate_constraint
函数的示例,并认为我可以使用以下方法实现约束,但没有成功:
一般来说,任何关于如何应用惩罚约束的建议或使用 Mystic 的建议都会受到赞赏。Github 上有很多例子,但很难看出哪一个适合借鉴。我已经使用 SLSQP 实现了 Scipy 最小化的解决方案,但它在所需的规模上太慢了。
optimization - 如何在神秘中使用非线性不等式约束向量?
使用非线性函数从决策变量和一些附加输入计算出的不等式约束求解非凸优化。可以将约束(示意性地,仅作为示例)放入一个返回向量输出的函数中,例如,使用一些任意不等式:
现在,当我尝试评估某些 x = [1,2,3,4,5] 的惩罚时,我收到如下错误
因为我有数千个不等式要放入惩罚中,所以我不能将它们中的每一个放入单独的函数中。此外,所有不等式都是使用一些有效的算法联合计算的,并且使用一个函数很有意义。当我尝试使用符号求解器时,它基本上会由于太多的不等式和变量(> 500 个不等式和> 1000 个决策变量)而崩溃。
因此,问题是:如何使用向量值函数输出来指定神秘惩罚?
python - 使用神秘来解决不等式系统
我正在尝试使用 Python 框架Mystic解决一个简单的不等式系统。我正在求解十个变量,这些变量应该都大于彼此(x1 > x2 > x3 > ... > x10)并且它们应该大于零。我希望这些变量仅限于整数,我还没有设法完成。
这十个变量用于具有大约 15-20 个方程的不等式系统。我已经用所有这些不等式创建了一个字符串,简化了它们,生成了求解器,从这些求解器中生成了约束,就像文档解释的那样。但是,我终其一生都无法理解如何从我的代码生成的约束对象中获得解决方案(即神秘分配给我想要解决的变量的数字)。我已经搜索了几个小时的文档,并检查了大多数关于神秘和不平等解决的 stackoverflow 帖子。大多数问题都比我的水平高得多,所以它们没有多大帮助。
这是我的代码的摘录。
哪个打印:
这显然是不正确的。(我想知道的其他事情:为什么这些不等式的原始顺序没有得到保留?)
任何帮助将不胜感激。
问候,伦纳特
python - 如何在 Mystic 中以函数形式指定多个约束?
在使用 Mystic 求解器时如何输入多个约束?例如,我有这两个函数来描述我的两个约束:
使用时diffev(...)
,输入这些约束的正确方法是什么?
python - 非凸 MINLP 的神秘
可以使用神秘优化器来最小化只有整数输入的非凸混合整数非线性规划问题吗?因为目标函数在 x(输入)中是不连续的,它是离散的整数。
python - 将整数约束置于神秘之中
我是神秘主义者的新手,正在研究优化问题。我的神秘代码如下所示:
我保证我objective()
的定义是正确的(它包含一些本代码中未提及的字典和函数)。但是我的约束是否cons
仅x
适用于整数值,或者我需要为此添加一些@integers()
如上所述my.constraints
的约束,如下所示?另外,我的优化结果什么也没显示。我的错在哪里?
python - 为什么在 Python 中使用 Mystic 优化非线性约束优化时会收到“不能简单地不等式”错误?
我正在尝试使用 Mystic 优化以下问题。我目前收到一个我不理解的错误,希望更熟悉该库的人可以提供帮助。
在计算 cf 时,我收到一个“NotImplementedError:无法简化不等式”并想知道为什么会这样?如果有人知道我将如何扩展它,以便我可以通过函数或以不同的方式创建约束,我也很想知道。干杯