I already asked this on stack overflow but just found this forum instead and figured it was more suited here. If this isn't allowed please feel free to tell me and I'll delete the post.
I am doing some work for a local factory of where they cut out small metal sheets from larger metal sheets. All are rectangles.
Today they try to fit many small sheets on one large. And only order and keep stock of one size of large sheets before cutting them into smaller. They try to minimize the metal waste by fitting as many small sheets on the large one, and because of this the order of the production of the small sheets can be quite hard to predict some days. To combat this, they instead want to start ordering large sheets of varying sizes, maybe 8-16 different sizes. And instead produce only ONE small sheet from each LARGE sheet. This might increase the waste, but also make it easier to plan ahead which small sheets to produce. But we now face another optimization problem: What 8(just an example number, could be 10 later, but quite small number) sizes of LARGE should we keep in stock?
The SMALL sheets can be 50mm - 2000mm in width and 50mm - 1500mm in height. So one SMALL sheet could for example be 50mm wide and 1000mm high. Using a 1000x1000mm LARGE sheet would then create a lot of waste. They know what the sizes and the number of each of the SMALL sheets they are going to produce each month before, so that is part of the input. It could be many different sizes, maybe 100. And different number of each.
So the question is essentially: If our input is some sizes and the number of each, maybe : (50mm,200mm,50pcs), (100mm,200mm,50pcs) .... and the number of different LARGE sheets to order (maybe 8). What 8 sizes of LARGE sheets should we order (and how many of each?).
So far I have programmed a python script to calculate the waste for a specific set of LARGE sheets and for a data set of needed SMALL sheets, always using the best LARGE sheet for a specific SMALL sheet. But now I struggle to come up with a smart way to choose the large sheets. I am guessing the sizes can be discretized to steps of 25mm or 50mm to make it easier. I have only been thinking of randomly trying different sets of large sheets and choosing the best set found, but I guess some greedy heuristic could be developed?
Would greatly appreciate some guidance on how to move forward with this.