Optimalisatie bestellen van tabak met pakketgewicht beperking

Daar is het laatste woord nog niet over gesproken...
Plaats reactie
Gebruikersavatar
NoneNicer
Berichten: 1304
Lid geworden op: 23 jan 2016 22:46
Locatie: Lisse

Optimalisatie bestellen van tabak met pakketgewicht beperking

Bericht door NoneNicer »

Stel je wilt online tabak bestellen. Voor het verzenden zijn er limieten wat er in een verzending past, gegeven het gewicht van een pakket. Technisch gezien zijn er ook limieten aan het formaat van de verpakking, maar voor pijptabak kom je eerder aan de gewichtbeperking dan de formaatbeperking.
Voor een bepaald land zijn er 3 tarieven voor kleine verpakkingen bekend, afhankelijk van het gewicht:
22,50 voor 905 gram
34,50 voor 1360 gram
49,50 voor 1814 gram
Aangezien je de transportkosten wilt beperken, bestel je precies zoveel dat je zo goedkoop mogelijk het transport regelt.

Q: Enkele veelvoorkomende vragen hier rondom: moet ik niet rekening houden met een eventuele wisselkoers?
A: Nee, het gaat om de transportkosten per gram tabak. Dit staat dus los van wisselkoersen.

Q: Moet ik geen rekening houden met de verschillen in prijzen van tabak?
A: Nee, aangezien de te meten variabele (prestatie indicator) “prijs van transport per gram tabak” is, niet de “prijs per gram tabak”. Of je nu dus bulktabak koopt of een extreem dure vintage tabak, het gaat om tabak, verpakking van de tabak en de transportverpakking.

Q: Hoe heet deze techniek?
A: Dit soort optimalisaties valt in de categorie van Lineair Programmeren. Daarbij zoek je een oplossing welke een optimum biedt voor bijvoorbeeld het minimaliseren van kosten of maximaliseren van opbrengst met bekende beperkingen. Zie ook
https://en.wikipedia.org/wiki/Linear_programming

Hoe bereken je nu de optimale oplossingen? We splitsen het probleem naar drie individuele formules, een per prijs voor een gewichtscategorie. Dat betekent ook dat er 3 uitkomsten zijn.
Per formule maak je een ‘stelsel’ van vergelijkingen op:
  • de formule
    de spelregels
    de beperkingen
Je stelt een formule op voor de ‘opbrengst’: grammen tabak. Aangezien er diverse soorten verpakkingen tabak zijn, moeten we per soort een variabele toekennen. Er zijn blikken te koop van bijvoorbeeld 50g, 100g en 250g. In andere landen zijn soms ook 2 oz, 4 oz, 8oz en 16 oz te koop. Om het eenvoudig te maken kun je er 1 formule van maken en met de beperkingen er voor zorgen dat je de niet bestelbare varianten ‘uitschakelt’. We rekenen in grammen, dus we vertalen ounces naar grammen door te vermenigvuldigen met 28,349 gram per ounce.

Code: Selecteer alles

 Max Z = 50 x1 + 100 x2 + 250 x3 +  56,7 x4 + 113,4 x5 + 226,8 x6 + 453,6 x7
Nu weten we wat we willen maximaliseren.

