Bladwijzers    
Kans A en B    
nPr en nCr    
Ronde tafel    
Met herhaling    
Gemiddelde    
SD berekenen    
Z-score    
P-waarde    
Percentage    
Verschil in %    
Verhoudingen    
Korting    
Btw berekenen    
Winstmarge    
Snelheid    
Dichtheid    
Molariteit    
Molaire massa    
Wet van Ohm    
Schoenmaat    
Staartdeling    
Kgv berekenen    
Ggd berekenen    
Priemfactoren    
Diofantisch    
Gemengd getal    
Afronden    
Abc-formule    
Logaritme    
Poolvorm    
De Moivre    
Rc berekenen    
Evenredigheid    
3D-afstand    
Punt tot lijn    
Afstand GPS    
Kegelsneden    
Kruisproduct    
Determinant    
Sin cos tan    
Opp. driehoek    
Pythagoras    
Cirkelsector    
Omtrekshoek    
Inhoud kubus    
Inhoud balk    
Opp. cilinder    
Inhoud bol    
Inhoud bolkap    
Opp. bolkap    
Inhoud kegel    
Inhoud buis    
Opp. capsule    
Dagen tellen    
Uren vanaf nu    
Tijd optellen    
Tijdsverschil    
Eindwaarde    
ROI berekenen    
IRR berekenen    
Bbp berekenen    
CTR berekenen    
LTV berekenen    
CAC berekenen    
Churn rate    
A/B-test    
SEO-verkeer    
BMI berekenen    
BMR berekenen    
Vetpercentage    
Eiwit per dag    
Koolhydraten    
Vet berekenen    
Golfhandicap    
1RM berekenen    
Hitte-index    
Windchill    
Dauwpunt    
Talstelsels    
Downloadtijd    
Stroomkosten    
kWh naar euro    
Airco kosten    
Kosten kachel    
Gas of stroom    
Besparing led    
Maandbudget    
Laadkosten    
EV vs benzine    
Bandenmaat    
Thuisbatterij    
Aantal tegels    
Gevelopervlak    
Mortel mengen    
Zaagplan hout    
Vloer op rol    
Gordijnmaat    
Graszoden    
Betonblokken    
Bakstenen    
Vlonder    
Hellingbaan    
Voorboren    
Raam opmeten    
Ophanghoogte    
Afschot buis    
Kit berekenen    
Warmteverlies    
Verhuisdozen    
Opbergruimte    
   Toevoegen
