hschneid / xflp Goto Github PK
View Code? Open in Web Editor NEWxflp is a heuristic solver for container loading problems in 3D with real world constraints
License: MIT License
xflp is a heuristic solver for container loading problems in 3D with real world constraints
License: MIT License
Year must be set correctly
Check if all files have copyright text
When checking for projected positions, use xMap and yMap instead of iteration over all items.
Currently every search for possible insert positions, checks the bearing capacity of items. Therefore all lower items are checked.
If there would be an additional data structure, which remembers the still open bearing capacity of upper items, there check would be faster. Only a little bit more effort in adding an item, because the bearing of lower items must be checked.
This features should be available first only for AddContainer.
Hello,
Great job, thanks for sharing. it is likely that we will need to port it to PHP 8.2, do you think that the algo part will be complicated to re-write in PHP? Does this seem possible to you in this language, or do you think that certain difficulties will be difficult to solve?
thanks again
ContainerRemoveSpec.randomly add and remove items
with 1000 iterations it is breaking!
The positionMaps are deleted somehow
Dear author:
Thanks for your sharing! Are there any documents or paper speaking of your methods?
unable to build project as property osshrusername not found
Hello,
I want to load item from a single location and unload them on multiple locations in single container. Also the order would be the first unloading location item must be loaded last in the container. I want to group items according to unloading location. I have tried setting unloading location but some how all the co-ordinates are 0. Please help me resolve this.
Here is my code
XFLP xflp = new XFLP();
xflp.setTypeOfOptimization(XFLPOptType.BEST_FIXED_CONTAINER_PACKER);
xflp.getParameter().setLifoImportance(1);
xflp.addContainer().setLength(1350000).setWidth(2500).setHeight(3000).setMaxWeight(25000000);
xflp.addItem().setExternID("Packet1").setLength(13500).setWidth(2500).setHeight(3000).setWeight(25000).setUnloadingLocation("location 1");
xflp.addItem().setExternID("Packet2").setLength(13500).setWidth(2500).setHeight(3000).setWeight(25000).setUnloadingLocation("location 2");
xflp.addItem().setExternID("Packet3").setLength(13500).setWidth(2500).setHeight(3000).setWeight(25000).setUnloadingLocation("location 1");
xflp.executeLoadPlanning();
LPReport report = xflp.getReport();
Currently it happens, that positions are created multiple times. So the search for possible insert positions checks duplicate positions, which increases the effort.
During creation of new positions it shall be checked, if position is already in place. There is no easy hashing function, so ListMap would be needed. Something like 2 * x + 1 * y + -1 * z
Add this function only for AddContainer.
It may be helpful for me to read the code. Thank you.
"Hello,
I was wondering, does the project have any features to group boxes of the same 'type' to ensure that all these boxes are adjacent to each other in each container?
For each Item and Position find the next entry to be inserted.
Use decision criterias from real life: First stacking, then nivellating the height with neighbor items, then rest.
Search effort is increased! So first we need faster algorithm for checking.
Currently for every search of possible insert positions, all other items are checked, if there are collisions. This was reduced by using xMap, yMap and zMap.
Instead we would try to add the concept of spaces. A space is the room, where new items can be inserted. It has length, width and heigth. So it is very easy to check, it a certain item fits into such a space. Every position defines its own space.
When item is added, new positions are searched. In this case, the covered space of new item will be deleted and new spaces needs to be created. It is very easy to define new spaces from the sliced old space.
Only it is necessary to check, if there are other spaces, which will be cropped.
This feature shall be created only for AddContainer.
how to output which boxes in the container and the location of boxes in the container
For some reason on my machine tests are not run unless I add this
test {
useJUnitPlatform()
}
to the build.gradle
I've made a quick investigation and it seems that this is a quite common issue.
Am I missing something?
I tried on a clean project latests spock-core version available (2.4-M1-groovy-4.0) and it is not working w/o useJUnitPlatform instruction
Add the real world constraint "Axle Load" to XFLP.
It means, that even if the whole container (truck vessel) can load up to X kilogramm, the distribution of weight between multiple axle must be considered.
Currently the space checking can be done only, when load-items are available.
It would be cool to have it also for AddRemoveContainer.
But effort is high, because during remove it would be necessary to check spaces of every position, the uncovered positions and maybe the projected positions.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.