首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >约束n维空间的有效随机抽样

约束n维空间的有效随机抽样
EN

Stack Overflow用户
提问于 2010-10-21 11:23:40
回答 2查看 413关注 0票数 2

我要优化一个由n (n>=1,通常是n=4)非负变量定义的问题。这不是一个n维问题,因为所有变量的和都需要1。

最简单的方法是每个x_i扫描整个范围的0<=x_i<1,然后将所有的值标准化为x的总和。然而,这种方法引入了冗余,对于许多依赖解空间随机抽样(遗传算法、禁忌搜索等)的优化算法来说,这是一个问题。是否有其他算法可以执行此任务?

我所说的冗余是什么意思?

以二维情况为例。如果没有约束,这将是一个二维问题,需要优化两个变量。但是,由于需要X1 + X2 == 0,所以只需要优化一个变量,因为X2是由X1决定的,反之亦然。如果一个人决定独立扫描X1和X2,并将它们标准化为1,那么许多解决方案的候选方案就会与问题相同。例如(X1==0.1,X2==0.1)与(X1==0.5,X2==0.5)相同。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-10-21 17:44:29

如果您处理的是实际值变量,那么到达两个样本,变得相同是非常不可能的。然而,你确实有一个问题,你的样品将是不统一的。您更有可能选择(0.5,0.5)而不是(1.0,0)。解决这一问题的方法之一是过采样。基本上,你要做的是,当你沿着某个点缩小空间的时候,你会缩小选择它的可能性。

所以基本上,你所做的是映射所有在单位立方体内满足的点,在相同的方向上,映射到一个点。这些点在同一方向形成一条线。线越长,选择投影点的概率就越大。因此,你想要偏差的概率,选择一个点的倒数,该线的长度。

下面是可以这样做的代码(假设您正在寻找最多可达1的x_is ):

代码语言:javascript
运行
复制
while(true) {
      maximum = 0;
      norm = 0;
      sum = 0;
      for (i = 0; i < N; i++) {
         x[i] = random(0,1);
         maximum = max(x[i], max);
         sum += x[i];
         norm += x[i] * x[i];
      }
      norm = sqrt(norm);
      length_of_line = norm/maximum;
      sample_probability = 1/length_of_line;

      if (sum == 0 || random(0,1) > sample_probability) {
        continue;
      } else {
      for (i = 0; i < N; i++) {
         x[i] = x[i] /sum;
      } 
      return x;
    }
票数 1
EN

Stack Overflow用户

发布于 2011-07-12 14:59:12

下面是先前由provided翻译成python的相同的函数Amit Prakash

代码语言:javascript
运行
复制
import numpy as np

def f(N):
    while(True):
        count += 1
        x = np.random.rand(N)
        mxm = np.max(x)
        theSum = np.sum(x)
        nrm = np.sqrt(np.sum(x * x))
        length_of_line = nrm / mxm
        sample_probability = 1 / length_of_line
        if theSum == 0 or rand() > sample_probability:
            continue
        else:
            x = x / theSum
        return x
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3986886

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档