Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Verovatno varjanta "Problema ranca" (knapsack problem)

[es] :: Art of Programming :: Verovatno varjanta "Problema ranca" (knapsack problem)

[ Pregleda: 4813 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Emerald_MG
Novi Sad

Član broj: 49115
Poruke: 26
*.dialup.neobee.net.



Profil

icon Verovatno varjanta "Problema ranca" (knapsack problem)29.08.2005. u 19:07 - pre 227 meseci
Molim bilo kakvu vrstu pomoći oko sledećeg problema:

Radi se o optimizaciji rezanja materijala (šipki) koje imaju određenu dužinu npr. 6000 mm. U krojnoj listi dobijam n-broj delova različite dužine (koji su manji od dužine šipki od koji se režu() koje treba iseći od osnovnih šipki. Problem je rešiti kako da ima što manje otpada tj. što bolje uklopiti delove prilikom rezanja.

Pretražujući forum (koji inače ne pratim) našao sam da moj problem je verovatno neka verzija KNAPSACK problema. Program inače radim u VB6. Bilo kakva pomoć bi dobrodošla.
 
Odgovor na temu

RooTeR
Rajko Nenadov
nema ga
Detelinara, NS

Član broj: 2386
Poruke: 385
195.252.87.*



Profil

icon Re: Verovatno varjanta "Problema ranca" (knapsack problem)30.08.2005. u 00:45 - pre 227 meseci
A koliko tih osnovnih "shipki" imash? I ako ih imash vishe, jesu li sve iste duzine, ili su razlichite?
mmmmmm.. aahhhhhh..
e, nije sex nego serem!
 
Odgovor na temu

Emerald_MG
Novi Sad

Član broj: 49115
Poruke: 26
*.neobee.net.



Profil

icon Re: Verovatno varjanta "Problema ranca" (knapsack problem)31.08.2005. u 08:36 - pre 227 meseci
Osnovne šipke su ulazni materijal i uvek su iste dužine (6000 mm). Mogu ih "potrošiti" onoliko koliko je potrebno da se iskroji odredjena narudžbenica. Npr. u listi za sečenje imam zadatak da se iseku delovi šipki sledećih dimenzija (dužina):
3 x 1200 mm, 6 x 950 mm, 8 x 1345 mm, 3 x 1100 mm.(ove vrednosti su proizvoljne i u pogledu količine i dimenzija za svaku naružbenicu ali uvek su manji od 6000 mm)

- Dalje je potrebno izračunati kojim redom poslagati delove za sečenje a da prilikom sečenja od osnovnih šipki ne ostaje ostatak manji od 600 mm (takav ostatak je škart koji se ne može ponovo upotrebiti)
- pri izračunavanju nije bitno koliko će osnovnih šipki biti utrošeno za isecanje potrebnih delova.
- Ukoliko je pri uklapanju odredjenog broja delova ostatak na jednoj osnovnoj šipki (od 6000 mm) recimo od 0 mm do 100 mm, na njoj je idealno uklopljeno rezanje.
- Ukoliko je ostatak od 100 mm do 600 mm takvo uklapanje je neprihvatljivo jer deo koji ostaje je za kasnije ne upotrebljiv.
- Ukoliko je ostatak od 600 mm do < od najmanjeg dela za sečenje u navedenoj poružbenici on je prihvatljiv jer će se upotrebiti prilikom neke sledeće naružbenice.

Ukoliko je komplikovano - jednostavnija postavka je n- broj delova proizvoljnih dužina uklopiti sa što manjim ostatkom na x-broj osnovni šipki konstantne dužine od 6000 mm.

Unapred hvala za pomoć
 
Odgovor na temu

RooTeR
Rajko Nenadov
nema ga
Detelinara, NS

Član broj: 2386
Poruke: 385
195.252.87.*



Profil

icon Re: Verovatno varjanta "Problema ranca" (knapsack problem)31.08.2005. u 13:24 - pre 227 meseci
Ako je broj duzina koje se trebaju dobiti mali, onda mozesh da problem reshish i bektrekom.
Resenje dinamickim programiranjem bi moglo da ide ovako:

neka nam je N broj ulaznih shipki (sa n cemo obelezavati njihovu duzinu), a M broj
trazenih duzina. Neka Xi, i=1..M, je i-ta trazena duzina. Neka V[i,k,j] znachi da
popunjavamo prvih i shipki, sa prvih j duzina, tako da nam je u i-toj shipki popunjeno k
mesta. V[i,k,j] moze imati vrednost 0(sto znaci da smo sve sipke od 1 do i-1 popunili sa
zadovoljavajucim ostatkom) ili 1(sto znaci da smo popunjavajuci neke od shipki dobili
nezadovoljavajuci ostatak ili nismo uopste stigli do ovakve situacije). Ako nam je
poznato neko V[i,k,j], mi mozemo izracunati i sledece vrednosti:

ako je v[i,j,k]=0 i k<100 ili k>600 onda v[i+1,x[j],j+1]:=v[i,j,k];
ako je v[i,j,k]=0 i k>=x[j] onda v[i,k-x[j],j+1]:=v[i,j,k];

Na pocetku postavish vrednost V[1,n,0]:=0, i redom popunjavash. Na kraju pogledash
koja od vrednosti V[N,k,M], k=0..200, 600... ima vrednost 0, i na osnovu nje
rekonstruishesh gde si koju duzinu sekao.


Ovo moze lako da se prosiri tako da dobijesh reshenje koje ce ti davati i najmanji otpad
(znachi od svih zadovoljavajucih otpada, dobijash najmanji).
Ako ti neshto nije jasno (ili ako uvidish da sam ja mozda neshto pogreshno napisao),
reci, pa cu probati da razjasnim :)

[edit] I usput sam shvatio da sam, onako, bash lupio :)

