Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 约束满足:选择具有一定特征的实数_Algorithm_Statistics_Constraint Programming_Constraint Satisfaction - Fatal编程技术网

Algorithm 约束满足:选择具有一定特征的实数

Algorithm 约束满足:选择具有一定特征的实数,algorithm,statistics,constraint-programming,constraint-satisfaction,Algorithm,Statistics,Constraint Programming,Constraint Satisfaction,我有一组n个实数。我还有一套功能 f_1, f_2, ..., f_m. 这些函数中的每一个都将数字列表作为其参数。我还有一套m系列 [l_1, u_1], [l_2, u_2], ..., [l_m, u_m]. 我想反复地选择k个元素的子集{r_1,r_2,…,r_k},这样 l_i <= f_i({r_1, r_2, ..., r_k}) <= u_i for 1 <= i <= m. l_i鉴于您所描述的问题,您可以从每个范围r_i中统一选择,并丢弃任何不符

我有一组n个实数。我还有一套功能

f_1, f_2, ..., f_m.
这些函数中的每一个都将数字列表作为其参数。我还有一套m系列

[l_1, u_1], [l_2, u_2], ..., [l_m, u_m].
我想反复地选择k个元素的子集{r_1,r_2,…,r_k},这样

l_i <= f_i({r_1, r_2, ..., r_k}) <= u_i for 1 <= i <= m.

l_i鉴于您所描述的问题,您可以从每个范围
r_i
中统一选择,并丢弃任何不符合标准的m维点。它将是均匀分布的,因为原始数据是均匀分布的,并且子集集是原始数据上的二进制掩码


如果不进一步了解
f
的形状,就无法保证时间是否为多项式(甚至不知道如何找到满足约束的点)。毕竟,如果
f_1=(x^2+y^2-1)
f_2=(1-x^2-y^2)
并且约束条件是
f_1<0
f_2<0
,你根本无法满足这一点(如果没有函数的分析形式,你永远无法确定)

假设你正在寻找编写自己的应用程序并使用现有的库来执行这一点,那么在许多语言中,如、或java、C++都有选择。您描述问题的方式听起来像是在寻找通用CSP解决方案。您的函数是否有一些属性可以帮助降低复杂性,例如单调性?

根据您的消息中的信息,我不确定是否可以做到这一点

考虑:

  • 数字={1…100}
  • m=1(保持简单)
  • F1=平均值
  • L1=10
  • U1=50

现在,你能想出多少个{1…100}的子集,它们的平均值在10到50之间?

这看起来是一个非常困难的问题。对于线性函数的最简单情况,你可以看看线性规划。

当你说“k元素的子集{r_1,r_2,…,r_k}”是r_1,r_2指的是范围或实数?对不起。我用同样的符号表示两件不同的事情。我更正了。n是你选择的集合中实数的数目。我很困惑-为什么不选择r_1。。。从你的n个数字中随机选取一组,测试它们是否满足你的约束条件,然后重复,直到找到一个满足你的约束条件为止?您允许运行时间随满意解决方案的密度而变化……盲目地测试组合是不够有效的。您必须使用函数平滑的事实来指导您的搜索(这就是您真正了解的函数)。正因为如此,我在尝试爬山,但我不知道这是否是最好的解决方案。有趣的是,我们三个人在问题发布后17分钟内回答了问题。它运行的速度取决于所有可能解空间内的解密度(如果这是0.0,那么算法可以永远运行).功能顺畅。改变{r_1,r_2,…,r_k}中的一个元素不会使f_i({r_1,r_2,…,r_k})改变太多。@Paul-数学平滑没有多大帮助。你知道一些关于一阶偏导数的知识,以及关于高阶导数大小的界限吗?这可能会有所帮助。平均值和方差是两种常用的f_i。我不知道一阶偏导数和高阶导数大小的界限是什么。我们还使用了一两个更复杂的统计函数。不幸的是,它们不是线性的。是的,我同意这很难!