Dan zijn er de spelregels, daarmee definieren we wat de ‘kosten’ zijn in relatie tot de opbrengst. De kosten zijn de beperkingen aan het gewicht wat je kan transporteren in een pakket. Een pakket met een blik van 50 gram weegt namelijk niet maar 50 gram, maar veel meer: 50g tabak + 60g blik+18g verpakking + eventuele vulmaterialen. Dus, als je maar 1 blikje van 50g bestelt, ‘kost’ dat 128g minimum. In dit geval is 128g minder dan de eerste staffel van 905 g, dus een valide uitkomst.
Verder zijn de gewichten van het type tabak dat je wilt aanschaffen belangrijk om te weten; in mijn geval gaat het om Escudo (50g), Frog Morton (100g), Full Virginia Flake bulk (250g), Quiet Nights (2oz) en Telegraph Hill (8oz). Van deze verpakkingen heb ik de totaalgewichten gewogen en gebruik dit in de beperkingen vergelijking.
We stellen nu dus de beperkingen op gewicht op:
116,6g Escudo + 157,4g Frog Morton + 290g Full Virginia Flake + 89,75g Quiet Nights + 310 Telegraph Hill = (905g limiet-120g doos met vulling)
Oftewel:
Subject to: 116,6 x1 + 157,5 x2 + 290 x3 + 89,75 x4 + 310 x6 = 785
Let op: x5 is niet gebruikt in deze vergelijking, omdat we geen 4oz verpakking meebestellen.
Dan zijn er nog mogelijkheden om bepaalde verpakkingen bijvoorbeeld niet mee te bestellen, en aan te geven dat er geen negatieve aantallen mogelijk zijn:

Code: Selecteer alles

x1,x2,x3,x4,x5,x6,x7 =>0
Stel dat je geen 8oz of 16oz verpakking wilt hebben, kun je dat ook aangeven:

Code: Selecteer alles

x5 = 0, x6 = 0
Stel dat je ALTIJD tenminste 1 blik Escudo wilt bestellen:

Code: Selecteer alles

x1  => 1
Het resultaat wordt het onderstaande stelsel vergelijkingen:

Code: Selecteer alles

Max Z = 50 x1 + 100 x2 + 250 x3 +  56,7 x4 + 113,4 x5 + 226,8 x6 + 453,6 x7
Subject to: 116,6 x1 + 157,5 x2 + 290* x3 + 89,75 x4 + 170,9**x5 +  310* x6 + 575* x7= 785
x1,x2,x3,x4,x5,x6,x7 =>0
* aanname, ik heb deze verpakking niet gemeten of in bezit gehad; voorzichtig geschat
** aanname, wetende dat een 100g blik even groot is als een 4oz blik aangezien er maar 13g verschil zit qua inhoud.
Deze vergelijkingen kun je nu gebruiken om voor je eigen behoefte uit te rekenen wat het optimum is van je bestelling voor jouw eigen behoeften. Let er op dat de blikken per soort anders kunnen wegen: de Escudo/Dunhill type blikken zijn zwaarder dan de 2oz blikken in materiaal. Blikken voor Erinmore of Capstan zijn ook anders dan de blikken van Samuel Gawith. Zorg er dus voor dat je netjes afweegt wat je nodig hebt en pas de formules daarmee aan.
Gebruik een online LP solver zoals hier voor je optimum:
http://www.zweigmedia.com/RealWorld/simplex.html
Een voorbeeld voor deze solver is:

Code: Selecteer alles

Maximize p = 50x + 100y + 56.7z + 226.8w subject to
116.6x + 157.5y + 89.75z + 310w <= 785
x >= 0
y >= 0
z >= 0
w >= 0
Optimal Solution: p = 574.316; x = 0, y = 0, z = 0, w = 2.53226 ***
*** Dit is niet helemaal optimaal, aangezien er geen gehele getallen uitkomen. Zet het geheel daarom op 1 significant digits.
Let er op dat er dan uitkomsten uit kunnen komen die niet helemaal kloppen: er komt dan uit dat 3 verpakkingen van 8oz besteld moeten worden. Dit past niet in de beperking van de verzending. Stel daarom dan die variabele op het maximum dat past (w=2) en kijk of er meer mogelijk is:

Code: Selecteer alles

Maximize p = 50x + 100y + 56.7z + 226.8w subject to
116.6x + 157.5y + 89.75z + 310w <= 785
x >= 0
y >= 0
z >= 0
w = 2
Optimal Solution: p = 600; x = 0, y = 1, z = 0, w = 2
Dit past: 785 >= 2*310 (620) + 1*157,5
785 > = 777,5g tabak, blikken en verpakking
Zodoende is een optimalisatie van de transportkosten voor 553,6 gram tabak bestaande uit
1 blik Frog Morton en 2 blikken Telegraph hill.
De kosten voor transport per gram liggen dan op 22,5/553,6 = 0,0406 ct/gram