Kansrekening en willekeurige getallen: rekenmachines
Kans A en B
Kans A en B
Kans terugrekenen
Kans terugrekenen
Herhaalde kans
Herhaalde kans
Stelling van Bayes
Stelling van Bayes
Verwachtingswaarde
Verwachtingswaarde
Binomiale kans
Binomiale kans
nPr en nCr
nPr en nCr
Ronde tafel
Ronde tafel
Met herhaling
Met herhaling
Willekeurig getal
Willekeurig getal
Gemiddelden en statistiek: rekenmachines
Gemiddelde
Gemiddelde
Modus en mediaan
Modus en mediaan
SD berekenen
SD berekenen
Kwartielen & IQR
Kwartielen & IQR
Frequentietabel
Frequentietabel
Correlatie (r)
Correlatie (r)
Normale verdeling
Normale verdeling
Z-score
Z-score
Interval (95%)
Interval (95%)
Steekproefgrootte
Steekproefgrootte
Vangst-hervangst
Vangst-hervangst
P-waarde
P-waarde
Procenten en verhoudingen: rekenmachines
Percentage
Percentage
Verandering in %
Verandering in %
Verschil in %
Verschil in %
Afwijking in %
Afwijking in %
Verhoudingen
Verhoudingen
Korting
Korting
Btw berekenen
Btw berekenen
Winstmarge
Winstmarge
Snelheid: rekenmachines
Snelheid
Snelheid
Dichtheid en concentratie: rekenmachines
Dichtheid
Dichtheid
Molariteit
Molariteit
Molaire massa
Molaire massa
Natuurkunde en elektriciteit: rekenmachines
Wet van Ohm
Wet van Ohm
Watt naar ampère
Watt naar ampère
Weerstand kleur
Weerstand kleur
Spanningsverlies
Spanningsverlies
Eenheden omrekenen: rekenmachines
Gewicht omrekenen
Gewicht omrekenen
Schoenmaat
Schoenmaat
Gehele getallen: rekenmachines
Staartdeling
Staartdeling
Kgv berekenen
Kgv berekenen
Ggd berekenen
Ggd berekenen
Negatieve getallen
Negatieve getallen
Priemfactoren
Priemfactoren
Diofantisch
Diofantisch
Modulo rekenen
Modulo rekenen
Delers berekenen
Delers berekenen
Romeinse cijfers
Romeinse cijfers
Breuken, decimalen en afronden: rekenmachines
Breuken rekenen
Breuken rekenen
Gemengd getal
Gemengd getal
Vereenvoudigen
Vereenvoudigen
Breuk omzetten
Breuk omzetten
Decimaal naar breuk
Decimaal naar breuk
Afronden
Afronden
Vergelijkingen en ongelijkheden: rekenmachines
Vergelijking (x)
Vergelijking (x)
Stelsel oplossen
Stelsel oplossen
Abc-formule
Abc-formule
Absolute waarde
Absolute waarde
Ongelijkheid x²
Ongelijkheid x²
Veeltermen: rekenmachines
Binomium Newton
Binomium Newton
Wortels: rekenmachines
Wortel herleiden
Wortel herleiden
Wortel berekenen
Wortel berekenen
Machten en logaritmen: rekenmachines
Machten berekenen
Machten berekenen
Logaritme
Logaritme
Aantal cijfers
Aantal cijfers
Wetensch. notatie
Wetensch. notatie
Rekenen ×10ⁿ
Rekenen ×10ⁿ
Halveringstijd
Halveringstijd
Complexe getallen: rekenmachines
Complexe getal
Complexe getal
Poolvorm
Poolvorm
De Moivre
De Moivre
Functies en grafieken: rekenmachines
Rc berekenen
Rc berekenen
Lineaire functie
Lineaire functie
Evenredigheid
Evenredigheid
y = ax² berekenen
y = ax² berekenen
Afstandsformule
Afstandsformule
3D-afstand
3D-afstand
Verdelingspunt
Verdelingspunt
Punt tot lijn
Punt tot lijn
Afstand GPS
Afstand GPS
Kwadraat afsplitsen
Kwadraat afsplitsen
Cirkelvergelijking
Cirkelvergelijking
Kegelsneden
Kegelsneden
Poolcoördinaten
Poolcoördinaten
Rijen: rekenmachines
Rekenkundige rij
Rekenkundige rij
Meetkundige rij
Meetkundige rij
Rij van Fibonacci
Rij van Fibonacci
Recursieve rij
Recursieve rij
Vectoren: rekenmachines
Vectoren berekenen
Vectoren berekenen
Kruisproduct
Kruisproduct
Matrices: rekenmachines
Matrix berekenen
Matrix berekenen
Determinant
Determinant
Inverse matrix
Inverse matrix
Vlakke meetkunde: rekenmachines
Sin cos tan
Sin cos tan
Graden ⇔ radialen
Graden ⇔ radialen
a sin θ + b cos θ
a sin θ + b cos θ
Driehoek berekenen
Driehoek berekenen
Opp. driehoek
Opp. driehoek
Rechthoekige driehoek
Rechthoekige driehoek
Pythagoras
Pythagoras
Hoeken veelhoek
Hoeken veelhoek
Gelijkvormigheid
Gelijkvormigheid
Evenwijdige lijnen
Evenwijdige lijnen
Oppervlakte rechthoek
Oppervlakte rechthoek
Parallellogram
Parallellogram
Oppervlakte trapezium
Oppervlakte trapezium
Cirkel berekenen
Cirkel berekenen
Cirkelsector
Cirkelsector
Omtrekshoek
Omtrekshoek
Oppervlakte ellips
Oppervlakte ellips
Ruimtemeetkunde: rekenmachines
Inhoud kubus
Inhoud kubus
Oppervlakte kubus
Oppervlakte kubus
Inhoud balk
Inhoud balk
Oppervlakte balk
Oppervlakte balk
Inhoud cilinder
Inhoud cilinder
Opp. cilinder
Opp. cilinder
Inhoud bol
Inhoud bol
Oppervlakte bol
Oppervlakte bol
Inhoud bolkap
Inhoud bolkap
Opp. bolkap
Opp. bolkap
Inhoud ellipsoïde
Inhoud ellipsoïde
Opp. ellipsoïde
Opp. ellipsoïde
Inhoud piramide
Inhoud piramide
Piramideoppervlak
Piramideoppervlak
Inhoud kegel
Inhoud kegel
Oppervlakte kegel
Oppervlakte kegel
Inhoud kegelstomp
Inhoud kegelstomp
Opp. kegelstomp
Opp. kegelstomp
Inhoud buis
Inhoud buis
Inhoud capsule
Inhoud capsule
Opp. capsule
Opp. capsule
Datum en tijd: rekenmachines
Leeftijd berekenen
Leeftijd berekenen
Dagen tellen
Dagen tellen
Datum berekenen
Datum berekenen
Uren vanaf nu
Uren vanaf nu
Dag van de week
Dag van de week
Tijd optellen
Tijd optellen
Tijdzones omrekenen
Tijdzones omrekenen
Werktijd berekenen
Werktijd berekenen
Tijdsverschil
Tijdsverschil
Urenregistratie
Urenregistratie
Financiën en economie: rekenmachines
Rente op rente
Rente op rente
Enkelvoudige rente
Enkelvoudige rente
Rente berekenen
Rente berekenen
TVM-rekenmachine
TVM-rekenmachine
Contante waarde
Contante waarde
Eindwaarde
Eindwaarde
ROI berekenen
ROI berekenen
IRR berekenen
IRR berekenen
Terugverdientijd
Terugverdientijd
Gem. rendement
Gem. rendement
Bbp berekenen
Bbp berekenen
Online marketing en advertentiecijfers: rekenmachines
CTR berekenen
CTR berekenen
Conversie (CVR)
Conversie (CVR)
CPC, CPM en CPA
CPC, CPM en CPA
ROAS berekenen
ROAS berekenen
Break-even-CPA
Break-even-CPA
LTV berekenen
LTV berekenen
CAC berekenen
CAC berekenen
Churn rate
Churn rate
A/B-test
A/B-test
A/B-steekproef
A/B-steekproef
SEO-verkeer
SEO-verkeer
Break-evenpunt
Break-evenpunt
Marge en opslag
Marge en opslag
CAGR berekenen
CAGR berekenen
Gezondheid en fitness: rekenmachines
BMI berekenen
BMI berekenen
Slaapcalculator
Slaapcalculator
Caloriebehoefte
Caloriebehoefte
BMR berekenen
BMR berekenen
TDEE berekenen
TDEE berekenen
Ideaal gewicht
Ideaal gewicht
Vetpercentage
Vetpercentage
Vetvrije massa
Vetvrije massa
Calorieverbruik
Calorieverbruik
Eiwit per dag
Eiwit per dag
Macro’s berekenen
Macro’s berekenen
Koolhydraten
Koolhydraten
Vet berekenen
Vet berekenen
Lengte voorspellen
Lengte voorspellen
Sport: rekenmachines
Golfhandicap
Golfhandicap
Tempo berekenen
Tempo berekenen
1RM berekenen
1RM berekenen
Streefhartslag
Streefhartslag
Weer: rekenmachines
Hitte-index
Hitte-index
Windchill
Windchill
Dauwpunt
Dauwpunt
Informatica: rekenmachines
Talstelsels
Talstelsels
Subnetcalculator
Subnetcalculator
Downloadtijd
Downloadtijd
Energie in huis en budget: rekenmachines
Stroomkosten
Stroomkosten
kWh naar euro
kWh naar euro
Kosten per jaar
Kosten per jaar
Airco vermogen
Airco vermogen
Airco kosten
Airco kosten
Kosten kachel
Kosten kachel
Gas of stroom
Gas of stroom
Besparing led
Besparing led
Salaris omrekenen
Salaris omrekenen
Maandbudget
Maandbudget
Auto: rekenmachines
Brandstofkosten
Brandstofkosten
Laadkosten
Laadkosten
EV vs benzine
EV vs benzine
Verbruik berekenen
Verbruik berekenen
Bandenmaat
Bandenmaat
Zonne-energie en batterijen: rekenmachines
Zonne-opbrengst
Zonne-opbrengst
Aantal panelen
Aantal panelen
Terugverdientijd
Terugverdientijd
Thuisbatterij
Thuisbatterij
Wonen en klussen: rekenmachines
Aantal tegels
Aantal tegels
Trap berekenen
Trap berekenen
Beton berekenen
Beton berekenen
Wandoppervlakte
Wandoppervlakte
Behang berekenen
Behang berekenen
Verf berekenen
Verf berekenen
Vloer berekenen
Vloer berekenen
Gevelopervlak
Gevelopervlak
Grind en split
Grind en split
Mortel mengen
Mortel mengen
Helling berekenen
Helling berekenen
Zaagplan hout
Zaagplan hout
Bebouwing en FSI
Bebouwing en FSI
Vloer op rol
Vloer op rol
Isolatie berekenen
Isolatie berekenen
Gordijnmaat
Gordijnmaat
Tv kijkafstand
Tv kijkafstand
Potgrond berekenen
Potgrond berekenen
Graszoden
Graszoden
Betonblokken
Betonblokken
Bakstenen
Bakstenen
Vlonder
Vlonder
Hellingbaan
Hellingbaan
Voorboren
Voorboren
Ventilatievoud
Ventilatievoud
Verf verdunnen
Verf verdunnen
Plint berekenen
Plint berekenen
Raam opmeten
Raam opmeten
Ophanghoogte
Ophanghoogte
Afschot buis
Afschot buis
Aantal schroeven
Aantal schroeven
Houtvolume (m³)
Houtvolume (m³)
Palen en panelen
Palen en panelen
Krimp van hout
Krimp van hout
Kit berekenen
Kit berekenen
Warmteverlies
Warmteverlies
Past het door?
Past het door?
Verhuisdozen
Verhuisdozen
Opbergruimte
Opbergruimte
Zaagplan platen
Zaagplan platen
Doorbuiging plank
Doorbuiging plank

Zaagplan maken (hoeveel balken en latten heb je nodig?)

Vul de standaardlengte, het zaagverlies en de lengte en het aantal van elk onderdeel in (maximaal 8 soorten; rijen zonder lengte worden genegeerd). De prijs per stuk mag leeg blijven.

Rij Naam (optioneel) Lengte (mm) Aantal
A
B
C
D
E
F
G
H
Vul alle lengtes in mm (millimeter) in. Een leeg zaagverlies geldt als 3 mm en een leeg aantal als 1. Heeft een onderdeel geen naam, dan heet het “Onderdeel A” tot “Onderdeel H”.
Resultaat en afbeelding
Vul links de standaardlengte en de lengte en het aantal van je onderdelen in en klik op “Berekenen”. Hier verschijnen het resultaat en het zaagplan.

