假设 G 是 (100 , 20 ) 的矩阵,h 是 ( 100) 的向量。
如何随机生成一个大小为 100 且满足条件 G x 的向量 x <= h ?
显然,我可以做如下的事情。但是,如果我想生成数千个这样的点,那么效率很低。谢谢。
import numpy as np
# Define G and h
G = np.random.rand(100, 20)
h = np.random.rand(100)
def is_feasible(x):
return np.all(np.dot(G, x) <= h)
while True:
# Generate random vector x
x = np.random.rand(20)
# Check if x is feasible
if is_feasible(x):
break
我相信你可以尝试关注。你有不平等
G×<= h
xi< 1 for any i
xi >= 0 对于任何 i
你会发现满足上述所有条件的交凸多边形。 从每个维度的多边形中你得到
max xi 和 min xi,显然这些值小于 1 且大于或等于 0。
然后对由最小值/最大值定义的超立方体中的点进行采样,然后应用矩阵检查
伪代码
而真实:
对于范围 (0,100) 内的 i:
xi = 最小 xi + (最大 xi - 最小 xi) U01
如果 G x <= h: break