Advertentie | |
|
![]() |
|
Gewoon logisch nadenken: als eerste check kijk je na of het volume van de bakjes passen in een doos (min verpakkingsmateriaal!!); is dat niet het geval, dan moet je de order in meerdere stukjes splitten. Als je weet dat het volume van de bakjes in de doos of container of whatever past, kan je proberen om alle bakjes zo te stapelen dat het past.
Dat kan brute-force (gewoon alles uitproberen, een computer kan daar wel tegen), maar net iets slimmer is een backtracking-algoritme gebruiken. Dat houdt in dat je je programma laat proberen alles te stapelen, lukt het niet meer, dan haal je de laatste doos weer uit de stapeling, probeert in een andere oriëntatie tot het lukt of begint aan een nieuwe doos. Je weet daarmee niet of dat de meest optimale stapeling is; maar wel dat het lukt om die bakjes zo te versturen. Nu, het kan wel zijn dat het totaal volume van je bakjes kleiner is dan het volume van je doos of container: om het maar heel extreem te nemer: als je doos 50cm*50cm*50cm is en je product 1m*1cm*1cm; dan is het volume van je product wel kleiner, maar zal het nooit kunnen passen. Je moet als je die weg volgt, dus ook nog een weg inbouwen dat als er geen oplossing gevonden wordt, je een groot pak verplaatst naar een andere doos. Gelukkig zijn er al heel veel toepassingen die gaan rond gelijkaardige problemen; waarschijnlijk ook zelfs heel dicht bij wat je nodig hebt. Maar om maar een gedacht te geven, in 1D (jouw probleem is 3D), komt dat probleem neer op "ik heb een bepaalde hoeveelheid bestanden die ik op cd's of dvd's wil branden; hoe verdeel je de bestanden zodat elke cd zo vol mogelijk staat (dus zo weinig mogelijk cd's verbruikt". Daarvoor bestaat o.a. het programma Burn to the Brim (vrij vertaald is dat "tot de nok volbranden"). In 2D worden gelijkaardige dingen gedaan, om bv. zaagplannen te maken: stel je hebt een grote plaat MDF, metaal, spaanplaat, ... waaruit je enkele stukken wilt zagen (met elk een eigen vorm en eigen afmetingen), met natuurlijk zo weinig mogelijk verlies van materiaal. Dergelijke software houdt er bovendien ook rekening mee dat je door het zagen materiaal verliest (in jouw geval verpakking- en beschermingsmateriaal dat erbij komt). Een voorbeeld van dergelijke software is Saw Optimizer of CutLogic. Om je maar een idee te geven van wat er op de markt bestaat, waarnaar je kan zoeken om optimalisatie-algoritmes te vinden. Jouw geval is 3D, dus dat houdt in dat je zoekruimte heel wat groter is. In 1D is het relatief makkelijk te doen allemaal: beginnen met de grote blokken, afvullen met steeds kleinere blokken. In 2D en 3D gaat dat principe ook nog steeds wel op, maar in 1D kan je geen rotaties hebben (een bestand neemt steeds even veel plaats in). In 2D kan je nog draaien: in de ene richting past het misschien wel en in de andere niet. In 3D heb je niet 2 oriëntaties maar 6 mogelijke oriëntaties die je kan uitproberen. Moest ik het zelf moeten schrijven, ik zou proberen het algoritme dat in BTTB gebruikt wordt te schrijven voor 3D; gelukkig is BTTB open-source, zodat je steeds zelf eens een kijkje kan nemen hoe zij het doen. Als je wat rondkijkt op WikiPedia kan je ook interessante dingen vinden, maar sommige van die technieken zijn niet zo simpel (zonder wiskundige achtergrond). In ieder geval kan het je wel op weg helpen om bv. bestaande software te vinden of zelfs hulpsoftware te vinden voor je probleem (bv. in MATLAB bestaat er een optimalisatie-toolbox).
__________________
vaknar staden långsamt och jag är full igen (Kent - Columbus)
|
Advertentie |
|
![]() |
|
|
![]() |
||||
Forum | Topic | Reacties | Laatste bericht | |
Huiswerkvragen: Exacte vakken |
[WI] Vragen over berekening en het invoeren van breuk op de TI-84 JoshStudie | 1 | 10-08-2014 14:00 | |
Algemene schoolzaken |
Optellen berekening TI-84+ Aldur | 4 | 20-10-2009 19:33 | |
Huiswerkvragen: Exacte vakken |
[NA] Verplaatsing berekenen Chris-Verhoeckx | 7 | 28-10-2008 08:38 | |
Huiswerkvragen: Exacte vakken |
[NA] Krachten van resultante berekenen blaattttt | 2 | 19-01-2006 15:53 | |
Huiswerkvragen: Exacte vakken |
[wi] hoe kan ik extremen berekenen? pleaseee halilo | 13 | 30-01-2005 19:07 | |
Software & Hardware |
[VB] String berekenen Verwijderd | 2 | 24-02-2004 08:54 |