Wat je op deze pagina kunt doen

  • Vul de standaardlengte van je hout (bijvoorbeeld 2,4 m of 3 m) in, plus de lengte en het aantal van elk onderdeel dat je nodig hebt (maximaal 8 soorten), en je ziet meteen hoeveel stuks hout je moet kopen
  • Het zaagverlies (de dikte van het zaagblad, standaard 3 mm) wordt meegerekend, dus je trapt niet in valkuilen zoals “vier stukken van 600 mm uit een lat van 2.400 mm” (in werkelijkheid passen er maar drie)
  • Het zaagplan werkt in de basis met de langste onderdelen eerst (First Fit Decreasing); zijn het er samen 60 of minder, dan zoekt de rekenmachine ook de combinatie met de minste stuks hout. Je ziet een zaagplan zoals “Stuk 1: Poot × 2, restant 394 mm” en een staafdiagram per stuk hout
  • Ook zie je het aantal als je elk soort onderdeel uit eigen stukken hout zaagt, zodat je ziet hoeveel stuks gecombineerd zagen bespaart. Door het resultaat te vergelijken met het theoretische minimum (de ondergrens) weet je of het zaagplan optimaal is (minder kan niet) of een benadering
  • Vul de prijs per stuk in (optioneel) en je krijgt ook de geschatte kosten en het bespaarde bedrag. Op deze pagina vind je bovendien een uitleg van de formules in gewone taal en formules om te kopiëren voor Excel, Google Spreadsheets en Python
Het zaagplan begint met de werkwijze “leg de langste onderdelen eerst, elk in het eerste stuk waar het in past” (First Fit Decreasing). Komt dat niet uit op het theoretische minimum en zijn het samen 60 onderdelen of minder, dan worden alle mogelijke combinaties doorzocht en gebruik je het zaagplan met de minste stuks. In het resultaat zie je bij “Controle van het zaagplan” of het zaagplan optimaal is of een benadering. Bij meer dan 60 onderdelen volgt het resultaat alleen de werkwijze en is het niet altijd het laagste aantal. Reken extra mee als je rond kwasten, nerf of kromgetrokken hout moet zagen, of als je van elk stuk de uiteinden afzaagt. Wil je stuks tellen uit een oppervlakte, zoals bij tegels of vloerdelen, gebruik dan de rekenmachines “Tegels berekenen” of “Vloerdelen berekenen”.

Waarvoor is deze berekening handig?

Boodschappen voor een zelfgemaakte tafel, plank of bank

Stel dat je een zaaglijst maakt voor een plantentafel met vier poten van 1.000 mm, twee zargen van 600 mm en twee regels van 400 mm uit stukken hout van 2,4 m? Koop je dan los voor elk onderdeel, dan heb je 4 stuks nodig. Met gecombineerd zagen met de langste onderdelen eerst heb je er maar 3 nodig (stuk 1: poten × 2, stuk 2: poten × 2, stuk 3: zargen × 2 + regels × 2, restant 388 mm). Dat scheelt bij een prijs van € 7,99 per stuk € 7,99.
Reken je het aantal uit voordat je naar de bouwmarkt gaat, dan hoef je niet nog een keer te gaan omdat je tekortkomt, en blijft er geen restant over waar je geen plek voor hebt. Laat je het hout in de winkel op maat zagen, dan kun je met het zaagplan alle zaaginstructies in één keer doorgeven.

Balken, regels en palen voor terras, schutting en erfafscheiding

Bij klussen met “veel onderdelen van dezelfde lengte”, zoals regels onder een terras of tussen schuttingpalen, tellen de zaagsneden op en beïnvloeden ze het aantal. Zaag je bijvoorbeeld regels van 600 mm uit stukken van 2.400 mm, dan passen er zonder zaagverlies precies vier. Met een zaagverlies van 3 mm is \(4 \times 600 + 3 \times 3 = 2.409\) mm, dus de vierde is 9 mm te lang en er passen maar 3 per stuk. Voor 40 regels heb je \(\lceil 40 \div 3 \rceil = 14\) stuks nodig, niet 10.
Maak je de lengte 3 mm korter, dus 597 mm in plaats van 600 mm, dan passen er weer 4 per stuk en kom je terug op 10 stuks. Door al bij het ontwerp te controleren “hoeveel van deze lengte passen er op een stuk?” kun je flink op materiaal besparen.

Buizen, leidingbuis, aluminiumprofielen en gordijnrails op maat zagen

Pvc-buizen, kabelbuizen, aluminiumprofielen, gordijnrails en alles wat “in een vaste lengte wordt verkocht en op maat wordt gezaagd” rekent met dezelfde formules als hout. Zaag je bijvoorbeeld vijf stukken van 1.500 mm, drie van 1.000 mm en twee van 400 mm uit een pvc-buis van 4 m (4.000 mm, zaagverlies 2 mm), dan heb je met gecombineerd zagen 4 stuks nodig (5 bij los kopen).
Het zaagverlies hangt echter af van het gereedschap. Het is bijna 0 bij een buizensnijder en ongeveer 1,5 mm bij een metaalzaag. Pas het zaagverlies dus aan op jouw gereedschap.

Materiaalplanning bij houthandels, meubelmakers en metaalbedrijven (rendement)

In een bedrijf zijn materialen een groot deel van de kosten, dus het aandeel van het materiaal dat product wordt, houd je bij als het rendement. Het “rendement” op deze pagina is de totale lengte van de onderdelen gedeeld door de totale lengte van het gekochte hout. Het komt dichter bij 100% naarmate de restanten en het zaagverlies kleiner worden.
Echte bedrijven delen honderden soorten onderdelen in over duizenden stukken materiaal. Daarvoor gebruiken ze speciale software die hetzelfde “bin-packingprobleem” oplost als deze pagina. First Fit Decreasing, de langste eerst, is in zulke software een standaardmethode voor een eerste plan.

Plinten, sierlijsten en andere afwerklatten voor het interieur

Plinten (onderaan de wand) en sierlijsten (bovenaan) worden bij de bouwmarkt vaak in standaardlengtes zoals 2,4 m verkocht en je zaagt ze op maat voor elke wand. Wil je bijvoorbeeld plinten van 2,4 m (2.400 mm) langs een kamer met wanden van 1.500 mm, 1.400 mm, 1.500 mm en 1.400 mm (zonder deuropeningen), dan passen 1.500 en 1.400 niet op één stuk. Zelfs met gecombineerd zagen heb je dus 4 stuks nodig (de ondergrens is 3, maar die is niet te halen).
Zodra één wand langer is dan de helft van de standaardlengte, kan het aantal niet lager. Zo kun je al vroeg bepalen of je voegen (verstekverbindingen of lassen) toestaat of een andere standaardlengte kiest.

Formules en figuren

