FEX上的这两种选择都不是直接的解决方案。randfixedsum失败了,因为它明确地假定变量的统一边界,我自己的提交,randFixedLinearCombination,因为问题是简单的太高的维度。
这里的问题是什么?
我们可以把约束空间想象成一个n维的矩形框。但是记住,这里N很大。至少它是在你想要解决的情况下。
假设我们要把这个矩形盒子变换成一个n维的单位超立方体?这似乎可以让randfixedsum发挥作用,但遗憾的是,事实并非如此。这是正确的,因为这个变换也将和,从一个简单的和,转换成一个一般的线性组合。
例如,考虑一个简单的问题,我们希望在由约束定义的框中生成一组数字
1 . x = 0
-1 <= x2 <= 2
2 <= x3 <= 6
我们想看到的约束条件是什么
X1 + x2 + x3 == 4
满足该问题的点集可以表示为一个平面上的多边形。
在这种情况下,多面体是一个四边形。在某些情况下,多面体可能是一个三角形,甚至可能是一个六边形。
一般的要求是从这样的集合中随机抽取点。在高维数下,这个问题当然会变得更加复杂,因为多面体现在可能是嵌入在n-1维超平面中的一个巨大的多面体。我在randFixedLinearCombination中采用的方法是解决那个多边形,然后从它中随机取样。该解决方案在理论上是正确的,可以从所要求的域生成统一的样本,尽管在实际中通常不可能实现大量维数,因为多面体本身有时太复杂而无法生成。
这个问题能转化成一个单位超立方体吗?也就是说,假设我们把这个问题转化成对ech变量有一致的界?问题是,这种转换现在也将隐含地转换兴趣平面。在上面的三维例子中,我们可以设置
日元= x1
y2 = (x2 + 1) / 3
y = (x3 - 2)/4
与之相反的是
x1 = y₁
X2 = 3*y2 - 1
X3 = 4*y3 + 2
然而,现在我们的约束变成
y + 3*y + 4*y3 == 3
这是randfixedsum不能处理的,因为线性约束不再是一个简单的和,即使假设y1 y2 y3都在单位立方里。
@Surat Asvapoositkul提到的40或100维度问题也会有同样的问题。一个代码可以解决它,除了它太大,而另一个代码不能解决它,因为边界不是一致的宽度。
很抱歉。