[Ovu poruku je menjao RooTeR dana 11.09.2005. u 02:04 GMT+1]
mmmmmm.. aahhhhhh..
e, nije sex nego serem!
 
Odgovor na temu

pedjav
Java Developer
Belgrade

Član broj: 62878
Poruke: 104
*.adsl.sezampro.yu.



Profil

icon Re: Verovatno varjanta "Problema ranca" (knapsack problem)16.09.2005. u 08:52 - pre 226 meseci
Imam resenje za tebe. Napravio sam ga pre oko tri godine kao macro za Excel. Sve vreme ga je koristio moj burazer i ispalo je da je bas dobra stvar. Skratio mu je vreme optimizacije sa nekoliko sati na par minuta i narocito je dobar kad imas mnogo, npr. 500 elemenata ili vise. Inace prihvata do 5000 elemenata, a kad imas oko 500 ili 600 obrada traje oko 30 sec. Automatski generise oznaku sipke, mozes da podesavas standardnu duzinu sipke, znaci 6000, 6500 zavisno od proizvodjaca, mozes da podesavas velicinu otpada pri pravom i kosom secenju i ivicnog otpada, mozes da uvedes rezervu (za svaki slucaj) jer se teorija i praksa razlikuju i izracunava iskoriscenje, koje je u principu iznad 90%, osim kad zbog kombinacije duzina to nije moguce ostvariti. Da...izracunava ukupni i korisni otpad, gde je korisni ustvari duzina komada koji ce da ti ostane kad iseces sipku, da bi ga eventualno iskoristio na nekom drugom mestu. Napravljen je tako da u poslednjoj sipki pravi najveci korisni otpad, tako da imas sto veci komad za koga su vece sanse da se moze upotrebiti ponovo.

Javi se ako si zainteresovan.

Pozdrav, Pedja.
 
Odgovor na temu

[es] :: Art of Programming :: Verovatno varjanta "Problema ranca" (knapsack problem)

[ Pregleda: 4813 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.