Aantal onderdelen uit één stuk hout
Figuur
Wiskundige notatie (de gebruikelijke schrijfwijze)
\(m\) \(=\) \(\lfloor\) \((\) \(L\) \(+\) \(k\) \()\) \(\div\) \((\) \(l\) \(+\) \(k\) \()\) \(\rfloor\)
In woorden (symbolen vervangen door woorden)
④ \(m\): aantal onderdelen per stuk hout \(=\) \(\lfloor\) \((\) ① \(L\): standaardlengte \(+\) ② \(k\): zaagverlies \()\) \(\div\) \((\) ③ \(l\): lengte van het onderdeel \(+\) \(k\): zaagverlies \()\) \(\rfloor\)
De formule in woorden
① Neem de \(L\): standaardlengte
② , tel het \(k\): zaagverlies erbij op
③ , deel door de \(l\): lengte van het onderdeel plus het zaagverlies \(k\) en rond naar beneden af (het symbool \(\lfloor\ \rfloor\) betekent “naar beneden afronden”)
④ en je krijgt het \(m\): aantal onderdelen per stuk hout
Een eenvoudig voorbeeld
Als je poten van 1.000 mm zaagt uit een stuk hout van 2.400 mm (bijvoorbeeld een geschaafde regel van 44 × 44 mm) met een zaagverlies van 3 mm, is het aantal onderdelen per stuk
\(m\): aantal \(=\) \(\lfloor\) \((\) stuk (2.400 mm) \(+\) zaagverlies (3 mm) \()\) \(\div\) \((\) onderdeel (1.000 mm) \(+\) zaagverlies (3 mm) \()\) \(\rfloor\)
\((2.400 + 3) \div (1.000 + 3) = 2.403 \div 1.003 \approx 2{,}40\)
\(\lfloor 2{,}40 \rfloor = 2\)
Het belangrijkste idee
Waarom tel je het zaagverlies zowel bij het stuk hout als bij het onderdeel op? Als je \(n\) onderdelen uit één stuk zaagt, heb je maar \(n - 1\) zaagsneden nodig, niet \(n\) (het laatste onderdeel kan tot het einde van het stuk lopen, dus daar hoef je niet te zagen). Er passen dus \(n\) onderdelen als \(n \times l + (n - 1) \times k \le L\). Tel je aan beide kanten \(k\) op, dan krijg je \(n \times (l + k) \le L + k\). Je kunt dus gewoon elk onderdeel als \(l + k\) en het stuk als \(L + k\) behandelen en delen. Op de bouwplaats telt men ook vaak eenvoudiger: je telt voor elk onderdeel “lengte + zaagverlies” op en kijkt of het in het stuk past (met \(n\) zaagsneden). Deze rekenmachine gebruikt hierboven de telling met \(n - 1\) zaagsneden en kan dus één onderdeel meer laten zien dan die eenvoudiger telling. Zaag je van elk stuk de uiteinden af (je gebruikt de uiteinden niet), trek dat dan van de standaardlengte af voordat je die invult. Het zaagverlies negeren kan tot een verkeerd aantal leiden. Een onderdeel van 600 mm is bijvoorbeeld precies een vierde van een stuk van 2.400 mm. Zonder zaagverlies passen er dus vier. Met een zaagverlies van 3 mm is \(4 \times 600 + 3 \times 3 = 2.409 > 2.400\), dus het vierde onderdeel is 9 mm te lang en er passen maar \(\lfloor 2.403 \div 603 \rfloor = 3\) onderdelen.
Aantal stuks hout bij los kopen per onderdeel
Wiskundige notatie (de gebruikelijke schrijfwijze)
\(B_i\) \(=\) \(\lceil\) \(q_i\) \(\div\) \(m_i\) \(\rceil\)
\(B_{\text{los}}\) \(=\) \(B_1 + B_2 + \cdots\)
In woorden (symbolen vervangen door woorden)
③ \(B_i\): stuks hout voor alleen onderdeel \(i\) \(=\) \(\lceil\) ① \(q_i\): aantal van onderdeel \(i\) \(\div\) ② \(m_i\): aantal onderdelen per stuk hout \(\rceil\)
⑤ \(B_{\text{los}}\): totaal aantal stuks hout bij los kopen \(=\) ④ de som van \(B_1,\ B_2,\ \ldots\) van elk onderdeel
De formule in woorden
① Deel het \(q_i\): aantal van onderdeel \(i\)
② door het \(m_i\): aantal onderdelen per stuk hout en rond naar boven af (het symbool \(\lceil\ \rceil\) betekent “naar boven afronden”)
③ en je krijgt de \(B_i\): stuks hout voor alleen onderdeel \(i\)
④ Daarna is de som van \(B_1,\ B_2,\ \ldots\) van elk onderdeel het
⑤ \(B_{\text{los}}\): totaal aantal stuks hout bij los kopen
Een eenvoudig voorbeeld
Voor een plantentafel met vier poten van 1.000 mm, twee zargen van 600 mm en twee regels van 400 mm, gezaagd uit stukken van 2.400 mm (zaagverlies 3 mm), is het aantal stuks hout als elk soort onderdeel zijn eigen stukken krijgt
\(\text{Poten: } \lceil 4 \div 2 \rceil = 2,\quad \text{Zargen: } \lceil 2 \div 3 \rceil = 1,\quad \text{Regels: } \lceil 2 \div 5 \rceil = 1\)
\(B_{\text{los}} = 2 + 1 + 1 = 4\)
Het belangrijkste idee
Koop je voor elk soort onderdeel apart hout, “hout voor de poten” en “hout voor de zargen”, dan is dit de eenvoudige telling. Er passen twee poten op één stuk, dus voor vier poten heb je 2 stuks nodig. Er passen drie zargen op een stuk, dus voor twee zargen heb je 1 stuk nodig (met ruimte voor nog een). Er passen vijf regels op een stuk, dus voor twee regels heb je 1 stuk nodig (met ruimte voor nog drie). Samen is dat 4 stuks. Deze methode is makkelijk te overzien en het zagen is eenvoudig, maar bij de stukken voor de zargen en de regels blijft veel over. Met “gecombineerd zagen”, hierna, heb je minder stuks nodig doordat je andere onderdelen in die restanten laat passen.
Gecombineerd zagen (langste onderdelen eerst) en restanten
Figuur
Wiskundige notatie (de gebruikelijke schrijfwijze)
\(w\) \(=\) \(L\) \(-\) \(l_1 + l_2 + \cdots + l_n\) \(-\) \(n\) \(\times\) \(k\)
In woorden (symbolen vervangen door woorden)
⑤ \(w\): restant van één stuk hout \(=\) ① \(L\): standaardlengte \(-\) ② de totale lengte \(l_1,\ l_2,\ \ldots,\ l_n\) van de onderdelen die je ervan zaagt \(-\) ③ \(n\): aantal onderdelen uit dit stuk \(\times\) ④ \(k\): zaagverlies
De formule in woorden
① Trek van de \(L\): standaardlengte af
② de totale lengte \(l_1,\ l_2,\ \ldots,\ l_n\) van de onderdelen die je ervan zaagt , en trek ook
③ \(n\): aantal onderdelen uit dit stuk keer
④ \(k\): zaagverlies (het hout dat bij elke zaagsnede verdwijnt) af
⑤ zodat je het \(w\): restant van één stuk hout krijgt (komt dit onder 0 uit, dan loopt het laatste onderdeel precies tot het einde van het stuk en is het restant 0)
Een eenvoudig voorbeeld
Met gecombineerd zagen voor het voorbeeld hierboven (vier poten van 1.000 mm, twee zargen van 600 mm, twee regels van 400 mm) uit stukken van 2.400 mm krijgt stuk 3 twee zargen en twee regels. Het restant daarvan is
\(w\): restant \(=\) stuk (2.400 mm) \(-\) som van de onderdelen (600 + 600 + 400 + 400 mm) \(-\) aantal (4) \(\times\) zaagverlies (3 mm)
\(2.400 - (600 + 600 + 400 + 400) - 4 \times 3 = 2.400 - 2.000 - 12 = 388\)
Het belangrijkste idee
Het zaagplan voor gecombineerd zagen volgt deze werkwijze in drie stappen (First Fit Decreasing, “langste eerst, in de eerste plek waar het past”): (1) Zet alle onderdelen van lang naar kort op een rij (onderdelen van dezelfde lengte blijven in de volgorde van de rijen die je invulde). (2) Begin bij het eerste onderdeel en leg het in het eerste stuk hout waarvan de resterende lengte minstens zo groot is als het onderdeel. De resterende lengte van dat stuk wordt dan “lengte van het onderdeel + zaagverlies” korter. (3) Past het in geen enkel stuk, voeg dan een nieuw stuk toe en leg het daar. In het voorbeeld zijn de onderdelen van lang naar kort 1.000, 1.000, 1.000, 1.000, 600, 600, 400, 400. Stuk 1 krijgt twee keer 1.000 (er blijft 394 mm over, dus een derde 1.000 past niet en ook een 400 past niet), stuk 2 krijgt twee keer 1.000 en stuk 3 krijgt twee keer 600. Daarna blijft 1.194 mm over, dus beide 400-stukken passen en blijft 388 mm over. In totaal zijn dat 3 stuks, één minder dan de 4 stuks bij los kopen. Deze werkwijze is eenvoudig en geeft goede resultaten, maar vindt niet altijd het laagste aantal. Zaag je bijvoorbeeld vier onderdelen van 900 mm, twee van 800 mm en twee van 600 mm uit stukken van 2.400 mm (zaagverlies 3 mm), dan heb je met deze werkwijze 4 stuks nodig. Met de combinatie “900 + 800 + 600” op twee stuks en “900 + 900” op één stuk kom je echter uit op 3. De werkwijze met de langste eerst legt eerst twee keer 900 op elk stuk en mist daardoor deze combinatie. Wiskundig is bewezen dat deze werkwijze hoogstens ongeveer 1,22 keer het minimum plus 1 stuk gebruikt. Komt het aantal overeen met het “theoretische minimum” hieronder, dan weet je zeker dat het het laagste aantal is. Daarom zoekt deze rekenmachine, als de werkwijze het theoretische minimum niet haalt en het samen 60 onderdelen of minder zijn, “elke manier om een stuk te vullen waarin altijd het langste resterende onderdeel zit” (een branch-and-bound-zoekmethode) naar het zaagplan met de minste stuks en gebruikt dat. Ook het voorbeeld met 900, 800 en 600 mm krijgt dankzij het zoeken een zaagplan met 3 stuks. Of het zoeken is afgerond, lees je bij “Controle van het zaagplan” in het resultaat. Bij meer dan 60 onderdelen in totaal is het resultaat de benadering van de werkwijze.
Theoretisch minimum (ondergrens)
Wiskundige notatie (de gebruikelijke schrijfwijze)
\(B_{\min}\) \(=\) \(\lceil\) \(\sum_i q_i\,(l_i + k)\) \(\div\) \((L + k)\) \(\rceil\)
In woorden (symbolen vervangen door woorden)
③ \(B_{\min}\): theoretisch minimum \(=\) \(\lceil\) ① het totaal van (lengte + zaagverlies) van alle onderdelen, \(\sum_i q_i\,(l_i + k)\) \(\div\) ② standaardlengte + zaagverlies, \(L + k\) \(\rceil\)
De formule in woorden
① Deel het totaal van (lengte + zaagverlies) van alle onderdelen, \(\sum_i q_i\,(l_i + k)\)
② door standaardlengte + zaagverlies, \(L + k\) en rond naar boven af
③ en je krijgt het \(B_{\min}\): theoretisch minimum
Een eenvoudig voorbeeld
Voor het voorbeeld hierboven (vier poten van 1.000 mm, twee zargen van 600 mm, twee regels van 400 mm, stukken van 2.400 mm, zaagverlies 3 mm) is het theoretische minimum
\(4 \times (1.000 + 3) + 2 \times (600 + 3) + 2 \times (400 + 3) = 4.012 + 1.206 + 806 = 6.024\)
\(6.024 \div (2.400 + 3) = 6.024 \div 2.403 \approx 2{,}51\)
\(\lceil 2{,}51 \rceil = 3\)
Het belangrijkste idee
Zoals de formule voor het aantal onderdelen per stuk liet zien, geldt voor de onderdelen op één stuk: “het totaal van (lengte + zaagverlies) van de onderdelen is hoogstens standaardlengte + zaagverlies”. Hoe slim je ook indeelt, je komt nooit met minder stuks uit dan het totaal van (lengte + zaagverlies) van alle onderdelen gedeeld door \(L + k\). Dit is de ondergrens (een waarde waar je niet onder kunt komen). Komt gecombineerd zagen uit op deze ondergrens, dan weet je zeker dat het het laagste mogelijke aantal is (optimaal). Het voorbeeld gebruikt 3 stuks, gelijk aan de ondergrens van 3, dus het is optimaal. Komen ze niet overeen, dan kan een andere combinatie misschien met minder stuks, maar de ondergrens betekent alleen “niet minder dan dit” en is dus niet altijd te halen. Zaag je bijvoorbeeld drie onderdelen van 1.250 mm uit stukken van 2.400 mm (zaagverlies 3 mm), dan is de ondergrens \(\lceil 3.759 \div 2.403 \rceil = 2\), maar er past maar één onderdeel van 1.250 mm op een stuk, dus elke combinatie heeft 3 stuks nodig. Deze rekenmachine doorzoekt combinaties bij 60 onderdelen of minder. Een aantal dat is gemarkeerd als “bevestigd door te doorzoeken” is dus het laagste, ook als het boven de ondergrens ligt.
Bespaarde stuks hout en geschatte kosten
Wiskundige notatie (de gebruikelijke schrijfwijze)
\(\Delta\) \(=\) \(B_{\text{los}}\) \(-\) \(B\)
\(T\) \(=\) \(u\) \(\times\) \(B\)
In woorden (symbolen vervangen door woorden)
③ \(\Delta\): bespaarde stuks hout \(=\) ① \(B_{\text{los}}\): stuks hout bij los kopen \(-\) ② \(B\): stuks hout bij gecombineerd zagen
⑤ \(T\): geschatte kosten \(=\) ④ \(u\): prijs per stuk \(\times\) \(B\): stuks hout bij gecombineerd zagen
De formule in woorden
① Trek van de \(B_{\text{los}}\): stuks hout bij los kopen af
② \(B\): stuks hout bij gecombineerd zagen ,
③ zodat je de \(\Delta\): bespaarde stuks hout krijgt,
④ en vermenigvuldig de \(u\): prijs per stuk met het aantal stuks bij gecombineerd zagen \(B\)
⑤ zodat je de \(T\): geschatte kosten krijgt
Een eenvoudig voorbeeld
Kost in het voorbeeld hierboven een stuk van 2,4 m € 7,99 (zoals een geschaafde regel van 44 × 44 mm bij een bouwmarkt), dan zijn de bespaarde stuks en de kosten
\(\Delta = 4 - 3 = 1\)
\(T = 7{,}99 \times 3 = 23{,}97\)
\(7{,}99 \times 4 - 23{,}97 = 7{,}99\)
Het belangrijkste idee
De kosten bij los kopen zijn \(u \times B_{\text{los}}\) en bij gecombineerd zagen \(u \times B\), dus het verschil is \(u \times \Delta\). Vul de prijs van één stuk in. Wordt het hout per strekkende meter verkocht in plaats van per stuk, reken die prijs dan eerst om naar een prijs per stuk. De kosten gelden alleen voor het hout, niet voor zaagservice, bezorging of afwerking.
Hoeveel onderdelen je uit een stuk hout kunt zagen, bereken je in de basis met “(standaardlengte + zaagverlies) ÷ (lengte onderdeel + zaagverlies)”, naar beneden afgerond. Heb je meerdere soorten onderdelen, dan verlaagt gecombineerd zagen het aantal stuks. Je legt de langste onderdelen eerst, elk in het eerste stuk waar het in past. Komt dat aantal overeen met het “theoretische minimum”, dan kan het niet lager. Zo niet, dan doorzoekt de rekenmachine combinaties (bij 60 onderdelen of minder) om het zaagplan met de minste stuks te vinden.

