合版印刷拼版演算法問題(有償,1000~2000元)

相忘于江湖發表於2024-07-14

合版印刷拼版演算法問題

所謂的合版印刷,就是我們會將來自不同客戶、不同訂單的卡片,拼版到同一個版面,然後製版印刷。

在合版印刷中,需要解決如下的問題。

一、矩形拼版演算法

將若干尺寸不盡相同的小尺寸矩形拼版(排版)到一個大的矩形裡。怎麼樣使得能夠排版的小矩形更多?(版面的利用率更高?)
在排版中,還需要 注意一些約束條件,最主要的一個是:要能便於印後的裁切(一刀切)。所謂的一刀切,即指每一刀下去,都是一分為二。
如果小矩形都是同樣的尺寸,這種拼版比較方便。主要是多尺寸矩形拼版。
目前我們透過遺傳演算法計算多尺寸拼版,但是經常得不到理想的結果,有時候甚至不如人工拼版的利用率。
並且,時間不太受控。

二、如何得到最好的拼版(花最少得錢,幹同樣多的活)

假如我們得到了一個拼版,我們可能會印刷200份、500份、1000份、2000份、5000份、10000份。(除非特殊情況,我們都是按這些數量印刷的)。
一般來說,印刷份數越多,則單份相對更便宜。 比如印200份共400元,而印500份只需要800元(而非1000元),公司有個價格表。

數量 200 500 1000 2000 5000 10000
價格 400 800 1550 3000 7000 12000
價格表僅示意,非公司真實價格

那麼問題來了。假如某個訂單有10款卡片,每款10000張。 我們會怎麼印刷呢? 理論上,如果還別很多別的訂單卡片,如果也是每款10000張,這些卡片正好
能湊滿一張版面。 那麼情況就比較理想了。 然後還會有一些情況,比如假如別的訂單卡片都是每款才5000張(甚至有些還不到5000張)。 那我這個訂單
則很顯然不合適印10000份。因為他們佔不滿一整張版面,浪費的會很多。假如200份400元。而4個訂單平均佔了這個版面,那每個訂單的成本就是
400/4=100元。而這一個訂單因為沒有和別的訂單共享版面,切浪費的空間很多,就會成本過高。 此時,我們可能會將這10款卡片每款10000張,變成
20款卡片每款5000張,也可能是50款卡片,每款2000張。 更甚至會有10款拆開,變成比如16款5000張(別的訂單正好和這16款組成一個利用率很高的版面)和20款每款1000張的情況。

如何拼版更便宜?

其實為了某些方便,我們會將版面劃分為多個標準網格,比如我們的版面可能有92*56的小網格組成的大版面(11列,12行),我們的價格一般是單個網格(模位)
的價格,比如假定200分400元。這個版面被分成100個模位,那麼每個模位價格是4元。我們往往看這個訂單佔了多少個模位。(似與整個演算法關係不大)

假如某個卡片要15600張,我們可能最後是10000A+5000B+2000C+1000D+500E+200F的組合。(A,B,C,D,E,F指的款數,如果總的卡片數不少於原來的15600張即可),這裡
可以按揹包問題的解法。

求演算法,有償,謝謝。

相關文章