2009-10-13 1 views
9

나는 3d 빈 패킹 알고리즘에 대한 결정 론적 구현, 즉 하나 이상의 크고 작은 많은 큐브oid를 하나 이상의 큰 큐브 패킹에 사용하고자합니다. 솔루션은 최적의 솔루션과 다를 수 있습니다.3d 빈 패킹 알고리즘

C, C++, Java, C#, IronPython, IronRuby 또는 .Net 코드에서 가져올 수있는 다른 언어로 작성되어야합니다.

이 C 알고리즘 http://www.diku.dk/hjemmesider/ansatte/pisinger/3dbpp.c을 찾았지만 가장 적합한 것을 찾기 위해 입방체를 회전시키지 않았습니다. 나는 그들을 뒤집어서 회전하지 않아도 괜찮지 만 수평 회전이 가능해야한다.

+0

@Mouk :이 숙제가 있습니까? – Asaph

+4

알고리즘을 찾고 있지만 프로그래밍 언어가 나열되어 있다고 주장합니다. 일반적인 알고리즘이나 구현을 찾고 있습니까? –

+0

최적의 솔루션을 원하십니까? 아니면 꽤 좋은 솔루션입니까? 직육면체가 모두 같은가요? 당신이 회전을 말할 때, 당신은 90도 또는 어떤 각도를 의미합니까? – Beta

답변

8

C++에서 직각 회전을 사용하여 3D 사각형 상자 (즉, 3D 직사각형 상자)에 대한 대략적인 알고리즘을 작성했습니다. 게시 된 논문의 결과와 알고리즘을 찾을 수 있습니다 http://www.cs.ukzn.ac.za/publications/erick_dube_507-034.pdf

+3

소스 또는 C++ 응용 프로그램을 온라인으로 사용할 수 있습니까? –

+0

이것은 간단한 해결책에 좋지만 모든 것이 잘 작동하지는 않습니다. 설명을 원하고 책을 쓰는 데 도움이되는 사람은 Martello and Toth의 배낭 문제, ISBN : 0471924202 – ars265

1

이 문제는 NP 하드입니다. 최선의 방법은 근사 알고리즘입니다 (천재인이 NP 문제를 해결할 때까지 또는 매우 운이 좋은 사람이 솔루션을 가로막습니다.) 불행히도이 문제에 대한 근사 알고리즘을 잘 모릅니다.

+3

다항식 시간에 NP 완전 문제를 풀면 NP 하드 문제에 대한 다항식 솔루션이 제공되지 않습니다. –

1

나는 자바 스크립트에 wknechtel/3d-bin-pack C 코드를 변환. 쉽게 C#으로 포트 할 수 있습니다.

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

당신은 index.html 파일에서 예를 들어 계산을 실행하고 생성 된 보고서를 검토 할 수 있습니다. pack1.js 파일에는 앱과 알고리즘이 들어 있습니다. 알고리즘 작동 방식을 잘 모르겠지만 결과는 패키징 계산에 만족합니다.