Symbolen en begrippen

Symbolen

\(L\) el De standaardlengte (mm), de lengte van één stuk hout dat je koopt. Het is de eerste letter van “lengte”, als hoofdletter om het te onderscheiden van de lengte van het onderdeel \(l\).
\(l\), \(l_i\) el, el index i De lengte van een onderdeel (een stuk dat je wilt zagen, in mm). De \(i\) in \(l_i\) is het nummer van de \(i\)-de soort onderdeel (er zijn meestal meerdere soorten, zoals poten, zargen en regels).
\(k\) ka Het zaagverlies (de dikte van het zaagblad, in mm). Elke zaagsnede haalt zoveel hout weg. Het symbool \(k\) komt van het Engelse “kerf”, de zaagsnede.
\(m\), \(m_i\) em, em index i Het aantal onderdelen dat je uit één stuk hout kunt zagen. Je vindt het met \(m = \lfloor (L + k) \div (l + k) \rfloor\).
\(q_i\) kuu index i Het benodigde aantal van onderdeel \(i\). Het symbool \(q\) komt van het Engelse “quantity” (hoeveelheid).
\(B_i\), \(B_{\text{los}}\) bee index i, bee index los \(B_i\) is het aantal stuks hout dat je nodig hebt voor alleen onderdeel \(i\) (\(\lceil q_i \div m_i \rceil\)). \(B_{\text{los}}\) is het totaal als je per onderdeel los koopt (de som van de \(B_i\)).
\(B\) bee Het aantal stuks hout dat je nodig hebt bij gecombineerd zagen (de langste onderdelen eerst). Dit is de belangrijkste waarde op deze pagina.
\(n\) en Het aantal onderdelen dat je uit één bepaald stuk zaagt. Het symbool \(n\) komt van “number” (aantal). In de formule voor het restant bepaalt het hoeveel keer je het zaagverlies aftrekt.
\(w\) wee Het restant van één stuk hout (de lengte die ongebruikt overblijft, in mm). Het symbool \(w\) komt van het Engelse “waste” (afval).
\(B_{\min}\) bee min Het theoretische minimum aantal stuks hout (ondergrens). Je vindt het met \(\lceil \sum_i q_i (l_i + k) \div (L + k) \rceil\). Is het aantal \(B\) bij gecombineerd zagen er gelijk aan, dan is het zaagplan optimaal. “min” is de afkorting van minimum.
\(\Delta\) delta Het aantal bespaarde stuks hout, \(B_{\text{los}} - B\). De Griekse letter delta wordt vaak gebruikt voor een verschil (de letter die overeenkomt met de d van “differentie”).
\(u\) uu De prijs per stuk hout (€). Het symbool \(u\) komt van het Engelse “unit price” (prijs per eenheid).
\(T\) tee De geschatte kosten (€). Het symbool \(T\) komt van “totaal”. Alleen het hout zelf, zonder zaagkosten en bezorging.
\(\lfloor x \rfloor\) x naar beneden afgerond Het symbool voor naar beneden afronden op een geheel getal. (Voorbeeld: \(\lfloor 2{,}40 \rfloor = 2\), \(\lfloor 3 \rfloor = 3\).) Wat niet meer past, tel je niet mee, dus voor het aantal onderdelen gebruik je dit symbool.
\(\lceil x \rceil\) x naar boven afgerond Het symbool voor naar boven afronden op een geheel getal. (Voorbeeld: \(\lceil 2{,}51 \rceil = 3\), \(\lceil 2 \rceil = 2\).) Voor wat je tekortkomt koop je er één bij, dus voor het aantal stuks hout dat je koopt gebruik je dit symbool.
\(\sum\) sigma Het symbool voor “tel alles op”. \(\sum_i q_i (l_i + k)\) betekent dat je \(q_i (l_i + k)\) voor elke soort onderdeel \(i\) berekent en alles optelt. Het is de Griekse letter sigma, die overeenkomt met de S van “som”.

