Archief - Vraagje of dit mogelijk is

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

PinkyNTheBrain

Legacy Member
Hey,

Voor school moet ik in groep een bepaald 'probleem' oplossen. Nu we zijn met een algoritme op de proppen gekomen. En we hebben ook iemand gevonden die het voor ons in Java wil programmeren. Alleen deze persoon is momenteel niet te bereiken.

Het komt er op neer dat we in een rek, allemaal dozen moeten plaatsen om een zo groot mogelijk volume te krijgen. Nu het algoritme dat we bedacht hebben is vrij eenvoudig met een paar assumpties:

Stap 1: Plaats doos 93 in het rek.
Stap 2: Neem de volgende doos in rij met de laagste density (Gewicht/Volume)
Stap 3: Plaats de doos bovenop eerder geplaatste dozen, zodanig dat de waste in de hoogte minimaal is.
Stap 4: Indien men de doos nergens bovenop kan plaatsen vanwege de afmetingenrestrictie, doorloop dan dezelfde methode voor de breedte. I.e. plaats de doos naast eerder geplaatste dozen zodat de waste geminimaliseerd wordt.
Stap 5: Indien de breedterestrictie ook wordt overschreden, doorloop dan dezelfde methode voor de diepte. I.e. plaats de doos achter eerder geplaatste dozen zodat de waste geminimaliseerd wordt.
Stap 6: Herhaal stap 2 t.e.m. stap 5 totdat de restricties qua afmetingen en gewicht overschreden worden voor het desbetreffende schap.


Dit alles onder de assumptie dat het eerste schap op niveau nul staat, het tweede schap wordt geplaatst op een hoogte van 1000 mm en het derde schap op een hoogte van 1700 mm.


Nu mijn vraag is: Is zoiets als dit programmeerbaar in Java? Of gaan we het voor onze contactpersoon duidelijker moeten maken bv. met behulp van wat wiskunde ofzo?

Ik ken absoluut niks van Java, maar we hadden toch graag al geweten of we nog meer werk hebben of niet :) er is ook een excel file met de afmetingen en gewicht van alle dozen.

Alvast bedankt!

Jerre Muesli

Legacy Member
Alles is mogelijk om te programmeren. Dit lijkt me ook erg doenbaar en zelfs niet heel erg moeilijk.

Cycloon

Legacy Member
nguaroth zei:
Niet waar, er zijn genoeg problemen die niet programmeerbaar zijn! (genaamd onbeslisbareproblemen)

Welja, dan valt het zo te programmeren dat het programma duidelijk maakt dat er geen oplossing mogelijk is.

Alles valt wel degelijk te programmeren, of alles valt op te lossen is een andere zaak.

Groovalicious

Legacy Member
Lijkt me goed te doen... Is heel simpel te implementeren als alle dozen dezelfde afmetingen hebben. Als dit niet het geval is, is het een stuk moeilijker en lijkt uw algoritme me niet echt optimaal :p

En de lengte, breedte, hoogte en draagkracht van uw schappen zijn ook gegeven?

PinkyNTheBrain

Legacy Member
Ja, alles is gegeven qua lengte, hoogte, breedte en gewicht ook de draagkracht van één schap is gegeven. De afmetingen van alle dozen verschillen inderdaad wel.

Dit algoritme is verre van optimaal inderdaad. Maar we hebben verschillende algoritmes die we gaan opstellen zodat we ook een lower & upper bound hebben.

De prof had ons ook gezegd dat we de optimale oplossing toch niet zouden vinden. We moesten gewoon een zo goed mogelijke oplossing vinden.

Dus jullie denken dat dit zeker te doen is? (ookal zijn alle afmetingen verschillend?)

nguaroth

Legacy Member
Cycloon zei:
Welja, dan valt het zo te programmeren dat het programma duidelijk maakt dat er geen oplossing mogelijk is.

Alles valt wel degelijk te programmeren, of alles valt op te lossen is een andere zaak.
Helemaal niet waar, er zijn ook problemen waar er compleet geen programma's voor bestaan, de niet recursief opsombare talen. Voor recursief opsombare talen kan je wel nog steeds een programma maken maar deze zal geen echte oplossing zijn.

Je kan al heel duidelijk zien dat er problemen zijn waarvoor geen programma's bestaan, aangezien er over aftelbaar oneindig veel problemen zijn en maar aftelbaar oneindig veel programma's

Cycloon

Legacy Member
Ok ja, voor enkele theoretische problemen kan je niet zomaar generieke code schrijven die altijd zijn werk zal doen. Voor elk probleem dat zich in de realiteit stelt kan je wel een oplossing bedenken. "Een oplossing" betekent niet "de beste oplossing".

nguaroth

