コード例 #1
0
        public static double CalcularDesperdicio(List <Stock> listaStocks, List <Rectangulo> listaPiezas)
        {
            double area1 = 0;

            foreach (Rectangulo pieza in listaPiezas)
            {
                area1 += pieza.W * pieza.H;
            }

            double area2 = 0, area3 = 0, area4 = 0;
            int    i = 1;

            foreach (Stock stock in listaStocks)
            {
                if (stock.Arbol != null)
                {
                    // Calcular las posiciones absolutas
                    Utilitarios.CalcularPosicionesAbsolutas(stock.Arbol, 0, 0);
                    // Convertirlo a lista
                    List <Rectangulo> listaPiezas_Stock = Utilitarios.ConvertirALista(stock.Arbol);


                    area2 += stock.W * stock.H;

                    area3 += (stock.Arbol.Rect.W + stock.Arbol.Rect.H) * i;

                    foreach (Rectangulo pieza in listaPiezas_Stock)
                    {
                        if (Utilitarios.SeEncuentraEnLista(pieza, stock.ListaDefectos))
                        {
                            //area1 -= pieza.W * pieza.H;
                            area4 += pieza.W * pieza.H;
                        }
                    }
                    i += 3;
                    //desperdicio += (anchoStock * altoStock - anchoOcupadoPiezas * altoOcupadoPiezas);
                }
            }
            return(5 * (area1 / area2) + 5 * (area1 / area3) - 5 * (area4 / area1));
        }
コード例 #2
0
        public void Algoritmo2()
        {
            foreach (Stock stock in listaStocks)
            {
                if (stock.Arbol != null)
                {
                    // Calcular las posiciones absolutas
                    Utilitarios.CalcularPosicionesAbsolutas(stock.Arbol, 0, 0);
                    // Convertirlo a lista
                    List <Rectangulo> listaPiezas_Stock = Utilitarios.ConvertirALista(stock.Arbol);

                    foreach (Rectangulo pieza in listaPiezas_Stock)
                    {
                        // Si la pieza cae en una región con defecto
                        if (Utilitarios.SeEncuentraEnLista(pieza, stock.ListaDefectos))
                        {
                            InsertarPiezaEnUnStock(pieza);
                        }
                    }
                }
            }
        }