尝试生成一个随机矩阵,其中包含行和列之和的约束,以及对角线上的零。
到目前为止,通过在Ipfp
包中使用mipfp
函数,我可以生成一个随机矩阵,对行和列的总和进行约束,但仍然不能使对角线等于0完成。
InitialM <- array(1,dim=c(5,5))
SumOfRows <- c(40, 60, 20, 10, 10)
SumOfCols <- c(30, 30, 60, 10, 10)
TargetData<- list(SumOfRows, SumOfCols)
Target.list <- list(1,2)
RandomMatrix <- Ipfp(InitialM, Target.list, TargetData,
iter=100, tol=1e-10)
有没有人有任何想法?
答案 0 :(得分:2)
为了达到你想要的目的,你只需要将初始矩阵InitialM
的对角线设置为0:
InitialM <- array(1,dim=c(5,5))
for(i in 1:5) {
InitialM[i,i] <- 0
}
SumOfRows <- c(40, 60, 20, 10, 10)
SumOfCols <- c(30, 30, 60, 10, 10)
TargetData<- list(SumOfRows, SumOfCols)
Target.list <- list(1,2)
RandomMatrix <- Ipfp(InitialM, Target.list, TargetData,
iter=100, tol=1e-10)
因此,最终的RandomMatrix
将在对角线上具有零,并且对行和列的总和的约束将匹配。