Legacy Member
Cycloon zei:
Ok ja, voor enkele theoretische problemen kan je niet zomaar generieke code schrijven die altijd zijn werk zal doen. Voor elk probleem dat zich in de realiteit stelt kan je wel een oplossing bedenken. "Een oplossing" betekent niet "de beste oplossing".
Niet noodzakelijk theoretische problemen, er zijn genoeg praktische problemen die waarvoor je gewoon geen enkel programma voor kan schrijven.

En ik weet zeker dat er een groot verschil is tussen helemaal niet gaan en niet praktisch uitvoerbaar zijn.

Gurdt

Legacy Member
@Cycloon, waar gij haalt dat elk probleem uit de realiteit programmeerbaar is weet ik niet, maar doe die uitspraken niet als je niet weet waarover je het hebt.

De prof had ons ook gezegd dat we de optimale oplossing toch niet zouden vinden. We moesten gewoon een zo goed mogelijke oplossing vinden.
Bedoelt hij met de optimale oplossing, het meest optimale algoritme? Of gewoon de meest optimale verdeling van dozen? Die kan je namelijk vinden door elke mogelijke set van plaatsingen te genereren en daar de beste uit te kiezen, wel erg inefficiënt maar wel mogelijk :D

Cycloon

Legacy Member
Gurdt zei:
@Cycloon, waar gij haalt dat elk probleem uit de realiteit programmeerbaar is weet ik niet, maar doe die uitspraken niet als je niet weet waarover je het hebt.

Als je de oplossing van een realistisch probleem kan definiëren dan kan je altijd wel een programma schrijven die alle mogelijke oplossingen gaat aftoetsen. Vermits er zich in onze wereld nog steeds geen problemen hebben voorgedaan waarbij je de oplossing niet éénduidig kan beschrijven besluit ik dus dat er voor elk realistisch probleem een oplossing te programmeren valt.

Dat je nu over theoretische problemen gaat beginnen zie ik al van mijlenver aankomen, maar wees gerust, ik heb ook een academische opleiding gehad.

nguaroth

Legacy Member
Cycloon zei:
Als je de oplossing van een realistisch probleem kan definiëren dan kan je altijd wel een programma schrijven die alle mogelijke oplossingen gaat aftoetsen. Vermits er zich in onze wereld nog steeds geen problemen hebben voorgedaan waarbij je de oplossing niet éénduidig kan beschrijven besluit ik dus dat er voor elk realistisch probleem een oplossing te programmeren valt.

Dat je nu over theoretische problemen gaat beginnen zie ik al van mijlenver aankomen, maar wees gerust, ik heb ook een academische opleiding gehad.
Zoals ik al zijn er zijn genoeg problemen die niet theoretisch zijn en toch onbeslisbaar zijn, denk maar eens na over elk probleem dat gebruik maakt van zelf referentie etc,...

Gurdt

Legacy Member
Of dat gebruik maakt van creativiteit of persoonlijkheid. Je kan bv onmogelijk programmeren wat de beurs morgen zou gaan doen, namelijk omdat dat afhangt van variabelen die we momenteel niet kunnen omzetten naar een eenduidige definitie.

NeverwinterX

Legacy Member
Cycloon zei:
Als je de oplossing van een realistisch probleem kan definiëren dan kan je altijd wel een programma schrijven die alle mogelijke oplossingen gaat aftoetsen. Vermits er zich in onze wereld nog steeds geen problemen hebben voorgedaan waarbij je de oplossing niet éénduidig kan beschrijven besluit ik dus dat er voor elk realistisch probleem een oplossing te programmeren valt.

Dat je nu over theoretische problemen gaat beginnen zie ik al van mijlenver aankomen, maar wees gerust, ik heb ook een academische opleiding gehad.

Je 2 paragrafen zijn niet te combineren: met een academische opleiding wist je dat wat je zei nonsens was.
Schrijf mij een programma dat met als input om het even welke source code van een programma geschreven in een bepaalde Turing-complete programmeertaal (pakweg Java), teruggeeft of dat programma in een oneindige lus zal gaan of gewoon zal eindigen na een beperkte tijd.
Dat probleem is zeer realistisch want het zou zeer handig zijn moest Eclipse dat voor mij doen :p

voltje

Legacy Member
Da lijkt me heel eenvoudig te maken, en volgens mij recursief snel op te lossen ...
Natuurlijk kan ik mis zijn...

blackrabbit

Legacy Member
Zelfs niet :)
Hoe zou je dat immers doen? Je kan het niet gewoon uitvoeren, want dan weet je niet of je oneindig aan het loopen bent, of gewoon nog niet de eindconditie bereikt hebt.

En voor sommige condities/situaties is helemaal niet uit te maken of de stopconditie ooit bereikt wordt, terwijl die op het eerste zicht heel eenvoudig lijkt.

voltje

Legacy Member
Sorry, ik bedoel backtracking, wat ook recursief is...
Backtracking lijkt me hier wel vantoepassing...
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan