15 639 läst · 17 svar
16k läst
17 svar
Räkna ut hur mycket virke för minsta spill....
Sida 1 av 2
Hej
Jag skulle göra om mitt staket hemma i somras och smålänning som jag är tänkte jag att man borde kunna räkna ut minsta spill....
Så jag knappade ihop en web-app som ni finner här
http://spill.tsoft.se
Kanske kan den vara någon till hjälp !
-Tobias
******
Minsta Spill
I version 1 så räknar app;n ut minsta spill per enskild bräda. Det betyder att den kommer hitta en optimal fördelning av bitar per bräda förutsatt att det är endast en enda brädlängd.
När man lägger till olika brädlängder, tex så har företaget där man köper brådor, längderna 3,60 och 4,20, ja då kommer algorithmen som den ser ut i version 1 att helt enkelt se till utvärdera optimal antal bitar för minsta spill för längden 3,60 och sedan för 4,20. OCH ge det alternativ som ger minst spill för respektive längd.
Det skulle man kunna tro att det är också den optimala lösningen för ALLA brädor man plockar ut, men så behöver det inte vara, och det är här som problemet blir en utmaning, och inom matematiken benämns det som en NP komplett problem, och just detta problemet har fått ett eget namn Cutting Stock Problem (CSP) som man kan läsa om på denna WIKI sidan.
Jag har labbat med lite olika algorithmer men inte kommit fram till någon bra, oftast handlar det om att man får så många olika kombinationer att tiden för att räkna ut "optimalt" blir så lång att man helt enkelt tröttnar. Och gör man som jag har gjort här, dvs använder Javascript för att låta datorn räkna ut det inom websidan man befinner sig på, ja då så kommer Javascript motorn i tex Safari, eller Firefox eller Chrome att säga ifrån att ett script kör för länge och vilja stänga ner det.
Den algorithm som jag jobbar på räknar fram ALLA möjliga kombinationer av bitar per bräda och sedan när den likt en tädtraversering kommer ner till ett löv (när inga mer bitar behöver läggas ut) så ska den välja den kombination av noder och löv som resulterar i det minsta spillet. Men det var här som Javascript motorn sa stopp, och ville stanna uträkningen långt innan den var klar.
Så därför använder Minst Spill nu en algorithm som tar fram minsta spill PER bräda, inte totalt för alla brädor. Skulle jag kommer fram till hur det ska lösas, ja då blir det en version 2.
Hoppas att verktyget / app;n kommer till nytta och att du inte får så mycket spill virke.
-Tobias
Jag skulle göra om mitt staket hemma i somras och smålänning som jag är tänkte jag att man borde kunna räkna ut minsta spill....
Så jag knappade ihop en web-app som ni finner här
http://spill.tsoft.se
Kanske kan den vara någon till hjälp !
-Tobias
******
Minsta Spill
I version 1 så räknar app;n ut minsta spill per enskild bräda. Det betyder att den kommer hitta en optimal fördelning av bitar per bräda förutsatt att det är endast en enda brädlängd.
När man lägger till olika brädlängder, tex så har företaget där man köper brådor, längderna 3,60 och 4,20, ja då kommer algorithmen som den ser ut i version 1 att helt enkelt se till utvärdera optimal antal bitar för minsta spill för längden 3,60 och sedan för 4,20. OCH ge det alternativ som ger minst spill för respektive längd.
Det skulle man kunna tro att det är också den optimala lösningen för ALLA brädor man plockar ut, men så behöver det inte vara, och det är här som problemet blir en utmaning, och inom matematiken benämns det som en NP komplett problem, och just detta problemet har fått ett eget namn Cutting Stock Problem (CSP) som man kan läsa om på denna WIKI sidan.
Jag har labbat med lite olika algorithmer men inte kommit fram till någon bra, oftast handlar det om att man får så många olika kombinationer att tiden för att räkna ut "optimalt" blir så lång att man helt enkelt tröttnar. Och gör man som jag har gjort här, dvs använder Javascript för att låta datorn räkna ut det inom websidan man befinner sig på, ja då så kommer Javascript motorn i tex Safari, eller Firefox eller Chrome att säga ifrån att ett script kör för länge och vilja stänga ner det.
Den algorithm som jag jobbar på räknar fram ALLA möjliga kombinationer av bitar per bräda och sedan när den likt en tädtraversering kommer ner till ett löv (när inga mer bitar behöver läggas ut) så ska den välja den kombination av noder och löv som resulterar i det minsta spillet. Men det var här som Javascript motorn sa stopp, och ville stanna uträkningen långt innan den var klar.
Så därför använder Minst Spill nu en algorithm som tar fram minsta spill PER bräda, inte totalt för alla brädor. Skulle jag kommer fram till hur det ska lösas, ja då blir det en version 2.
Hoppas att verktyget / app;n kommer till nytta och att du inte får så mycket spill virke.
-Tobias
Kul idé! Det tar ju dock bort lite av tillfredsställelsen när man manuellt lyckats få till en nästan perfekt kombination.
Du borde dock lägga in en parameter för klingans bredd för att få det att bli mer verklighetsförankrat. Jag tror att det skulle gå bra att använda samma klingbredd för samtliga kapningar.
Du borde dock lägga in en parameter för klingans bredd för att få det att bli mer verklighetsförankrat. Jag tror att det skulle gå bra att använda samma klingbredd för samtliga kapningar.
Du får nog tänka länge för att hitta den ultimata lösningen. Jag var inne på liknande tankar själv ett tag och googlade lite på hur man skulle kunna lösa det, men det är tydligen ett olösbart matematiskt problem. (Självklart går det att prova sig fram om det är ett fåtal brädor, men har du ett helt lass så kommer även den värsta dator att gå bet.)TEriksson skrev:
Tack för ett väldigt användbart litet program. Enda jag har att påpeka på nu är att jag skulle vilja skriva in antalet plank av de olika dimensionerna jag har. Om jag t.ex. har två lite kortare plankor som jag vill använda mig av ska den inte tro att jag har/kan skaffa ett gäng av den dimensionen.
Glöm inte att trä kan ha defekter som man vill kapa bort, såvida du inte köper kvistfri fur
Jag köper 20% mera än vad jag behöver för att kunna ta bort och inte behöva köra en extra resa för att komplettera.
Glömde lägga till, är smålänning och har lärt mig den hårda vägen att köpa för lite blir merarbete och merkostnad.
Jag köper 20% mera än vad jag behöver för att kunna ta bort och inte behöva köra en extra resa för att komplettera.
Glömde lägga till, är smålänning och har lärt mig den hårda vägen att köpa för lite blir merarbete och merkostnad.
Hej,
Är det så? På vilket sätt? Som Tobias skrev har programmet begränsningar, men jag använde mig av det senast och kontrollräknade ett gäng i början - programmet ger ju info om hur det summerar bitarna. Såg korrekt ut. 0 spill i början men så ökade spillet efterhand alltefter alternativen minskar. 1.17m som högst spill.
/Martin
Är det så? På vilket sätt? Som Tobias skrev har programmet begränsningar, men jag använde mig av det senast och kontrollräknade ett gäng i början - programmet ger ju info om hur det summerar bitarna. Såg korrekt ut. 0 spill i början men så ökade spillet efterhand alltefter alternativen minskar. 1.17m som högst spill.
/Martin
Hej! Jag matar in 35 olika mått. Men algoritmen förstår inte att den ska prioritera att få ut de långa bitarna först i varje regel. Utan tar enbart de mått som ger minst spill på varje individuell planka.E eztoril skrev:Hej,
Är det så? På vilket sätt? Som Tobias skrev har programmet begränsningar, men jag använde mig av det senast och kontrollräknade ett gäng i början - programmet ger ju info om hur det summerar bitarna. Såg korrekt ut. 0 spill i början men så ökade spillet efterhand alltefter alternativen minskar. 1.17m som högst spill.
/Martin
Svårt att förklarna.. men det blir helt fel beräkning på detta iallafall
Jag har saknat en app som gör exakt det här och tänkte skriva en själv men upptäckte ganska snabbt att det är svårare än man tror så jag googlade lite och hittade hit. Kul projekt och tack för att du delar med dig.
Tyvärr så blev det inte helt optimalt när jag matade in planklängderna 3600 och 4200 och 6 st bitar på 1000 och 6 st bitar på 300
Svaret blev 3 plankor på 3600.
Jag bad chat.openai.com skriva en kodsnutt för att lösa samma problem och när jag kör den kodsnutten så blev svaret:
Cut Pattern:
Stock Length: 360
[30, 30, 30, 30, 30, 30, 100, 0, 0, 0, 0]
Stock Length: 420
[0, 0, 0, 0, 0, 0, 0, 100, 100, 100, 100]
Dvs 1 st 3600 och 1 st 4200 vilket blir ett bättre resultat.
Det roliga är att när jag säger till AI'n att jag inte är intresserad av koden utan bara vill ha ett svar så blir det galet.
Tyvärr så blev det inte helt optimalt när jag matade in planklängderna 3600 och 4200 och 6 st bitar på 1000 och 6 st bitar på 300
Svaret blev 3 plankor på 3600.
Jag bad chat.openai.com skriva en kodsnutt för att lösa samma problem och när jag kör den kodsnutten så blev svaret:
Cut Pattern:
Stock Length: 360
[30, 30, 30, 30, 30, 30, 100, 0, 0, 0, 0]
Stock Length: 420
[0, 0, 0, 0, 0, 0, 0, 100, 100, 100, 100]
Dvs 1 st 3600 och 1 st 4200 vilket blir ett bättre resultat.
Det roliga är att när jag säger till AI'n att jag inte är intresserad av koden utan bara vill ha ett svar så blir det galet.
Oj, det programmet skrev jag 2015 det var länge sedanS smasseman skrev:Jag har saknat en app som gör exakt det här och tänkte skriva en själv men upptäckte ganska snabbt att det är svårare än man tror så jag googlade lite och hittade hit. Kul projekt och tack för att du delar med dig.
Tyvärr så blev det inte helt optimalt när jag matade in planklängderna 3600 och 4200 och 6 st bitar på 1000 och 6 st bitar på 300
Svaret blev 3 plankor på 3600.
Jag bad chat.openai.com skriva en kodsnutt för att lösa samma problem och när jag kör den kodsnutten så blev svaret:
Cut Pattern:
Stock Length: 360
[30, 30, 30, 30, 30, 30, 100, 0, 0, 0, 0]
Stock Length: 420
[0, 0, 0, 0, 0, 0, 0, 100, 100, 100, 100]
Dvs 1 st 3600 och 1 st 4200 vilket blir ett bättre resultat.
Det roliga är att när jag säger till AI'n att jag inte är intresserad av koden utan bara vill ha ett svar så blir det galet.
Det är otroligt vad chat-gpt kan, man slutar aldrig att imponeras
-T
Tack cpalm! Nu när jag kollar resultatet så ser jag att den bara spottar ur sig 5 st 100cm-bitar. Det är för att jag gav fel input. Skrev tydligen in 5 bitar i stället för 6. Nu när jag ändrar till 6 bitar så kraschar programmet
Wow! Det betyder att du, TEriksson, var smartare än chat-gpt redan för 8 år sedan
Vi kan nog vara överens om att chat-gpt är jävligt imponerande men ofta ganska usel på matematiska problem.
Och att problemet är klurigt.
Wow! Det betyder att du, TEriksson, var smartare än chat-gpt redan för 8 år sedan
Vi kan nog vara överens om att chat-gpt är jävligt imponerande men ofta ganska usel på matematiska problem.
Och att problemet är klurigt.