Esta instruccion
Código Delphi
[-]
for i:=0 to N-1 do begin
VInstanciasAux[i]:=TInstancia.Create;
VInstanciasAux[i]:=Self.VInstancias[i].Clon;
end;
se puede traducir como:
Código Delphi
[-]
for i:=0 to N-1 do begin
VInstanciasAux[i]:=TInstancia.Create;
VInstanciasAux[i]:=TInstancia.Create;
VInstanciasAux[i]:=Copy(Self.VClasificacion);
VInstanciasAux[i]:=Copy(Self.VDistancias);
VInstanciasAux[i]:=Copy(Self.MatrizCG);
VInstanciasAux[i]:=Self.Inercia;
VInstanciasAux[i]:=Copy(Self.VectorCardi);
end;
Como ves, estas creando y volviendo a crear la misma variable.
La primera vez que lo creas VInstaciaAux[i] apunta a un lugar de memoria, que cuando no lo necesites mas deberás liberar.
Cuando le asignas la segunda creación, apuntará a otro lugar de la memoria y te habrá quedado una instancia en el limbo.
Esto es el error que veo, pero podría haber otros, dependiendo de como trates a las instancias generadas cuando modificas el tamaño del array VInstanciasAux.