Mocht je nou nog meer varianten en restricties invullen, dan krijg je een overzicht zoals de drie onderstaande tabellen:

Afbeelding
Afbeelding
Afbeelding
Let op: deze lijsten zijn niet uitputtend. Dit is getest met de 4N website en zij hebben wel een extra restrictie op formaat, zoals niet meer dan 7 verpakkingen van 2oz in de kleinste verpakkingsdoos.

Verder is het ook belangrijk om te weten dat je bijvoorbeeld sommige tabak in bulkverpakkingen kan kopen die geen blik zijn. Dit zijn dan ook weer andere varianten die je in de 'Subject to' vergelijking kan opstellen. Zo ben ik op een nieuw optimum gekomen met:
3x 50g, 3x 100g, 2x 2oz, 1x 1oz waarmee je dicht tegen het maximum wat in een verpakking van 34,50 komt.

Doe er je voordeel mee!

Gebruikersavatar
dinck
Berichten: 2880
Lid geworden op: 27 apr 2013 14:34
Locatie: rotterdam

Re: Optimalisatie bestellen van tabak met pakketgewicht beperking

Bericht door dinck »

Leuk rekenwerk en zeker nuttig. Toch heb ik daar nog een paar vragen cq opmerkingen over.

1. Als je echt wilt optimalizeren moet je dus alle bruto gewichten weten, niet alleen van de verpakking van de tabak (en eventuele extra bestelde materialen en goederen) maar ook van de zending als geheel (de doos en het vulmateriaal, en om helemaal te muggeziften ook van de verzendpapieren, labels etc.). Daarbij zal een grotere doos natuurlijk zwaarder zijn dan een kleine.
2. Hoe kom je achter de tarieven en de beperkingen? En hoe berekent een verzender dat? (Bij 4N worden de verzendkosten automatisch aangepast, zouden zij een database met alle brutogewichten hanteren? En is deze database accuraat?)

De verzendkosten van mijn vorige zending waren $ 65,35, toen kocht ik 6 blikjes 1.75oz, 3 blikjes 3.5oz en 14 blikjes 50g maar ook twee flesjes maple syrup, obsidian olie en wat borstels en ragers. Per gram tabak was dat $ 0,051 en dat vond ik wel goed genoeg.
__________________________
time is pulling us endlessly into the future

Gebruikersavatar
NoneNicer
Berichten: 1304
Lid geworden op: 23 jan 2016 22:46
Locatie: Lisse

Re: RE: Re: Optimalisatie bestellen van tabak met pakketgewicht beperking

Bericht door NoneNicer »

dinck schreef:Leuk rekenwerk en zeker nuttig. Toch heb ik daar nog een paar vragen cq opmerkingen over.

1. Als je echt wilt optimalizeren moet je dus alle bruto gewichten weten, niet alleen van de verpakking van de tabak (en eventuele extra bestelde materialen en goederen) maar ook van de zending als geheel (de doos en het vulmateriaal, en om helemaal te muggeziften ook van de verzendpapieren, labels etc.). Daarbij zal een grotere doos natuurlijk zwaarder zijn dan een kleine.
2. Hoe kom je achter de tarieven en de beperkingen? En hoe berekent een verzender dat? (Bij 4N worden de verzendkosten automatisch aangepast, zouden zij een database met alle brutogewichten hanteren? En is deze database accuraat?)

De verzendkosten van mijn vorige zending waren $ 65,35, toen kocht ik 6 blikjes 1.75oz, 3 blikjes 3.5oz en 14 blikjes 50g maar ook twee flesjes maple syrup, obsidian olie en wat borstels en ragers. Per gram tabak was dat $ 0,051 en dat vond ik wel goed genoeg.
Ja, de meeste verzendsoftware heeft een gewicht en afmeting module voor opslag en transport.
Daarmee worden de bruto gewichten aangehouden en verwerkt. Dat is de reden waarom de omslagpunten zo duideliijk zijn.

