2009-10-13 51 views
9

Tôi đang tìm cách thực hiện xác định cho bất kỳ thuật toán đóng gói thùng rác 3D nào, tức là đóng gói nhiều hình khối nhỏ và khác nhau bên trong một hoặc nhiều hình lớn hơn. Giải pháp có thể khác với giải pháp tối ưu.Thuật toán đóng gói thùng rác 3d

Nó phải được viết bằng C, C++, Java, C#, IronPython, IronRuby hoặc bất kỳ ngôn ngữ nào khác có thể chuyển từ mã .Net.

Tôi đã tìm thấy thuật toán C này http://www.diku.dk/hjemmesider/ansatte/pisinger/3dbpp.c, nhưng không xoay các ô vuông để tìm phù hợp nhất. Tôi ổn với việc không xoay chúng lộn ngược, nhưng có thể xoay ngang.

+0

@Mouk: Đây có phải là bài tập về nhà không? – Asaph

+4

Bạn tuyên bố rằng bạn đang tìm kiếm một thuật toán, nhưng sau đó bạn liệt kê các ngôn ngữ lập trình. Bạn đang tìm kiếm một thuật toán chung hoặc thực hiện? –

+0

Bạn có muốn các giải pháp tối ưu, hoặc một trong đó là khá tốt? Các cuboids có giống nhau không? Khi bạn nói xoay, bạn có nghĩa là 90 độ, hoặc bất kỳ góc độ? – Beta

Trả lời

8

Tôi đã viết một thuật toán gần đúng cho trường hợp bạn mô tả tức là hộp hình chữ nhật 3D, với xoay vòng trực giao, trong C++. Bạn có thể tìm thấy những kết quả và thuật toán trong bài báo đăng: http://www.cs.ukzn.ac.za/publications/erick_dube_507-034.pdf

+3

Ứng dụng nguồn hoặc C++ có sẵn trực tuyến ở bất kỳ đâu không? –

+0

Điều này là tốt cho một giải pháp đơn giản nhưng thực sự không hoạt động tốt. Đối với bất cứ ai muốn có một lời giải thích và giúp viết một cuốn sách tôi đề nghị cuốn sách này: Knapsack Problems, bởi Martello và Toth, ISBN: 0471924202 – ars265

1

Sự cố này là NP-hard. Đặt cược tốt nhất của bạn là một thuật toán xấp xỉ (cho đến khi một người thiên tài giải quyết bất kỳ vấn đề NP nào, hoặc một đồng nghiệp rất may mắn gặp một giải pháp.) Tôi không biết bất kỳ thuật toán xấp xỉ nào cũng biết về vấn đề này.

+3

Giải quyết vấn đề NP-complete trong thời gian đa thức sẽ vẫn không cung cấp cho bạn giải pháp đa thức cho các vấn đề NP-hard :) –

1

tôi chuyển wknechtel/3d-bin-pack C code để javascript. Có thể dễ dàng chuyển đến C#.

https://github.com/keremdemirer/3dbinpackingjs

Bạn có thể chạy tính toán ví dụ từ index.html tập tin và xem xét các báo cáo được tạo. pack1.js tệp chứa ứng dụng và thuật toán. Tôi không chắc cách thuật toán hoạt động nhưng kết quả thỏa mãn cho tính toán đóng gói.

Các vấn đề liên quan