3d bin-packing-Algorithmus
Ich bin auf der Suche nach einem deterministischen Umsetzung für alle 3d-bin packing-Algorithmus, d.h. für die Verpackung viele kleine und unterschiedliche Wärmequellen im inneren eine oder mehrere größere. Die Lösung könnte abweichen von der optimalen ein.
Sollte es geschrieben werden, in C, C++, Java, C#, IronPython, IronRuby oder einer anderen Sprache eine kann-bin aus .Net-code.
Fand ich diese C-Algorithmus http://www.diku.dk/hjemmesider/ansatte/pisinger/3dbpp.c , aber nicht drehen Sie den quader zu finden, die am besten passen. Ich bin ok mit, nicht drehen Sie den Kopf nach unten, aber die horizontale Drehung sollte möglich sein.
- Ist dieses Hausaufgaben?
- Sie behaupten, Sie sind auf der Suche für einen Algorithmus, aber Sie dann Liste Programmiersprachen. Sind Sie auf der Suche nach einem generischen Algorithmus oder eine implementation?
- Wollen Sie die optimale Lösung, oder eine, die ist ziemlich gut? Sind die quader alle die gleichen? Wenn Sie sagen, rotation, meinst du 90 Grad, oder einem beliebigen Winkel?
- Wenn er die Verpackung quader in einem quader, der sicherlich alles andere als ganzzahlige Vielfache von 90 Grad führt zu einer sub-optimalen Lösung.
- Natürlich,nicht! Nur weil ich erwähnt "Algorithmus" bedeutet nicht, dass es eine Hausaufgabe.
- nun, es sollte deterministisch sein, und eine gute Lösung ist genug ( wie ich gelesen habe werden die optimalen Lösungen sehr schwer zu finden) Die quader sind nicht alle gleich, und ich glaube, da Kinopiko sagte, jede Drehung, andere als die von 90 Grad wird nicht hilfreich sein.
- Sorry für die Unklarheit. Ich brauche eine konkrete Umsetzung, das kann ich auch direkt nennen. Ich fand eine Menge Papiere, die Lösung dieses Problems mittels ganzzahliger linearer Programmierung und genetische algorithmen. Aber ich dachte, für eine solche gemeinsame problem, es muss eine bereits existierende Implementierung.
- und Mouk, versuchen Sie, 5 einheitsquadrate in ein Quadrat von der Breite 2.708, dann sagen Sie mir wieder über die nicht-90-Grad-Winkel.
- Überzeugt. Dies ist ein Algorithmus? 90 Grad-Drehungen sind gerade genug für mich.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich geschrieben habe, eine Ungefähre Algorithmus, für den Fall, dass Sie beschreiben, d.h. 3D-rechteckige Felder, mit orthogonalen rotation, in C++.
Sie können die Ergebnisse finden und den Algorithmus in der Publikation:
http://www.cs.ukzn.ac.za/publications/erick_dube_507-034.pdf
Konvertierte ich wknechtel/3d-bin-pack C-code zu javascript. Kann leicht sein, Anschluss zu C#.
https://github.com/keremdemirer/3dbinpackingjs
Können Sie führen Sie beispielsweise Berechnungen von
index.html
- Datei und überprüfen Sie den generierten Bericht.pack1.js
- Datei enthält die app und Algorithmus. Ich bin mir nicht sicher, wie der Algorithmus funktioniert, aber die Ergebnisse sind befriedigend für die Verpackung von Berechnungen.Dieses problem ist NP-hart. Ihre beste Wette ist, eine Annäherung Algorithmus (bis ein Genie person löst jedes NP-problem, oder einen sehr glücklichen Kerl stolpert über eine Lösung.) Ich weiß nicht gut kennen approximation algorithmen für dieses problem leider.
Open-source-Java-Projekt mit Unterstützung der Größte Bereich Fit Erste: 3d-bin-container-Verpackung
Dreht sich in 2D oder 3D.
Die Allgemeine version des Problems ist, als in
"Algorithmen für Allgemeine und Roboter-stopfbare Variante (N) der Drei-Dimensionalen Bin Packing Problem: http://www.3dbinbox.com/Public/home/
Können Sie einen Blick auf meine Annäherung zu diesem Algorithmus.
Es ist eine intelligente first-fit-Algorithmus, basierend auf der maximalen Flächendeckung.
https://github.com/mohitesh07/3d-bin-packing
Es ist in Java geschrieben