Example #1
0
//constructor de copia de solución
//sol es la solución inicial
//mantener_inicial es por si acaso no necesitara mantener
//la solución inicial para calcular algo
solucion::solucion(const solucion& sol, bool mantener_inicial)
{
    cout << "En constructor de solución inicial" << endl;
    //Referencia a la solución inicial
    if (mantener_inicial) sol_inicial = &sol;

    cout << "Copiando referencias" << endl;

    //costos
    costoMovimientoMaquinas = sol.costoMovimientoMaquinas;
    initBalanceTriple(sol.balances_num);

    //pesos
    peso_balance = sol.peso_balance;
    peso_proceso = sol.peso_proceso;
    peso_servicio = sol.peso_servicio;
    peso_maquina = sol.peso_maquina;

    //recursos
    recursos_num = sol.recursos_num;
    peso_recursos = sol.peso_recursos;
    recursos_trans = sol.recursos_trans;

    cout << "Inicializando cantidades y objetos" << endl;

    //cantidades
    setCantidades(sol.procesos_num, sol.maquinas_num, sol.servicios_num, sol.localizaciones_num, sol.vecindarios_num);

    //objetos
    setObjetos(sol.procesos, sol.maquinas, sol.servicios);
}
AlgMultiArranque::AlgMultiArranque(vector<Cluster*>& clusters, vector<Objeto*>& objetos) {
	setNombreAlgoritmo(" Técnica MultiArranque ");
	setObjetos(objetos);
	setClusters(clusters);
	setDimension(getClusters()[0]->getDimension());

	int* sol = new int [getObjetos().size()];
	_solActual = new int [getObjetos().size()];
	_mejorSol = new int [getObjetos().size()];
	for (unsigned int i = 0; i < getObjetos().size(); ++i) {
		sol[i] = -1;
	}
	setSolucion(sol);
	delete [] sol;
	_tecnicaLocal = NULL;
	_centroidesFin = new int *[getClusters().size()];
	for (unsigned int i = 0; i < getClusters().size(); ++i)
		_centroidesFin[i] = new int[getDimension()];
}