Begrippen

standaardlengte De standaardlengte waarin hout, staal, buizen enzovoort worden verkocht. Bouwmarkten in Nederland (zoals GAMMA, Karwei en Praxis) verkopen bouwhout zoals geschaafde vuren regels en balken vaak in stappen van 30 cm, bijvoorbeeld 2,1 m, 2,4 m, 2,7 m, 3 m, 3,6 m en 3,9 m. Houthandels leveren vaak ook andere lengtes of zagen op maat.
zaagverlies De breedte van het hout dat het zaagblad bij elke zaagsnede wegzaagt. Een gewoon cirkelzaagblad is ongeveer 1,5 tot 3 mm dik. Weet je hoe dik jouw zaagblad is (het staat vaak op het blad), vul dan die waarde in. Het telt bij elke zaagsnede op en weegt dus het zwaarst als je veel korte stukken zaagt.
zaaglijst Een lijst van de onderdelen die je wilt zagen met hun maten, plus het plan voor hoe je ze uit je hout zaagt (het zaagplan). Deze pagina behandelt het eendimensionale geval, alleen op lengte. Een tweedimensionaal zaagplan uit platen multiplex valt hier niet onder.
restant Het materiaal dat overblijft nadat de onderdelen zijn gezaagd, het korte stuk aan het eind van een stuk hout. Hoe minder restanten, hoe minder materiaal je verspilt en hoe hoger het rendement.
gecombineerd zagen Verschillende soorten onderdelen uit hetzelfde stuk hout zagen en andere onderdelen in het restant laten passen, in plaats van aparte stukken te gebruiken voor “poten” en “zargen”. Daarmee heb je vaak minder stuks nodig dan als je per soort onderdeel koopt. Het zaagplan op deze pagina laat zien hoe.
First Fit Decreasing (FFD) Een werkwijze die items “van groot naar klein (Decreasing) legt op de eerste plek waar ze passen (First Fit)”. Het is een klassieke benadering voor het bin-packingprobleem en wordt op deze pagina gebruikt voor gecombineerd zagen. De werkwijze is eenvoudig en geeft goede resultaten (bewezen binnen ongeveer 1,22 keer het minimum plus 1), maar vindt niet altijd het minimum. Haalt ze de ondergrens niet, dan zoekt deze rekenmachine met branch-and-bound naar het laagste aantal stuks (bij 60 onderdelen of minder).
bin-packingprobleem Het probleem om items van verschillende groottes in zo min mogelijk bakken (bins) van een vaste grootte te stoppen. Onderdelen uit hout zagen (stukken hout = bakken, onderdelen = items) is de eendimensionale versie. Bij veel items groeit het werk om de beste indeling te vinden razendsnel, dus in de praktijk gebruikt men vaak standaardbenaderingen zoals FFD.
branch-and-bound Een zoekmethode die combinaties via vertakkingen uitprobeert en elke tak afkapt (bound) die het beste resultaat tot nu toe niet kan verslaan. Zo vind je de optimale oplossing zonder alles uit te proberen. Op deze pagina is elke manier om één stuk te vullen een tak. Takken waarbij “gebruikte stuks + de ondergrens voor de resterende onderdelen” minstens gelijk is aan het beste resultaat tot nu toe, worden afgekapt.
rendement Het aandeel van het materiaal dat in de afgewerkte onderdelen terechtkomt. Op deze pagina is het “totale lengte van de onderdelen ÷ totale lengte van het gekochte hout”. Het komt dichter bij 100% naarmate de restanten en het zaagverlies kleiner worden.
ondergrens Een waarde waar je “hoe slim je ook bent” niet onder kunt komen. Het theoretische minimum op deze pagina is een ondergrens. Komt het zaagplan daarmee overeen, dan is het zaagplan optimaal. Ook als dat niet zo is, is de ondergrens niet altijd te halen (drie onderdelen van 1.250 mm uit stukken van 2.400 mm geven een ondergrens van 2, maar je hebt er 3 nodig).
optimale oplossing Het beste antwoord van alle mogelijke manieren. Op deze pagina is het “het zaagplan met de minste stuks”. Komt gecombineerd zagen overeen met de ondergrens, dan is het optimaal. Ook als dat niet zo is, is het optimaal als het doorzoeken van alle combinaties laat zien dat het niet met minder stuks kan.
geschaafde maat De maat van geschaafd hout is iets kleiner dan van het ruwe hout waaruit het is gemaakt. Een geschaafde regel van 44 × 44 mm heet zo omdat het hout na het zagen is geschaafd (glad gemaakt). De lengte verkopen bouwmarkten daarentegen volledig, dus een stuk van 2,4 m is ook echt 2.400 mm lang.
regel Een (vuren) houten lat met een vaste doorsnede, zoals 38 × 89 mm of 44 × 44 mm, die je bij de bouwmarkt in vaste lengtes kunt kopen. Je gebruikt zulke regels vaak voor wanden, raamwerken en meubels. Je vindt ze geschaafd en ruw, bijvoorbeeld als geschaafde regel van 44 × 44 mm.

Handig om vooraf te weten

Dit helpt je om de berekening op deze pagina te gebruiken met echt begrip, en niet alleen door op de knop te drukken.

Delen met rest (groep 5-6, 8-10 jaar)
  • Weten dat bij een deling zoals “2.400 ÷ 1.000 = 2 rest 400” het quotiënt aangeeft hoeveel stuks je krijgt en de rest hoeveel er overblijft
Afronden (groep 5-6, 8-10 jaar)
  • Het verschil weten tussen naar beneden afronden, naar boven afronden en afronden op het dichtstbijzijnde getal
  • In je eigen woorden kunnen uitleggen waarom je het aantal onderdelen dat je kunt zagen naar beneden afrondt, maar het aantal stuks dat je koopt naar boven
