Skip to content
Snippets Groups Projects
Commit 54ada6f8 authored by Gonzalo Menendez Berch - ENS's avatar Gonzalo Menendez Berch - ENS
Browse files

AsiLucas

parent ef3025e4
No related branches found
No related tags found
No related merge requests found
# Malva Configuration.
MALLBA_DIR=/ens/home01/g/gonzalo.menendez/malva
MALLBA_DIR=/ens/home01/l/lucas.bruzzone/AEPractico/malva
# MPI library
MPI_BIN=/lib64/mpich/bin
# Malva information
MALLBA_INC=${MALLBA_DIR}/src
MALLBA_LIB=${MALLBA_DIR}/lib
......
No preview for this file type
No preview for this file type
No preview for this file type
No preview for this file type
No preview for this file type
5
\ No newline at end of file
8
\ No newline at end of file
e1 e2 e3 e4 e5
10 7 1 6 10
0.47 0.49 0.67 0.08 0.23
1827 1288 207 839 1563
\ No newline at end of file
49
t1 t2 t3 t4 t5 t6 t7 t8
59 29 183 88 200 176 18 150
\ No newline at end of file
......@@ -3,6 +3,7 @@
#include "newGA.hh"
#include <math.h>
#include <sstream>
skeleton newGA
{
......@@ -29,17 +30,19 @@ skeleton newGA
*/
string line;
ifstream cantTareasFile ("datos_cantidad_tareas.txt");
ifstream cantTareasFile ("datos_cantidad_tareas");
getline(cantTareasFile, line);
pbm._dimension = stoi(line);
cout << pbm._dimension << endl;
//string line;
ifstream cantEmpleadosFile ("datos_cantidad_empleados.txt");
ifstream cantEmpleadosFile ("datos_cantidad_empleados");
getline(cantEmpleadosFile, line);
pbm._cantEmpleados = stoi(line);
cout << pbm._cantEmpleados << endl;
string line23;
ifstream datosEmpleadosFile ("datos_empleados.txt");
ifstream datosEmpleadosFile ("datos_empleados");
getline(datosEmpleadosFile, line23);
getline(datosEmpleadosFile, line23);
int i1;
......@@ -80,7 +83,7 @@ skeleton newGA
}
//string line;
ifstream datosTareasFile ("datos_tareas.txt");
ifstream datosTareasFile ("datos_tareas");
getline(datosTareasFile, line);
pbm._cantDias = stoi(line);
getline(datosTareasFile, line);
......
No preview for this file type
---------------------------------------------------------------
STATISTICS OF TRIALS
------------------------------------------------------------------
1 10 1 160 1 260 260
2 10 1 360 3 610 610
3 10 2 260 2 451 451
4 10 1 160 1 250 250
5 10 2 360 3 645 645
6 10 1 360 3 679 679
7 10 2 360 3 672 672
8 10 2 360 3 636 636
9 10 1 360 3 693 693
10 10 0 460 4 824 824
------------------------------------------------------------------
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import sys
import random
import math
try:
#Sanity check
if (len(sys.argv)<4):
print "Ejecutar con la siguiente linea: ./validador <ruta_tareas> <ruta_empleados> <ruta_solucion>"
sys.exit(1)
ruta_tareas=sys.argv[1]
ruta_empleados=sys.argv[2]
ruta_solucion=sys.argv[3]
habilidad_empleados=[]
sueldo_diario_empleado=[]
dedicacion_diaria_diponible_empleado=[]
esfuerzo_requerido_tarea=[]
nombres_tareas=[]
nombre_empleados=[]
costo_proyecto=0
tiempo_solucion_proyecto=0
# se sabe que son 3 lineas
archivo_tareas=open(ruta_tareas)
lineasTareas=archivo_tareas.readlines()
deadLine=lineasTareas[0]
nombres_tareas=lineasTareas[1].strip().split(" ")
esfuerzo_requerido_tarea=lineasTareas[2].strip().split(" ")
# se sabe que son 4 lineas
archivo_empleados=open(ruta_empleados)
lineasEmpleados=archivo_empleados.readlines()
nombre_empleados=lineasEmpleados[0].strip().split(" ")
dedicacion_diaria_diponible_empleado=lineasEmpleados[1].strip().split(" ")
habilidad_empleados=lineasEmpleados[2].strip().split(" ")
sueldo_diario_empleado=lineasEmpleados[3].strip().split(" ")
# se convierten a entero
dedicacion_diaria_diponible_empleado = map(int, dedicacion_diaria_diponible_empleado)
sueldo_diario_empleado = map(int, sueldo_diario_empleado)
deadLine=int(deadLine)
esfuerzo_requerido_tarea = map(int, esfuerzo_requerido_tarea)
# se convierte a float
habilidad_empleados = map(float, habilidad_empleados)
# se levanta la solucion del archivo
matriz_solucion=[]
archivo_solucion=open(ruta_solucion)
solucion_empleados_tareas=[]
solucion_empleados=[]
solucion_tareas=[]
for line in archivo_solucion.readlines():
empleados_tareas=line.strip().split(" ")
if( not (empleados_tareas[0] in nombre_empleados)):
print "No existe en la instancia el empleado: " + empleados_tareas[0]
sys.exit(1)
solucion_empleados.append(empleados_tareas[0])
for i in range(1,len(empleados_tareas)):
if( not (empleados_tareas[i] in nombres_tareas)):
print "No existe en la instancia la terea: " + empleados_tareas[i]
sys.exit(1)
solucion_tareas.append(empleados_tareas[i])
for i in range(0,len(solucion_empleados)):
for j in range(i+1,len(solucion_empleados)):
if(solucion_empleados[i]==solucion_empleados[j]):
print "Empleado repetido: " + solucion_empleados[i]
sys.exit(1)
for i in range(0,len(solucion_tareas)):
for j in range(i+1,len(solucion_tareas)):
if(solucion_tareas[i]==solucion_tareas[j]):
print "Tarea asignada más de una vez: " + solucion_tareas[i]
sys.exit(1)
# todas las tareas asignadas
if(len(solucion_tareas)!=len(nombres_tareas)):
print "La cantidad de tareas asignadas es distinta a la cantidad de tareas de la instancia."
sys.exit(1)
for i in range(0,len(nombres_tareas)):
if( not (nombres_tareas[i] in solucion_tareas)):
print "Tarea no asignada " + nombres_tareas[i]
sys.exit(1)
costo_total=0
archivo_solucion=open(ruta_solucion)
maximo_tiempo=0
tiempo_en_dias=0
# se hacen los calculos con la informacion en los archivos
for line in archivo_solucion.readlines():
empleados_tareas=line.strip().split(" ")
indice_empleado = nombre_empleados.index(empleados_tareas[0])
tiempo_en_horas=0
for i in range(1,len(empleados_tareas)):
indice_tarea = nombres_tareas.index(empleados_tareas[i])
tiempo_en_horas=tiempo_en_horas+(esfuerzo_requerido_tarea[indice_tarea] / (0.5 + habilidad_empleados[indice_empleado]))
tiempo_en_dias= int(math.ceil(tiempo_en_horas/dedicacion_diaria_diponible_empleado[indice_empleado]))
costo_total=costo_total+sueldo_diario_empleado[indice_empleado]*tiempo_en_dias
if(tiempo_en_dias>maximo_tiempo):
maximo_tiempo=tiempo_en_dias
if(maximo_tiempo<=deadLine):
# todo OK!
print costo_total,maximo_tiempo
else:
print "No cumple con el tiempo máximo de finalización ({0} > {1}).".format(maximo_tiempo, deadLine)
sys.exit(1)
except IOError as error:
print error
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment