我正在使用p-median开发一个位置分配问题的程序。如果有人能帮助我解决我在程序中遇到的问题,感谢。
我有三个矩阵如下: AA =
[,1] [,2] [,3]
[1,] 5.50 3.28 14.20
[2,] 12.40 2.02 7.22
[3,] 7.63 6.47 3.48
pop =
[,1] [,2] [,3]
[1,] 1402 974 1052
CAP1 =
[,1] [,2] [,3]
[1,] 4050 780 130
diss <- apply(AA,1,sort)
ran <- apply(AA,1,rank)
ordd <- apply(ran,2,order)
prone <- function (pop,diss,ordd)
{
if (pop <= cap1[ordd])
{a1<-diss* pop}
else if (pop > cap1[ordd])
{a1<-(cap1[ordd]* diss) + ((pop-cap1[ordd])* diss[,i+1])}
该程序应该在diss
处取第二个diss[,i+1]
值,但它在整个循环中取最小值diss
。
else if (pop-cap1[ordd]>cap1[ordd[i+1])
{a2<-a1+(cap1[ordd[i+1]])*diss[,i+2]}
# the looping will continue untill comply the below condition
else (pop<=cap1[ordd[i+2]]
}
prone1 <- function (pop,diss,ordd)
{
for(i in 1:ncol(pop))
{
a2=prone(pop[,i],diss[,i][1],ordd[,i][1])
if (i==1)
{a3<-a2}
else if (i!=1) {a3<-rbind(a3,a2)
}
}
print(a3)
}
prone1(pop,diss,ordd)
有关如何解决此问题的任何想法?