Exemplo n.º 1
0
 private static void inicializar_tiempo_recursos(Objetos.Lista_recursos recursos)
 {
     for (int i = 0; i < recursos.lista.Count; i++)
     {
         if (recursos.lista[i].nombre == "Daniela")
         {
             recursos.lista[i].tiempo_disponlible = 6;
         }
         else
         {
             recursos.lista[i].tiempo_disponlible = 8;
         }
     }
 }
Exemplo n.º 2
0
        static void Main(string[] args)
        {
            Objetos.Lista_recursos recursos = new Objetos.Lista_recursos();
            recursos.lista = recursos.obtener_lista_recursos(@"/home/ivan/Documentos/GIT/Planificacion/Datos/Recursos.csv");

            string ios_id     = "iOS";
            string android_id = "Android";

            Objetos.Proyecto ios     = obtener_proyecto(@"/home/ivan/Documentos/GIT/Planificacion/Datos/iOS.csv", ios_id);
            Objetos.Proyecto android = obtener_proyecto(@"/home/ivan/Documentos/GIT/Planificacion/Datos/Android.csv", android_id);


            //Estimar proyecto ios
            int dia_proyecto = 0;

            //Ordenar lista de recursos por seniority senior, ssr, jr
            recursos.lista = recursos.lista.OrderByDescending(o => o.seniority_ios).ToList();
            //Ordenar lista de recursos por seniority senior, ssr, jr
            recursos.lista = recursos.lista.OrderByDescending(o => o.seniority_android).ToList();


/*
 *          Console.WriteLine(ios_id);
 *          while (true)
 *          {
 *              //Crear dia
 *              dia_proyecto += 1;
 *              Console.WriteLine("Dia {0}", dia_proyecto);
 *              inicializar_tiempo_recursos(recursos);
 *              inicializar_tareas(ios.tareas);
 *              //Ver que tareas se pueden hacer hoy
 *              List<Objetos.Tarea> tareas_hoy = new List<Objetos.Tarea>();
 *              tareas_hoy = obtener_tareas_hoy(ios.tareas);
 *              if (tareas_hoy.Count == 0)
 *              {
 *                  break;
 *              }
 *              //Asignar tareas
 *              //Buscar un recurso que tenga hs disponibles
 *              for (int i = 0; i < tareas_hoy.Count; i++)
 *              {
 *                  for (int j = 0; j < recursos.lista.Count; j++)
 *                  {
 *                      if (recursos.lista[j].tiempo_disponlible > 0)
 *                      {
 *                          tareas_hoy[i].asignar(recursos.lista[j], ios_id, dia_proyecto);
 *                      }
 *                      if (tareas_hoy[i].fecha_fin != 0 || tareas_hoy[i].asignados.lista.Count > 1)   //Verifica que se haya terminado la tarea para pasar a la siguiente
 *                      {
 *                          break;
 *                      }
 *                  }
 *                  //Reemplazar las tareas que se procesaron hoy
 *                  var indice = ios.tareas.IndexOf(ios.tareas.Where(w => w.id == tareas_hoy[i].id).First());
 *                  if (indice != -1)
 *                  {
 *                      ios.tareas[indice] = tareas_hoy[i];
 *                  }
 *              }
 *          }
 *
 *          /* Android */
            //Estimar proyecto
            dia_proyecto = 0;

            Console.WriteLine(android_id);
            while (true)
            {
                //Crear dia
                dia_proyecto += 1;
                Console.WriteLine("Dia {0}", dia_proyecto);
                inicializar_tiempo_recursos(recursos);
                inicializar_tareas(android.tareas);
                //Ver que tareas se pueden hacer hoy
                List <Objetos.Tarea> tareas_hoy = new List <Objetos.Tarea>();
                tareas_hoy = obtener_tareas_hoy(android.tareas);
                if (tareas_hoy.Count == 0)
                {
                    break;
                }
                //Asignar tareas
                //Buscar un recurso que tenga hs disponibles
                for (int i = 0; i < tareas_hoy.Count; i++)
                {
                    for (int j = 0; j < recursos.lista.Count; j++)
                    {
                        if (recursos.lista[j].tiempo_disponlible > 0)
                        {
                            tareas_hoy[i].asignar(recursos.lista[j], android_id, dia_proyecto);
                        }
                        if (tareas_hoy[i].fecha_fin != 0 || tareas_hoy[i].asignados.lista.Count > 1)   //Verifica que se haya terminado la tarea para pasar a la siguiente
                        {
                            break;
                        }
                    }
                    //Reemplazar las tareas que se procesaron hoy
                    var indice = android.tareas.IndexOf(android.tareas.Where(w => w.id == tareas_hoy[i].id).First());
                    if (indice != -1)
                    {
                        android.tareas[indice] = tareas_hoy[i];
                    }
                }
            }

            /*-------------------------------------------------------- */
            /*AMBOS */
            //Estimar proyecto
            dia_proyecto = 0;

            //Ordenar lista de recursos por seniority senior, ssr, jr
            recursos.lista = recursos.lista.OrderByDescending(o => o.seniority_android).ThenBy(o => o.seniority_ios).ToList();
            Console.WriteLine("/*-------------AMBOS-------------*/");
            while (true)
            {
                //Crear dia
                dia_proyecto += 1;
                Console.WriteLine("Dia {0}", dia_proyecto);
                inicializar_tiempo_recursos(recursos);
                inicializar_tareas(android.tareas);
                //Ver que tareas se pueden hacer hoy
                List <Objetos.Tarea> tareas_hoy = new List <Objetos.Tarea>();
                tareas_hoy = obtener_tareas_hoy(android.tareas);
                tareas_hoy.AddRange(obtener_tareas_hoy(ios.tareas));
                if (tareas_hoy.Count == 0)
                {
                    break;
                }
                //Asignar tareas
                //Buscar un recurso que tenga hs disponibles
                for (int i = 0; i < tareas_hoy.Count; i++)
                {
                    for (int j = 0; j < recursos.lista.Count; j++)
                    {
                        if (recursos.lista[j].tiempo_disponlible > 0)
                        {
                            tareas_hoy[i].asignar(recursos.lista[j], "ambos", dia_proyecto);
                        }
                        if (tareas_hoy[i].fecha_fin != 0 || tareas_hoy[i].asignados.lista.Count > 1)   //Verifica que se haya terminado la tarea para pasar a la siguiente
                        {
                            break;
                        }
                    }
                    //Reemplazar las tareas que se procesaron hoy
                    var indice = android.tareas.IndexOf(android.tareas.Where(w => w.id == tareas_hoy[i].id).Where(w => w.duracion == tareas_hoy[i].duracion).Where(w => w.precedencias == tareas_hoy[i].precedencias).FirstOrDefault());
                    if (indice != -1)
                    {
                        android.tareas[indice] = tareas_hoy[i];
                    }
                    //Reemplazar las tareas que se procesaron hoy
                    indice = ios.tareas.IndexOf(ios.tareas.Where(w => w.id == tareas_hoy[i].id).Where(w => w.duracion == tareas_hoy[i].duracion).Where(w => w.precedencias == tareas_hoy[i].precedencias).FirstOrDefault());
                    if (indice != -1)
                    {
                        ios.tareas[indice] = tareas_hoy[i];
                    }
                }
            }
            /*-------------------------------------------------------- */
            //Grabar CSV

            /*
             * string linea = "";
             * foreach (var tarea in ios.tareas)
             * {
             *  linea = tarea.id +";"+ tarea.duracion +";"+ tarea.fecha_ini +";"+ tarea.fecha_fin;
             *  foreach (var persona in tarea.asignados.lista)
             *  {
             *      linea = linea +";"+ persona.nombre;
             *  }
             *  Console.WriteLine(linea);
             * }
             */
        }