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
 
  • Gilla
trollet3 och 10 till
  • Laddar…
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.
 
ja det har du rätt i, man får helt enkelt minska längden med ett par cm,
jag får lägga till det vid tillfälle
tack för tipset
-T
 
TEriksson skrev:
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.
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.)
 
  • Gilla
Stefan_E
  • Laddar…
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. ;)
 
Hej Tobias,

Tack för ett schysst program. Hur har det gått med version 2 av programmet?

/Martin
 
Hej! Ville bara påpeka att programmet ej fungerar, så att ingen precis som jag råkar gå efter detta.
Blev mycket spill!
 
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
 
W Wallawhoa skrev:
Hej! Ville bara påpeka att programmet ej fungerar, så att ingen precis som jag råkar gå efter detta.
Blev mycket spill!
Fungerar alldeles utmärkt. Dock så behöver man tänka på att det går bort några mm varje gång man kapar virket.
 
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
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.

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.
 
S 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.
Oj, det programmet skrev jag 2015 :) det var länge sedan
Det är otroligt vad chat-gpt kan, man slutar aldrig att imponeras
-T
 
C
S smasseman skrev:
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.
Men nu fick du ju bara fem bitar på 1000. Eller missuppfattar jag något?
 
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 :rofl:
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.
 
  • Haha
  • Gilla
TEriksson och 2 till
  • Laddar…
Vi vill skicka notiser för ämnen du bevakar och händelser som berör dig.