Delen met decimale getallen (groep 7-8, 10-12 jaar)
  • Een gevoel hebben voor de grootte van een quotiënt zoals \(2.403 \div 1.003 \approx 2{,}40\) (de rekenmachine mag het rekenwerk doen)
Formules met letters en ongelijkheden (klas 1-2, 12-14 jaar)
  • Een voorwaarde kunnen opschrijven met letters, zoals “er passen \(n\) onderdelen als \(n \times l + (n-1) \times k \le L\)”
  • Weten dat de ongelijkheid blijft kloppen als je aan beide kanten hetzelfde getal optelt (de stap naar \(n(l + k) \le L + k\))
Verhoudingen en procenten (groep 7, 10-11 jaar)
  • Een verhouding kunnen weergeven als percentage, zoals bij het rendement “totale lengte van de onderdelen ÷ totale lengte van het hout × 100”

Berekenen met Excel

Kopieer de hele tabel hieronder en plak die in cel A1 van Excel. Het werkt direct.
Tabel voor het aantal onderdelen per stuk hout
Standaardlengte (mm) 2400
Lengte van het onderdeel (mm) 1000
Zaagverlies (mm) 3
Aantal onderdelen per stuk hout =INTEGER((B1+B3)/(B2+B3))
Tabel voor het aantal stuks hout bij los kopen per onderdeel
Benodigd aantal van het onderdeel 4
Aantal onderdelen per stuk hout 2
Benodigd aantal stuks hout =AFRONDEN.NAAR.BOVEN(B1/B2;0)
Tabel voor het restant van één stuk hout
Standaardlengte (mm) 2400
Totale lengte van de onderdelen uit dit stuk (mm) 2000
Aantal onderdelen uit dit stuk 4
Zaagverlies (mm) 3
Restant (mm) =MAX(0;B1-B2-B3*B4)
Tabel voor het theoretische minimum
Totaal van (lengte + zaagverlies) van alle onderdelen (mm) 6024
Standaardlengte + zaagverlies (mm) 2403
Theoretisch minimum =AFRONDEN.NAAR.BOVEN(B1/B2;0)
Tabel voor de bespaarde stuks hout en de geschatte kosten
Aantal stuks hout bij los kopen 4
Aantal stuks hout bij gecombineerd zagen 3
Prijs per stuk (€) 7,99
Bespaarde stuks hout =B1-B2
Geschatte kosten (€) =B3*B2
Na het plakken zijn de bovenste cellen in kolom B je invoer en is de laatste rij het automatisch berekende resultaat.
“INTEGER(waarde)” is de functie die naar beneden afrondt op een geheel getal (de ⌊ ⌋ in de formules) en “AFRONDEN.NAAR.BOVEN(waarde; 0)” rondt naar boven af (⌈ ⌉).
B4 van de eerste tabel is 2, B3 van de tweede is 2, B5 van de derde is 388 mm, B3 van de vierde is 3, en de vijfde geeft 1 bespaard stuk en kosten van € 23,97.
Het zaagplan met de langste eerst zelf betekent dat je de onderdelen van lang naar kort sorteert en ze één voor één aan stukken toewijst. Dat is handwerk in een rekenblad. Gebruik het rekenblad om het aantal onderdelen per stuk, de restanten en de ondergrens te controleren, en gebruik deze pagina of de Python-code hieronder voor het zaagplan.

Berekenen met Google Spreadsheets

Kopieer de hele tabel hieronder en plak die in cel A1 van Google Spreadsheets. Het werkt direct.
Tabel voor het aantal onderdelen per stuk hout
Standaardlengte (mm) 2400
Lengte van het onderdeel (mm) 1000
Zaagverlies (mm) 3
Aantal onderdelen per stuk hout =INTEGER((B1+B3)/(B2+B3))
Tabel voor het aantal stuks hout bij los kopen per onderdeel
Benodigd aantal van het onderdeel 4
Aantal onderdelen per stuk hout 2
Benodigd aantal stuks hout =AFRONDEN.NAAR.BOVEN(B1/B2;0)
Tabel voor het restant van één stuk hout
Standaardlengte (mm) 2400
Totale lengte van de onderdelen uit dit stuk (mm) 2000
Aantal onderdelen uit dit stuk 4
Zaagverlies (mm) 3
Restant (mm) =MAX(0;B1-B2-B3*B4)
Tabel voor het theoretische minimum
Totaal van (lengte + zaagverlies) van alle onderdelen (mm) 6024
Standaardlengte + zaagverlies (mm) 2403
Theoretisch minimum =AFRONDEN.NAAR.BOVEN(B1/B2;0)
Tabel voor de bespaarde stuks hout en de geschatte kosten
Aantal stuks hout bij los kopen 4
Aantal stuks hout bij gecombineerd zagen 3
Prijs per stuk (€) 7,99
Bespaarde stuks hout =B1-B2
Geschatte kosten (€) =B3*B2
Je kunt dezelfde formules gebruiken als in Excel (INTEGER, AFRONDEN.NAAR.BOVEN en MAX werken hetzelfde). Kopieer de hele tabel, plak die in cel A1 en vervang de getallen in kolom B door je eigen getallen.

Berekenen met Python

import math

stock_length = 2400      # standaardlengte (mm). Een stuk hout van 2,4 m
kerf = 3                 # zaagverlies (dikte van het zaagblad, mm)
unit_price = 7.99        # prijs per stuk (€)
# benodigde onderdelen: (naam, lengte in mm, aantal)
parts = [("Poot", 1000, 4), ("Zarg", 600, 2), ("Regel", 400, 2)]

# aantal stuks hout als je elk onderdeel los koopt (deel door het aantal onderdelen per stuk en rond naar boven af)
stocks_separate = 0
for name, length, qty in parts:
    per_stock = (stock_length + kerf) // (length + kerf)   # naar beneden afgerond (de ⌊ ⌋ in de formule)
    stocks_separate += math.ceil(qty / per_stock)           # naar boven afgerond (de ⌈ ⌉ in de formule)

# gecombineerd zagen: langste onderdelen eerst, in het eerste stuk waar het in past (First Fit Decreasing)
items = sorted([(length, name) for name, length, qty in parts for _ in range(qty)], key=lambda t: -t[0])
stocks = []   # per stuk hout een {"parts": [...], "remaining": resterende lengte}
for length, name in items:
    for stock in stocks:
        if length <= stock["remaining"]:
            stock["parts"].append((name, length))
            stock["remaining"] = max(0, stock["remaining"] - length - kerf)
            break
    else:
        stocks.append({"parts": [(name, length)], "remaining": max(0, stock_length - length - kerf)})

# theoretisch minimum (ondergrens)
lower_bound = math.ceil(sum(qty * (length + kerf) for name, length, qty in parts) / (stock_length + kerf))

print(f"Stuks hout bij los kopen per onderdeel: {stocks_separate}")
print(f"Stuks hout bij gecombineerd zagen: {len(stocks)} (theoretisch minimum {lower_bound})")
for i, stock in enumerate(stocks, 1):
    names = " + ".join(f"{name} {length}" for name, length in stock["parts"])
    print(f"  Stuk {i}: {names}  restant {stock['remaining']} mm")
print(f"Bespaarde stuks hout: {stocks_separate - len(stocks)}")
print(f"Geschatte kosten: € {unit_price * len(stocks):,.2f}")
Werkt met alleen de standaardbibliotheek. “//” is een deling die naar beneden afrondt (de ⌊ ⌋ in de formules) en math.ceil() rondt naar boven af (de ⌈ ⌉). Deze code voert alleen de werkwijze met de langste eerst uit (First Fit Decreasing). Vindt de rekenmachine op deze pagina met het doorzoeken van combinaties minder stuks, dan kunnen de aantallen verschillen (ze zijn gelijk als het resultaat overeenkomt met de ondergrens). De else bij de for-lus wordt uitgevoerd als de lus eindigt zonder break (als het onderdeel in geen enkel stuk past) en voegt een nieuw stuk toe. Vervang de standaardlengte, het zaagverlies en de lijst met onderdelen bovenaan door je eigen waarden en voer de code uit. De uitvoer gebruikt de Engelse punt als decimaalteken (met een punt in plaats van een komma), want zo schrijft Python getallen.

