一维多尺寸垃圾箱填充算法,浪费最少

问题描述

我正在尝试将一维垃圾箱应用到无限数量垃圾箱中。

list = [1000,1200,2400,1700,3000,500,2800] # N number of data
bin = [3100,2700,2400] # N number of bins with all sizes available 

我已经使用过https://pypi.org/project/binpacking/库,但是它不适用于多种尺寸的垃圾箱。 我想要确切的库或代码或算法,以使用最低的垃圾箱和最少的浪费来准确地计算答案。 我尝试通过将此2D装箱库https://github.com/secnot/rectpack转换为1D来使用它,但是它有一个漏洞,无法计算出最低的浪费。对于前。如果只剩下两个值400和500,则该算法应仅使用2400大小的bin,而是采用行或列表中下一个bin的值。

解决方法

我设法为这个问题创建了自己的逻辑。如您所见,我在代码中添加了许多注释,这些注释将帮助您理解代码的不同部分。

import io.cucumber.testng.AbstractTestNGCucumberTests;
import io.cucumber.testng.CucumberOptions;
import org.testng.annotations.DataProvider;

@CucumberOptions(plugin = { "html:target/results.html","message:target/results.ndjson" })
public class RunCucumberTest extends AbstractTestNGCucumberTests {

    @DataProvider(parallel = true)
    @Override
    public Object[][] scenarios() {
        return super.scenarios();
    }

}