Matriz Cálculo de áreas válidas por uso de matrizes A requisição do cliente é passada para uma função indicando-se o retângulo referente a uma unidade de alocação, ou seja, se for uma requisição de tiras, então este retângulo terá o comprimento mínimo de uma tira e terá a largura equivalente ao número mínimo de tiras em uma alocação; se for uma requisição de chapas, então, o comprimento será equivalente ao mínimo de chapas que podem ser alocadas numa linha e a largura equivalente à largura de uma chapa e se for uma requisição de bobinas então o comprimento do retângulo deverá ser equivalente à quantidade mínima exigida a cada bobina. Com isto a função deve responder se existe alguma área na bobina que esteja disponível para a alocação da requisição fornecida. Se existir, então ela deverá retornar todas as área em ordem decrescente de tamanho. Para se calcular as área disponíveis, as semi-retas das bordas dos retângulos representando os defeitos e alocações já realizadas serão estendidas até as bordas da bobina como na figura.  | | Figura: Divisão do mapa em células da matriz tendo como referência as bordas dos defeitos. | Em seguida, será gerada uma matriz na qual cada elemento estará representando uma célula resultante do recorte feito na bobina. No caso da figura, a matriz terá 9 linhas e 9 colunas. Esta matriz armazenará os cálculos necessários para identificar quais células poderão receber o canto direito inferior da requisição. Uma vez identificados estas células, deve-se expandi-las ao máximo para a esquerda, depois para a direita, em seguida para cima e depois para baixo. Esta expansão será feita até que se encontre a borda da bobina ou alguma área que não esteja disponibilizada para alocação. Isto resultará na maior área possível que se pode utilizar a partir da célula identificada. Este processo é repetido até que não haja mais área que possam ser reportadas. Estas áreas são então ordenadas em ordem decrescente de tamanho e retornadas como resultado. Eu desenvolvi um pequeno executável que fiz para demonstrar o algoritmo de procura de áreas válidas: Área válida pelo uso de matriz |