/** Calcula los nodos que son enajendados. */ private void calcularEnagenamiento() { Iterator<Deposito> itd1 = depositos.iterator(); this.enajenados = new ArrayList<Enajenado>(); while (itd1.hasNext()) { Deposito dep1 = itd1.next(); Iterator<Cliente> itc1 = dep1.getAsignados().iterator(); while (itc1.hasNext()) { Cliente clientebase = itc1.next(); Iterator<Deposito> it4 = depositos.iterator(); while (it4.hasNext()) { boolean encontre1 = false; boolean encontre2 = false; Deposito dep2 = it4.next(); if (dep1.getNodo().getId() != dep2.getNodo().getId()) { Iterator<Cliente> it5 = dep2.getAsignados().iterator(); while (it5.hasNext()) { Cliente cliente = it5.next(); if (((ClienteCap2) clientebase).getClieteMasCercano1().getNodo().getId() == cliente.getNodo().getId()) encontre1 = true; if (((ClienteCap2) clientebase).getClieteMasCercano2().getNodo().getId() == cliente.getNodo().getId()) encontre2 = true; } if (encontre1 && encontre2) { this.enajenados.add(new Enajenado(((ClienteCap2) clientebase), dep1, dep2)); break; } } } } } // limpio lista de enegenados por la distancia al deposito. int distCaC1, distCaC2, distDep; Iterator<Enajenado> itena = this.enajenados.iterator(); ArrayList<Enajenado> asacar = new ArrayList<Enajenado>(); while (itena.hasNext()) { Enajenado ena = itena.next(); distCaC1 = Distancia.getInstancia() .getDistancia( ena.getCliente().getClieteMasCercano1().getNodo(), ena.getCliente().getNodo()); distCaC2 = Distancia.getInstancia() .getDistancia( ena.getCliente().getClieteMasCercano2().getNodo(), ena.getCliente().getNodo()); distDep = Distancia.getInstancia() .getDistancia(ena.getCliente().getNodo(), ena.getDeposito().getNodo()); System.out.println( "Clientes mas cercanos a " + ena.getCliente().getNodo().getId() + " ( " + ena.getDeposito().getNodo().getId() + " ). c 1 y c2 " + ena.getCliente().getClieteMasCercano1().getNodo().getId() + " ," + ena.getCliente().getClieteMasCercano2().getNodo().getId() + "(" + ena.getDepositoDestino().getNodo().getId() + ")"); if (distCaC1 + distCaC2 > distDep) asacar.add(ena); // this.enajenados.remove(ena); else ena.setMu(distDep - (distCaC1 + distCaC2)); } Iterator<Enajenado> itsacar = asacar.iterator(); while (itsacar.hasNext()) { this.enajenados.remove(itsacar.next()); } }