コード例 #1
0
void obtencionDatos( int vectorIterationTries[], int vectorIterationTriesLength, float timeDesc[], float timeRandom []){
	int i = 0;
	int size = 0;
	int *vector;
	float timeCounter;

	for( i=0 ; i< vectorIterationTriesLength; i++){
		//printf("Itaration number: %d\n", i );
		size = vectorIterationTries[i];
		vector = (int *)malloc(sizeof(int)*size);
		inicializaVector( vector, vectorIterationTries[i], 1);
		metodo( vector, vectorIterationTries[i], &timeCounter );
		compruebaVector( vector, vectorIterationTries[i]);
		timeDesc[i]= timeCounter;

		timeCounter = 0;
		inicializaVector( vector, vectorIterationTries[i], 2);
		metodo( vector, vectorIterationTries[i], &timeCounter );
		compruebaVector( vector, vectorIterationTries[i]);
		timeRandom[i]= timeCounter;

	}
	
	

}
コード例 #2
0
ファイル: evalua.c プロジェクト: choyos/PharmaControlCoreLab
float evalua(int* pedidos, int horizonte, int retraso, int* stock, MEDICINE *med){
	//Inicializacion de variables
	int k;
	float J = 0;
	int *orders;
	int noStock;

	//Inicializacion de tablas
	inicializaVector(horizonte, &orders);

	/*Vemos cuando se realizan o no pedidos*/
	for(k=0; k<horizonte; k++){
		if(pedidos[k]==0){
			orders[k] = 0;
		}else{
			orders[k] = 1;
		}
	}

	//Calculo de J y stock
	for(k=0;k<horizonte;k++){
		if(k==0){
			stock[k]=med->stock+pedidos[k];
		//	printf("%d\n",*stock[k] );
		}else{
			stock[k]=stock[k-1]+pedidos[k-retraso]-med->repartidos[k];
		}

		/* 
			Tenemos en cuenta la restricción de que el stock 
			no puede ser menor a una cantidad dada.
		*/
		if((stock[k])<med->minStock){
			noStock = 1;
			stock[k]=stock[k]+med->vTamPedidos[0];
			pedidos[k]=med->vTamPedidos[0];
		}else{
			noStock = 0;
		}
		J = J+med->precio_med*pedidos[k]+(med->precio_alm+med->coste_oportunidad)*stock[k]+(med->coste_pedido+med->coste_recogida)*orders[k]+noStock*(med->coste_sin_stock);
	}

	
	liberaVector(orders);		
	return J;
}
コード例 #3
0
ファイル: fechas.c プロジェクト: choyos/PharmaControlCoreLab
void fechaPedido(int dia, int* fecha){
	int diasMes;
	int *fechaActual;
	inicializaVector(3, &fechaActual);
	int i;

	//Obtenemos hoy
	fechaHoy(fechaActual);
	//Al día de hoy le añadimos los días en los que se pide
	for(i=0; i<3; i++){
		if(i==0){
			fecha[i]=fechaActual[i]+dia;
		}else{
			fecha[i]=fechaActual[i];
		}
	}

	liberaVector(fechaActual);

	//Procedemos a comprobar que la fecha obtenida es correcta en funcion del número
	//de días que tiene cada mes para ver las correcciones a realizar.
	switch (fecha[1]){
		case 1:
			diasMes = 31;
			if(fecha[0]>diasMes){
				fecha[0]=fecha[0]-diasMes;
				fecha[1]++;
			}
			break;
		case 2:
			if(bisiesto(fecha[2])==1){
				diasMes=29;
				if(fecha[0]>diasMes){
					fecha[0]=fecha[0]-diasMes;
					fecha[1]++;
				}
			}
			else{
				diasMes=28;
				if(fecha[0]>diasMes){
					fecha[0]=fecha[0]-diasMes;
					fecha[1]++;
				}
			}
			break;
		case 3:
			diasMes=31;
			if(fecha[0]>diasMes){
				fecha[0]=fecha[0]-diasMes;
				fecha[1]++;
			}
			break;
		case 4:
			diasMes=30;
			if(fecha[0]>diasMes){
				fecha[0]=fecha[0]-diasMes;
				fecha[1]++;
			}
			break;
		case 5:
			diasMes=31;
			if(fecha[0]>diasMes){
				fecha[0]=fecha[0]-diasMes;
				fecha[1]++;
			}
			break;
		case 6:
			diasMes=30;
			if(fecha[0]>diasMes){
				fecha[0]=fecha[0]-diasMes;
				fecha[1]++;
			}
			break;
		case 7:
			diasMes=31;
			if(fecha[0]>diasMes){
				fecha[0]=fecha[0]-diasMes;
				fecha[1]++;
			}
			break;
		case 8:
			diasMes=31;
			if(fecha[0]>diasMes){
				fecha[0]=fecha[0]-diasMes;
				fecha[1]++;
			}
			break;
		case 9:
			diasMes=30;
			if(fecha[0]>diasMes){
				fecha[0]=fecha[0]-diasMes;
				fecha[1]++;
			}
			break;
		case 10:
			diasMes=31;
			if(fecha[0]>diasMes){
				fecha[0]=fecha[0]-diasMes;
				fecha[1]++;
			}
			break;
		case 11:
			diasMes=30;
			if(fecha[0]>diasMes){
				fecha[0]=fecha[0]-diasMes;
				fecha[1]++;
			}
			break;
		case 12:
			diasMes=31;
			if(fecha[0]>diasMes){
				fecha[0]=fecha[0]-diasMes;
				fecha[1]=1;
				fecha[2]++;
			}
			break;
		default:
			fecha[0]=fecha[0]-diasMes;
				fecha[1]++;
	}
}