Je zou het ook kunnen brute-forcen, maar berekenen met bekende bruto gewichten is makkelijker.

Mooi tarief heb je er uit gehaald! Maar 1,75 oz is toch 50g? Qua zekerheid op gewichten: bij meer dan 10 blikken escudo gewogen kwam er maximaal 1,2g afwijking uit... Beetje marge kan dus geen kwaad.

Gebruikersavatar
dinck
Berichten: 2880
Lid geworden op: 27 apr 2013 14:34
Locatie: rotterdam

Re: Optimalisatie bestellen van tabak met pakketgewicht beperking

Bericht door dinck »

1.75oz is inderdaad ongeveer 50g (49,6 om preciezer te zijn, maar dat valt redelijk binnen normale marges), maar die Amerikaanse blikjes van 1.75oz en - vooral - 3.5oz waren zo afwijkend dat ik daarvan vooraf het brutogewicht niet kon weten. Als ik bestel heb ik in het verleden altijd tussentijds naar de verzendkosten in het totaalbedrag gekeken, als ik merkte dat ik in een hogere categorie zat waren er dan twee opties: of iets schrappen totdat ik weer in de lagere categorie zat of (flink) wat extra in de 'boodschappenkar' te plaatsen. Soms is dan de totale ordergrootte ook een factor die meespeelt, erg veel meer bestellen om de volgende categorie te optmaliseren kan gewoon een te grote uitgave in eens zijn. Ik weet nog niet wat handiger is, zo te werk gaan of zelf een database aanleggen met alle bekende en onbekende brutogewichten en dan het optimalisatieprogramma er op los te laten.

Eigenlijk was mijn voornaamste vraag die naar de verzendkosten van de verschillende gewichtscategoriën. Die $ 65,35 van mijn vorige zending kom ik bijvoorbeeld niet tegen in jouw overzichtje.
__________________________
time is pulling us endlessly into the future

Gebruikersavatar
NoneNicer
Berichten: 1304
Lid geworden op: 23 jan 2016 22:46
Locatie: Lisse

Re: RE: Re: Optimalisatie bestellen van tabak met pakketgewicht beperking

Bericht door NoneNicer »

dinck schreef:1.75oz is inderdaad ongeveer 50g (49,6 om preciezer te zijn, maar dat valt redelijk binnen normale marges), maar die Amerikaanse blikjes van 1.75oz en - vooral - 3.5oz waren zo afwijkend dat ik daarvan vooraf het brutogewicht niet kon weten. Als ik bestel heb ik in het verleden altijd tussentijds naar de verzendkosten in het totaalbedrag gekeken, als ik merkte dat ik in een hogere categorie zat waren er dan twee opties: of iets schrappen totdat ik weer in de lagere categorie zat of (flink) wat extra in de 'boodschappenkar' te plaatsen. Soms is dan de totale ordergrootte ook een factor die meespeelt, erg veel meer bestellen om de volgende categorie te optmaliseren kan gewoon een te grote uitgave in eens zijn. Ik weet nog niet wat handiger is, zo te werk gaan of zelf een database aanleggen met alle bekende en onbekende brutogewichten en dan het optimalisatieprogramma er op los te laten.

Eigenlijk was mijn voornaamste vraag die naar de verzendkosten van de verschillende gewichtscategoriën. Die $ 65,35 van mijn vorige zending kom ik bijvoorbeeld niet tegen in jouw overzichtje.
Als het niet teveel is wil ik enkele forum leden gaan vragen of ze hun verpakkingen willen wegen, ik zal met mijn eigen verzameling beginnen. Zo kunnen we allemaal profiteren als er iets een keer verzonden moet worden.

Tot 2kg zijn kleine pakketten die veel goedkoper zijn en minder administratie vergen. De max prijs daarvoor is nu wat de klasse is die de hoogste is in mijn overzicht.
Goed om te weten dat jouw categorie ook overkomt...

Plaats reactie