####################################### # SRA Raggruppamento automatico. # Programma principale Sra = function (X,k) {n=nrow(X) MP=Mm(numeric(n*40),col=40) MP=Sra.nuovi(MP,k,1,40) dt=10; t=0; repeat {t=t+1; R=Sra.rendimenti(MP,X,k) Ord=order(R); MP=MP[,Ord] MP=Sra.nuovi(MP,k,31,40) MP=Sra.mutazioni(MP,k,R,X) MP=Sra.incroci(MP,k,R,X) if (t%%dt==0) {dt=Sra.visualizza(t,dt, R[Ord[1]],MP[,1]) if (dt==0) break}}} # Matrice dei baricentri. Sra.baricentri = function (X,P,k) {m=ncol(X); n=nrow(X) cont=S.conta(P,k) B=Mm(rep(0,m*k),righe=k) for (i in 1:n) {a=P[i]; B[a,]=B[a,]+X[i,]} for (a in 1:k) B[a,]=B[a,]/cont[a] B} # Calcola la funzione g. Sra.g = function (P,X,k) {n=nrow(X); B=Sra.baricentri(X,P,k) s=0 for (i in 1:n) {u=X[i,]-B[P[i],] s=s+Mv.scalare(u,u)} s}