楊曉波
(浙江樹人學(xué)院,浙江 杭州 310015)
以往設(shè)計(jì)服裝大都依靠經(jīng)驗(yàn),穩(wěn)定性不夠,現(xiàn)如今,隨著遺傳算法技術(shù)[1-2]的不斷成熟,已經(jīng)有學(xué)者利用其全局優(yōu)化搜索能力設(shè)計(jì)服裝。Sun等[3]采用傳統(tǒng)遺傳算法對(duì)服裝色彩新穎性與款式協(xié)調(diào)性進(jìn)行優(yōu)化;Yeung等[4]在服裝排料引入遺傳算法;Muni等[5]在設(shè)計(jì)織物紋理時(shí)借助遺傳算法實(shí)現(xiàn);Ogata等[6]將服裝部件進(jìn)行整合并通過客戶評(píng)分和遺傳操作確定最佳服裝;Gong等[7]通過改進(jìn)傳統(tǒng)遺傳算法提升服裝設(shè)計(jì)的工作效率;Kim等[8]等利用3D Max軟件設(shè)計(jì)三維服裝模型,款式優(yōu)化亦建立在該模型之上,實(shí)用性較差。上述研究雖在服裝款式設(shè)計(jì)中應(yīng)用遺傳算法,但有些地方還需完善,如面對(duì)平面服裝設(shè)計(jì)時(shí),沒有考慮服裝的立體特性;遺傳操作沒有與真實(shí)三維服裝設(shè)計(jì)很好結(jié)合,與實(shí)際情況存在差距。鑒于此,本文擬在真實(shí)服裝設(shè)計(jì)中引入交互式遺傳算法,將服裝設(shè)計(jì)的約束機(jī)制引入到遺傳操作之中,以保證設(shè)計(jì)款式的合理性,滿足用戶對(duì)三維服裝款式的審美需求。
傳統(tǒng)遺傳算法利用編碼方法解決實(shí)際問題,是一種模擬進(jìn)化的遍歷算法[9-10]。交互式遺傳算法是將遺傳算法融入到主觀評(píng)價(jià)之中,這樣可以克服傳統(tǒng)方法的呆板評(píng)價(jià)模式,靈活處理不同個(gè)體的設(shè)計(jì)模式。
交互式遺傳算法利用交互特性為每個(gè)個(gè)體分配不同的適應(yīng)度。前期操作與傳統(tǒng)遺傳算法類似,但在進(jìn)化階段引入主觀評(píng)價(jià),這樣做更符合實(shí)際評(píng)估過程,因?yàn)槊课粚<覍?duì)相同服裝款式的評(píng)價(jià)會(huì)有所不同,最終計(jì)算的優(yōu)化解是一個(gè)區(qū)間,而非單一解,進(jìn)化結(jié)果可能存在多個(gè)解。交互式遺傳算法的實(shí)現(xiàn)流程如圖1所示。
從圖1可知,交互式遺傳算法與傳統(tǒng)遺傳算法相比,增加了人機(jī)交互部分,通過人工評(píng)價(jià)確定種群中是否存在最優(yōu)個(gè)體,最優(yōu)個(gè)體即為優(yōu)化后的三維服裝款式。
構(gòu)建交互式遺傳模板需要解決服裝款式的三維操作、約束性和復(fù)雜性等難題。三維操作過程中種族初始化是以款式類庫為基礎(chǔ),因而在編碼操作時(shí),部件之間很難做到平滑拼接,運(yùn)用傳統(tǒng)的二進(jìn)制編碼只能實(shí)現(xiàn)基礎(chǔ)數(shù)據(jù)交換,對(duì)于結(jié)構(gòu)較為復(fù)雜的三維款式,遺傳過程中需解決三維操作的問題;另外,款式庫中的部件類型多樣且結(jié)構(gòu)復(fù)雜,如果操作不當(dāng),必然造成部件之間的拼接不合理等情況,因此需要建立相應(yīng)的約束機(jī)制;為了充分發(fā)揮遺傳算法的全局搜索能力,降低算法的復(fù)雜度,需要為種群的遺傳操作提供足夠的搜素空間,以確保最終操作結(jié)果的有效性。
在服裝款式設(shè)計(jì)中引入交互式遺傳算法,需要?jiǎng)?chuàng)建相應(yīng)的遺傳模板,以解決目前存在的問題。遺傳模板的構(gòu)建過程如圖2所示。
圖2 遺傳模板構(gòu)建過程Fig.2 Genetic template construction process
從圖2可知,遺傳模板的構(gòu)建過程是:先創(chuàng)建款式類庫,接著將款式進(jìn)行分解,各類款式進(jìn)入部件庫,部件庫用于創(chuàng)建服裝款式數(shù)據(jù)結(jié)構(gòu),通過遺傳算法實(shí)現(xiàn)款式部件與遺傳操作的對(duì)接,最后利用選擇、交叉、變異等遺傳操作,款式部件得以更新,經(jīng)過人工評(píng)價(jià),款式得到優(yōu)化,最終獲得最優(yōu)創(chuàng)意的款式。
服裝款式的基本單元是部件,在進(jìn)行選擇、交叉、變異等遺傳操作中,服裝部件保存在部件庫中,可以作為遺傳操作的基礎(chǔ)數(shù)據(jù)。為了在三維服裝部件庫中融入遺傳操作,本文款式部件庫主要包括衣身、衣袖和衣領(lǐng)三部分,各部分建立相應(yīng)的類庫,可以很好的實(shí)現(xiàn)款式拼接等操作。
設(shè)計(jì)服裝款式部件需根據(jù)部件庫的分類進(jìn)行設(shè)計(jì)。衣身類數(shù)據(jù)結(jié)構(gòu)包括衣身主體類、款式線類以及與衣袖、衣領(lǐng)的關(guān)聯(lián);衣袖類數(shù)據(jù)結(jié)構(gòu)除了包含衣袖主體類等基礎(chǔ)特征,還包含與其他類庫的拼接屬性;衣領(lǐng)類數(shù)據(jù)結(jié)構(gòu)包括衣領(lǐng)主體類、衣領(lǐng)基線類和領(lǐng)口線類等。各個(gè)部件所建立相應(yīng)的類庫如圖3所示。
圖3 服裝部件設(shè)計(jì)類庫Fig.3 Clothing component design class library.(a)Sleeve body class;(b) Collar body class;(c) Garment body class
從圖3可知,衣袖主體類用于保存衣袖基礎(chǔ)數(shù)據(jù)、調(diào)整袖孔線、檢測(cè)衣袖輪廓與袖孔接口,為三維拼接做準(zhǔn)備;衣領(lǐng)主體類用于獲取人體特征值、重建衣領(lǐng)輪廓、調(diào)整衣領(lǐng)線等,為遺傳操作奠定基礎(chǔ);衣身主體類用于融合衣袖和衣領(lǐng),方便后期的約束檢測(cè)。服裝部件各子類之間相互聯(lián)系,同時(shí)保留與外部的接口,以便后期的部件拼接和遺傳操作。同時(shí)利用約束檢測(cè)等方法保證衣身的完整性。
設(shè)計(jì)服裝類庫的數(shù)據(jù)結(jié)構(gòu),主要目的是在遺傳操作時(shí)靈活使用各類部件,更好的實(shí)現(xiàn)款式編碼和拼接等流程。
以往大都采用二進(jìn)制編碼進(jìn)行遺傳運(yùn)算[11],該方法具有簡單、方便且編碼高效等優(yōu)點(diǎn),但只適用于平面服裝部件,在操作立體服裝部件時(shí),則暴露出編碼方式單一等缺點(diǎn)。
為了滿足復(fù)雜度較高的三維款式部件遺傳操作,本文采用染色體指針對(duì)款式部件進(jìn)行編碼,每個(gè)染色體分配不同的指針,指向?qū)?yīng)的款式部件或數(shù)據(jù)結(jié)構(gòu)。這樣在遺傳操作中可通過染色體指針對(duì)三維部件進(jìn)行操作。染色體指針的編碼過程如圖4所示。
圖4 染色體指針的編碼過程Fig.4 Encoding process of chromosome
由圖4可知,染色體定義為{X1,X2,X3,X4,X5,X6},編碼過程中,不同的部件分配不同的染色體指針,通過指針可以從類庫中提取相應(yīng)的部件,染色體指針指向所對(duì)應(yīng)的部件類,這樣就形成了完整的三維服裝款式。
染色體指針存儲(chǔ)在哈希表中,不同的id號(hào)代表不同的部件染色體指針,初始化種群時(shí),隨機(jī)選取染色體指針并進(jìn)行組合,將獲得的染色體與款式個(gè)體進(jìn)行匹配,若滿足相應(yīng)的約束條件便接收,否則就放棄。
在程序中,染色體的類結(jié)構(gòu)定義如下:
class Chrom
{
public:
Sleeve *m_pSleeve; //衣袖指針
Collar *m_pCollar; //衣領(lǐng)指針
Garment *m_pGarment; //衣身指針
STexture *m_pSTexture; //衣袖紋理指針
CTexture *m_pCTexture; //衣領(lǐng)紋理指針
GTexture *m_pGTexture; //衣身紋理指針
}
從染色體的類結(jié)構(gòu)可以看出,部件指針指向相應(yīng)的款式部件,并能從部件庫中提取相應(yīng)的部件數(shù)據(jù)。
傳統(tǒng)的服裝部件拼接采用重心坐標(biāo)方法來完成[12],但該方法的前提是保持衣身網(wǎng)格拓?fù)浣Y(jié)構(gòu)不變,當(dāng)進(jìn)行款式部件拼接時(shí),不同的服裝款式會(huì)形成不同的網(wǎng)格結(jié)構(gòu),利用重心坐標(biāo)法很難得到同一的拼接模式。本文采用接口提取匹配的方法進(jìn)行款式部件拼接,下面以衣袖接口生成方法為例,分析接口提取匹配方法的工作流程,衣袖接口生成圖自主手工繪制完成,如圖5所示。
圖5 衣袖接口生成圖Fig.5 Sleeve interface generation diagram
由圖5分析,衣袖接口的生成過程分3個(gè)步驟完成。首先,確定衣袖切割曲面的法向量,計(jì)算衣袖切割曲面法向量可采用三邊面插值法[14],切割面法向量的計(jì)算公式如下:
n=pi+1-pi,n=RotateX(n,π/2)
(1)
式中:n為切割面法向量;pi表示衣袖款式線Ls的點(diǎn),pi+1表示pi的相鄰點(diǎn),切割法向量n的值可通過兩點(diǎn)之間的差值獲得,X軸和切割法向量n如圖5所示,利用RotateX(n,π/2)將切割向量沿切割面的垂直方向繞X軸逆時(shí)針旋轉(zhuǎn)90°得到法向量n。
款式部件初步拼接完畢后,還需增加相應(yīng)的約束條件,目的是確保拼接的平滑過渡,本文參考徐文鵬等[15]提出的服裝約束條件,并加以改進(jìn),定義約束如下:
Ci={Ti,(E1,E2)}
(2)
式中:Ti表示約束類型,如共點(diǎn)約束、對(duì)稱約束等;(E1,E2)表示涉及約束的元素集合。
具體求解過程為:先將E1設(shè)為已知約束元素集,再根據(jù)E1,E2所需滿足的條件選擇合適的約束類型,依據(jù)約束條件選擇對(duì)稱約束較為適宜,該方法從已知約束點(diǎn)集E1出發(fā),利用對(duì)稱法則獲得未知約束點(diǎn)集E2,實(shí)現(xiàn)全局約束。
當(dāng)部件拼接的結(jié)果超過設(shè)定的約束條件時(shí),可以調(diào)整部分約束元素,如適當(dāng)改變碰撞相應(yīng)值等,調(diào)整后再次進(jìn)行部件拼接,當(dāng)拼接結(jié)果達(dá)到設(shè)定的約束條件時(shí),則認(rèn)為此次拼接結(jié)果有效,否則,再次調(diào)整約束元素,直到滿足條件為止。
款式部件完成拼接后,還需結(jié)合遺傳算法,利用三維款式部件庫對(duì)服裝款式進(jìn)行優(yōu)化,生成的三維服裝種群應(yīng)側(cè)重于用戶的偏好,最終符合用戶的需求。
利用交互式遺傳算法進(jìn)行款式優(yōu)化,是在遺傳操作過程中利用約束機(jī)制實(shí)現(xiàn)服裝款式個(gè)體的合理性,通過不斷改進(jìn)以適應(yīng)三維服裝設(shè)計(jì)的要求??钍絻?yōu)化流程如圖6所示。
圖6 款式優(yōu)化算法流程圖Fig.6 Style optimization algorithm flow chart
從圖6可知,款式優(yōu)化的主要流程是:首先,設(shè)定初始參數(shù),如種群數(shù)等,對(duì)種群進(jìn)行初始化,然后,對(duì)初始種群進(jìn)行交叉評(píng)價(jià),如果評(píng)價(jià)結(jié)果滿足種群適應(yīng)度等條件,則獲得最優(yōu)解,反之,利用選擇、交叉、變異等遺傳操作對(duì)種群進(jìn)行優(yōu)化;最后,為了確??钍降挠行?,還需利用約束條件對(duì)種群不斷優(yōu)化。
美觀度是評(píng)價(jià)服裝款式的重要指標(biāo),在遺傳操作中決定個(gè)體的優(yōu)勝劣汰,美觀度可通過人機(jī)交互評(píng)分方式獲得,這樣可更加合理地體現(xiàn)用戶對(duì)服裝款式的喜好。本文采用對(duì)服裝部件分別打分的方法來計(jì)算美觀度,計(jì)算公式如下:
F=IgFg+IsFs+IcFc
(3)
式中:F代表美觀度;Fg、Fs、Fc分別代表用戶對(duì)款式個(gè)體的衣身、衣袖和衣領(lǐng)的評(píng)分;Ig、Is、Ic則表示衣身、衣袖和衣領(lǐng)的權(quán)重系數(shù),權(quán)重系數(shù)可根據(jù)用戶的喜好設(shè)定。
當(dāng)用戶完成款式美觀度的評(píng)價(jià)后,需要在群體重選擇優(yōu)勝的個(gè)體,目的是將優(yōu)良基因遺傳到下一代,服裝個(gè)體的優(yōu)選采用式(4)完成。
(4)
式中:P代表獲勝個(gè)體在群體中的概率;Fi表示單個(gè)個(gè)體的美觀度;∑Fi表示個(gè)體美觀度的總和。一般而言,個(gè)體美觀度越高,獲勝的概率就越大。
實(shí)驗(yàn)選用的初始種群數(shù)量為8組,部件選用采取單點(diǎn)交叉方式,初始交叉概率Pc和初始變異概率Pm分別取值為0.7和0.9,利用本文的遺傳算法進(jìn)行迭代運(yùn)算,迭代次數(shù)達(dá)到第10代時(shí)運(yùn)算結(jié)果趨于收斂,輸出運(yùn)算結(jié)果,10名用戶可根據(jù)自身喜好,結(jié)合部件重要程度對(duì)每種服裝款式進(jìn)行評(píng)分,遺傳算法根據(jù)用戶的評(píng)價(jià)指標(biāo)不斷優(yōu)化種群。
系統(tǒng)的初始種群由各款式部件隨機(jī)產(chǎn)生,種群序號(hào)代表用戶的評(píng)價(jià)順序,部件序號(hào)代表款式部件在款式庫中的順序,初始種群的構(gòu)成如表1所示。
表1 初始種群構(gòu)成Tab.1 Initial population composition
進(jìn)化至第10代時(shí)種群趨于收斂,進(jìn)化種群的構(gòu)成如表2所示。
表2 進(jìn)化種群構(gòu)成Tab.2 Evolutionary population composition
對(duì)比表1和表2,種群初始階段,系統(tǒng)根據(jù)已有的款式部件庫形成多個(gè)款式部件組合,當(dāng)用戶根據(jù)個(gè)人喜好為每種款式進(jìn)行評(píng)分后,交互式遺傳算法根據(jù)評(píng)分美觀度進(jìn)行進(jìn)化,到達(dá)第10代種群時(shí),服裝款式逐漸收斂于用戶喜好。
為了驗(yàn)證交互式遺傳算法服裝款式優(yōu)化效果,本文選用二維裁片法[13]、粒子群法[16]、模擬退火法[17]、傳統(tǒng)遺傳算法與交互式遺傳算法進(jìn)行實(shí)例對(duì)比,結(jié)果如圖7所示。
圖7 5種方法的實(shí)例對(duì)比Fig.7 Example comparision of five methods
從圖7可知,隨著交互代數(shù)的增加,美觀度值也隨之增加,當(dāng)交互代數(shù)相同時(shí),本文提出的交互式遺傳算法可以比傳統(tǒng)遺傳算法與二維裁片法獲得更高的美觀度值,平均提高比率分別達(dá)到18%和35%,從而通過交互進(jìn)化快速達(dá)到用戶的滿意結(jié)果。
本文提出基于交互式遺傳算法對(duì)服裝款式進(jìn)行優(yōu)化,通過算法分析和對(duì)比性實(shí)驗(yàn)得出以下結(jié)論:
1) 構(gòu)建交互式遺傳模板,可以不斷改進(jìn)款式部件庫,通過遺傳算法實(shí)現(xiàn)款式部件與遺傳操作的對(duì)接,實(shí)現(xiàn)款式的最優(yōu)創(chuàng)意。
2) 通過建立服裝款式類庫,采用染色體指針對(duì)款式部件進(jìn)行編碼,借助約束條件獲得較優(yōu)的款式部件,同時(shí),利用接口提取匹配的方法進(jìn)行款式部件拼接,完成三維服裝款式的遺傳耦合。
3) 通過對(duì)比實(shí)驗(yàn),本文提出的交互式遺傳算法可以獲得比傳統(tǒng)遺傳算法和二維裁片法更高的美觀度值,平均提高比率分別達(dá)到18%和35%,從而通過交互進(jìn)化快速達(dá)到用戶的滿意結(jié)果。
FZXB