如何生成一个总和是定值的随机矩阵
- 震惊,如果做一个约束比较强的模型,解的矩阵需要满足很多等式约束,而且都是整数,随机产生初始解很困难,该怎么办?
震惊,如果做一个约束比较强的模型,解的矩阵需要满足很多等式约束,而且都是整数,随机产生初始解很困难,该怎么办?
举个例子,比如说有10个需求点A,每个需求点的需求是固定的ai,有10个供给点B,每个供给点的供给量是固定的。
最恶劣的情况:总需求==总供给,那么有20个等式需求满足,非常非常强的约束,如果按照常规的思路取随机产生满足条件的矩阵,会非常费时间。
拯救这个问题的方法就是:蒙特卡洛模拟!!!!!!
用蒙特卡洛算法 产生满足任意约束的矩阵,非常非常好用
太方便太好用了,呜呜呜
举个粒子:
fixrow 是每行的和的约束 fixcol 是每列的和的约束。也就是说,我们要产生一个随机矩阵,每行的和是一个固定且不同的值,同时每列的和也是一个固定且不同的值。
通过MC模拟,很快的实现了这个功能,比我之前写的代码采用的方案快了一万倍。。。。
经过检验,均满足约束
强烈推荐,遇到相关问题的朋友使用这种方法,生成行和列有一定约束的随机矩阵,非常非常非常好用