Hello there

Hello there,

I have to create a bin packing algorithm in 3D but I don't know how/where to start.

I think that I will use C# (unity). Can someone send me good documentation cause I'm totally lost and I have only one week..

Thank you.

Other urls found in this thread:

en.wikipedia.org/wiki/Monte_Carlo_tree_search
sourceforge.net/projects/binpacking3dbpp/?source=directory
twitter.com/AnonBabble

en.wikipedia.org/wiki/Monte_Carlo_tree_search
Have fun.

Thank you

Sorry, I was making a joke. Those algorithms are currently famous for kicking a bunch of asses at Go, they're not at all ideal for this. I'm not nearly knowledgeable to actually make any actually good suggestions.

Although, I guess it'd be interesting to see how well MCTS actually does at box packing. I can't see any reason it wouldn't work.

>Monte_Carlo_tree_search

Shitty, as good as picking the best of random trials.

Oh okay, you got me there, I was reading like "wow, what can I do with that".

What is MCTS ?

Unity C# programmer here (8 years experience in Unity). What you want to use is the size of the bounding box Mesh.Bounds AABB. You should be able to construct the bin packaging with this. Take one of the existing bin packing C# algorithms and use the local scale instead of the lossy scale to scale a prefab cube. Should not take more then a couple of hours to whip up. Good luck!

Implement a regular bin packing algorithm and use whatever API you have to render the graphics to fill a 3D space?

Thanks a lot, I will go for that. Have a nice day bro.

BTW, where can you find a bin packing algorithm ?

sourceforge.net/projects/binpacking3dbpp/?source=directory

Oh okay, litteraly any algo, ty

Do yourself a favor and never use propritary garbage like C#, or shit like Unity.

You want to use C/C++ and OpenGL.

Why ?

Choosing C# ties you to Microsoft and their products and commercial whims, while C/C++ let's you choose editor/IDE, compiler, and environment to whatever your preferences and needs are. Besides, C is the basis for C# and dozens of languages for a reason; it's powerful, efficient, and terse. One may ask then "why are their so many clones of C?". The reason is with great power comes great responsibility, and C gives you a massive gun to shoot yourself in the foot with, especially with memory management and indexing overflows. Languages mimicking C always try to make it more forgiving in these regards by "managing code" (Microsoft TM), garbage collecting (Java), or being weakly typed (Python), but IMHO you NEED to get good at catching bugs and spotting errors to be a proficient programmer. C may give you a gray hair or two when learning it, but once mastered, little can come between you and your computer.

As for Unity, it's for people who can only glue code together, not develop their own. The practice of solving problems or implementing non-trivial solutions makes you better at programming in a number of ways: 1) You have more appreciation of time/space complexity in your program (how long does it take to run and how much space does it take to run). 2) You familiarize yourself with the guts of data structures and algorithms and their implementation, which allows you to more adeptly structure your code. 3) You never hit a wall if you are missing some critical functionality not included in the libraries. Truth be told, the only reason I can think of Unity being useful is for easy cross-platform I/O.

By learning C/C++ and OpenGL, you keep what you have to know to a minimum, but your possibilities are endless.

I'm a dying breed though. I like only developing in vim and compiling in gcc, no big honking 20GB IDE to make coding look like some goddamn mystic art. I like making my code efficient and small. And I like working close to the metal.

You cant compare c# to c/c++. They are meant for completely different things, c/c++ is for when you need total control, optimized code, extreme cross platform support. c# is for writing code where performance isn't THAT crucial, and you want to complete it within a reasonable time-frame. Someone with the same level of c/c++/c# knowledge would be able to write a program in about 1/4 of the time it would take in c/c#.

I see you also compared Python to c, which is a fucking scripting language. This is laterally figuratively comparing a hammer with a screw driver.

It's really got very little to do with microshaft and their bullshit

C++ lets you use pointers. End of discussion. Programming without using memory addresses is like bowling with the bumpers up

c# also has pointers inside unsafe blocks

The abbreviation of what you're reading about.

i seem to remember ur mum helping me with a very tricky packing problem, maybe ask her

>Programming without using memory addresses is like bowling with the bumpers up

Trying to decipher this...
>You always score but you won't get better at it?
>You look at other people throwing their ball in the gutter and laugh at how stupid they are for not using available methods to prevent it.

>I need help with an algorithm
>Oh btw I think I'll use language x
>>NO OP DON'T USE LANGUAGE X USE LANGUAGE Y LET ME GO ON A MULTIPOST TIRADE ABOUT WHY LANGUAGE X IS BAD BECAUSE I'M A FUCKING RETARDED CODE MONKEY THAT DOESN'T KNOW SHIT ABOUT HOW TO SOLVE YOUR ACTUAL PROBLEM BUT HEY I CAN DISCUSS THE MERITS OF WRITING FIZZBUZZ IN VARIOUS PROGRAMMING LANGUAGES UNTIL WE'RE ALL DEAD SO THAT I CAN FEEL USEFUL AND LIKE I KNOW SOMETHING INSTEAD OF ADMITTING TO MYSELF AND OTHERS THAT I'M A FUCKING RETARD AND THAT MY EDUCATION WAS WORTHLESS.

You always get a 300 but you'll never go pro

I'd liken it more to...
> Cheat at the test by copying off the smart kid's test, but never really understanding what you did (fast!)
> Struggle with studying, but come to master avoiding common anti-patterns, and ace that fucker (slow (at first)!)

> It's really got very little to do with microshaft and their bullshit
No, that really is part of the problem. Closed-source proprietary garbage that hogs resources. If something is buggy and black-boxed, good luck finding a work-around.

Story time. I work in a lab that just completed a 4 year contract that was almost torpedoed at the last second because things were developed on MATLAB on Windows 10. We are using UDP to serve data from our instruments as fast as possible. Using the MATLAB(tm) SocketsToolbox(R) or whatever horseshit they digitized, we ran into an issue where packets were being dropped by MATLAB, not the OS (which was problematic for several reasons, all blacked-boxed and propitiatory themselves for no reason but to push W10, thx Microdicks). How the fuck does an applications in 2017 drop packets? By only allocating a system-wide buffer of only 1Mb (that's potentially bits). When called if this can be changed, MATLAB says no, says UDP is unreliable by nature, and gives you a middle finger. Most likely because the asshole who wrote it got fired back in 2007 and no one knows how to fix is shitcode written in shitlanguage. Clearly this perturbs me.

The only way we could find a work around is by letting a Linux-box do all the "heavy" lifting because we could actually trust the software we were using to do the most basic things without the 10s of GBs worth of literally worthless crap on our Windows machine. None of this would have happened had we developed the code using C or C++ from the ground up on a *nix, which is ultimately what's going to have to happen anyway.

Deal with it.

>Closed-source proprietary garbage
C# is open source you retard