#bin #algorithm #packing #bin-packing #pack #fit #offline

pack_it_up

pack_it_up 是一个简单的Rust库,实现了多种装箱算法

3个版本 (1个稳定版)

1.0.0 2023年3月7日
0.1.1 2023年1月9日
0.1.0 2023年1月7日

#1208 in 算法

Download history 152/week @ 2024-03-07 124/week @ 2024-03-14 136/week @ 2024-03-21 123/week @ 2024-03-28 126/week @ 2024-04-04 132/week @ 2024-04-11 78/week @ 2024-04-18 72/week @ 2024-04-25 84/week @ 2024-05-02 98/week @ 2024-05-09 89/week @ 2024-05-16 106/week @ 2024-05-23 123/week @ 2024-05-30 132/week @ 2024-06-06 123/week @ 2024-06-13 69/week @ 2024-06-20

每月469次下载

MIT许可协议

11KB
174

pack_it_up

Crates.io docs.rs

pack_it_up 是一个简单的Rust库,实现了多种装箱算法

当前实现的算法

  • 首次适配
  • 首次适配递减

基本示例

use pack_it_up::offline::first_fit_decreasing::first_fit_decreasing;

struct MyItem {
    some_content: i32,
    size: usize,
}

impl Pack for MyItem {
    fn size(&self) -> usize {
        self.size
    }
}

fn main() {
    let my_items = vec![
        MyItem { some_content: 1, size: 1, },
        MyItem { some_content: 2, size: 2, },
        MyItem { some_content: 3, size: 19, },
        MyItem { some_content: 4, size: 17, },
        MyItem { some_content: 5, size: 1, }, 
    ];
    
    let mut bins = first_fit_decreasing(20, my_items);
}

上述结果将产生2个满载的箱子,一个大小为19和1,另一个大小为17、2和1。

计划功能

  • 剩余算法
  • 性能优化
  • 如果您的结构体已经有一个名为size的字段,则可以简单地为Pack派生

无运行时依赖