De formule in LaTeX en andere wiskundenotaties (om te kopiëren)

Aantal onderdelen uit één stuk hout
m = ⌊(L + k) ÷ (l + k)⌋
m = \left\lfloor \frac{L + k}{l + k} \right\rfloor
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
  <mrow>
    <mi>m</mi>
    <mo>=</mo>
    <mo>&#x230A;</mo>
    <mfrac>
      <mrow><mi>L</mi><mo>+</mo><mi>k</mi></mrow>
      <mrow><mi>l</mi><mo>+</mo><mi>k</mi></mrow>
    </mfrac>
    <mo>&#x230B;</mo>
  </mrow>
</math>
m = |__ (L + k) / (l + k) __|
Floor[(L + k)/(l + k)]
m := floor((L + k)/(l + k));
m = floor((L + k)/(l + k));
m = ⌊(L + k)/(l + k)⌋
Aantal stuks hout bij los kopen per onderdeel
Bᵢ = ⌈qᵢ ÷ mᵢ⌉,  B_los = B₁ + B₂ + …
B_i = \left\lceil \frac{q_i}{m_i} \right\rceil,\quad B_{\text{los}} = \sum_i B_i
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
  <mrow>
    <msub><mi>B</mi><mi>i</mi></msub>
    <mo>=</mo>
    <mo>&#x2308;</mo>
    <mfrac><msub><mi>q</mi><mi>i</mi></msub><msub><mi>m</mi><mi>i</mi></msub></mfrac>
    <mo>&#x2309;</mo>
    <mo>,</mo>
    <msub><mi>B</mi><mtext>los</mtext></msub>
    <mo>=</mo>
    <munder><mo>&#x2211;</mo><mi>i</mi></munder>
    <msub><mi>B</mi><mi>i</mi></msub>
  </mrow>
</math>
B_i = |~ q_i / m_i ~|,  B_"los" = sum_i B_i
Total[Ceiling[q/m]]
B := add(ceil(q[i]/m[i]), i = 1 .. n);
B = sum(ceil(q ./ m));
B_i = ⌈q_i/m_i⌉, B_los = ∑_i B_i
Gecombineerd zagen (langste onderdelen eerst) en restanten
w = L − (l₁ + l₂ + … + lₙ) − n × k
w = L - \sum_{j=1}^{n} l_j - n k
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
  <mrow>
    <mi>w</mi>
    <mo>=</mo>
    <mi>L</mi>
    <mo>&#x2212;</mo>
    <munderover><mo>&#x2211;</mo><mrow><mi>j</mi><mo>=</mo><mn>1</mn></mrow><mi>n</mi></munderover>
    <msub><mi>l</mi><mi>j</mi></msub>
    <mo>&#x2212;</mo>
    <mi>n</mi><mo>&#x2062;</mo><mi>k</mi>
  </mrow>
</math>
w = L - sum_(j=1)^n l_j - n k
L - Total[l] - Length[l]*k
w := L - add(l[j], j = 1 .. n) - n*k;
w = L - sum(l) - numel(l)*k;
w = L − ∑_(j=1)^n l_j − nk
Theoretisch minimum (ondergrens)
Bmin = ⌈Σ qᵢ(lᵢ + k) ÷ (L + k)⌉
B_{\min} = \left\lceil \frac{\sum_i q_i (l_i + k)}{L + k} \right\rceil
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
  <mrow>
    <msub><mi>B</mi><mi>min</mi></msub>
    <mo>=</mo>
    <mo>&#x2308;</mo>
    <mfrac>
      <mrow><munder><mo>&#x2211;</mo><mi>i</mi></munder><msub><mi>q</mi><mi>i</mi></msub><mo>(</mo><msub><mi>l</mi><mi>i</mi></msub><mo>+</mo><mi>k</mi><mo>)</mo></mrow>
      <mrow><mi>L</mi><mo>+</mo><mi>k</mi></mrow>
    </mfrac>
    <mo>&#x2309;</mo>
  </mrow>
</math>
B_min = |~ (sum_i q_i (l_i + k)) / (L + k) ~|
Ceiling[Total[q*(l + k)]/(L + k)]
Bmin := ceil(add(q[i]*(l[i] + k), i = 1 .. n)/(L + k));
Bmin = ceil(sum(q .* (l + k))/(L + k));
B_min = ⌈(∑_i q_i (l_i + k))/(L + k)⌉
Bespaarde stuks hout en geschatte kosten
Δ = B_los − B,  T = u × B
\Delta = B_{\text{los}} - B,\quad T = u \times B
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
  <mrow>
    <mi>&#x394;</mi>
    <mo>=</mo>
    <msub><mi>B</mi><mtext>los</mtext></msub>
    <mo>&#x2212;</mo>
    <mi>B</mi>
    <mo>,</mo>
    <mi>T</mi>
    <mo>=</mo>
    <mi>u</mi>
    <mo>&#xD7;</mo>
    <mi>B</mi>
  </mrow>
</math>
Delta = B_"los" - B,  T = u * B
{bLos - b, u*b}
Delta := Blos - B;  T := u*B;
Delta = Blos - B; T = u*B;
Δ = B_los − B, T = u × B

Zo laat je ChatGPT  de berekening doen

Je bent een rekenassistent voor zaaglijsten in de houtbewerking. Voer de volgende berekening uit door echt Python-code uit te voeren en baseer je antwoord alleen op de getallen uit het resultaat van de uitvoering (geef geen antwoord uit hoofdrekenen of gokken).

Uit stukken hout van 2.400 mm met een zaagverlies van 3 mm zaag ik vier poten van 1.000 mm, twee zargen van 600 mm en twee regels van 400 mm.
Bereken elk van de volgende dingen:
1. Per onderdeel het aantal onderdelen per stuk hout ((2.400 + 3) ÷ (lengte onderdeel + 3), naar beneden afgerond)
2. Het totale aantal stuks hout als elk onderdeel uit eigen stukken wordt gezaagd (aantal ÷ onderdelen per stuk, naar boven afgerond en opgeteld)
3. Het aantal stuks hout als je de langste onderdelen eerst legt, elk in het eerste stuk waar het in past (First Fit Decreasing), en de onderdelen en het restant van elk stuk (elk onderdeel dat je op een stuk legt, verkort de resterende lengte met “lengte + zaagverlies”)
4. Het theoretische minimum aantal stuks hout (het totaal van (lengte + zaagverlies) van alle onderdelen ÷ (2.400 + 3), naar boven afgerond)

Laat de code zien die je hebt gebruikt en de getallen uit het resultaat van de uitvoering.

Zo werkt het
  1. 1
    Vul je getallen in
    Typ de getallen waarmee je wilt rekenen in de invoervelden
  2. 2
    Bereken
    Klik op de knop “Berekenen”
  3. 3
    Bekijk het resultaat
    Het resultaat verschijnt meteen. Op dezelfde pagina vind je ook de uitwerking van de berekening en de uitleg van de formule
  Kenmerken van DataChef
Eenvoudig en gratis
Onbeperkt gratis converteren
Geen voorkennis nodig – intuïtieve en eenvoudige bediening
Geen registratie nodig
Direct te gebruiken
Zonder persoonlijke gegevens op te geven
Veilig en betrouwbaar
Sterk versleutelde verbinding (SSL)
Bestand wordt automatisch verwijderd zodra je op "Downloaden" klikt
Snel
Snelle laadtijden en snelle conversie
Zonder watermerk
Geen watermerk
Geen bronvermelding vereist
Commercieel gebruik toegestaan
Gratis voor commercieel gebruik
Geen toestemming vooraf nodig