郭廣頌,席俊杰,文振華
(1.鄭州航空工業(yè)管理學(xué)院 智能工程學(xué)院,河南 鄭州 450046;2.鄭州航空工業(yè)管理學(xué)院 航空工程學(xué)院,河南 鄭州 450046)
食譜設(shè)計(jì)是營養(yǎng)學(xué)重要組成部分,其核心目的是設(shè)計(jì)出同時滿足用戶偏好和營養(yǎng)需求的健康食譜。相對于計(jì)算法和食物交換份法等傳統(tǒng)食譜設(shè)計(jì)方法的復(fù)雜低效[1],近年來,采用智能方法的營養(yǎng)決策逐漸成為食譜設(shè)計(jì)的代表思路。該類方法的特點(diǎn)是應(yīng)用智能算法優(yōu)化飲食要素,快速高效地為用戶提供健康合理的個性化菜品搭配。最近的研究成果中,文獻(xiàn)[2]采用遺傳算法優(yōu)化食譜結(jié)構(gòu),并生成一周食譜。文獻(xiàn)[3]將食譜優(yōu)化視為碳水化合物、蛋白質(zhì)和脂肪的多目標(biāo)優(yōu)化問題,采用NSGA-II為糖尿病患者食譜優(yōu)化最佳食材重量。這些方法雖然對食譜設(shè)計(jì)具有重要啟發(fā)意義,優(yōu)化結(jié)果也完全符合營養(yǎng)標(biāo)準(zhǔn),但是均沒有考慮用戶的偏好,即不能肯定優(yōu)化出的食譜方案一定符合用戶口味。考慮到用戶偏好,文獻(xiàn)[4,5]基于互聯(lián)網(wǎng)技術(shù),采用協(xié)同過濾算法為用戶推薦食譜。這些方法推薦的食譜雖然可以滿足用戶口味,但沒有足夠考慮食譜的營養(yǎng)性和健康性,優(yōu)化結(jié)果同樣存在片面性。所以,設(shè)計(jì)能同時滿足營養(yǎng)需求與用戶口味需求的個性化食譜仍然是難以解決的問題。
交互式多目標(biāo)優(yōu)化(interactive multi-objective optimization,IMO)是目前進(jìn)化優(yōu)化領(lǐng)域的熱點(diǎn)研究方向之一[6]。IMO求解問題有一類特殊類型,即優(yōu)化過程中同時存在能夠用明確定義的函數(shù)表示的顯式指標(biāo)(也稱為定量指標(biāo))和不能用明確定義的函數(shù)表示的隱式指標(biāo)(也稱為定性指標(biāo))的混合指標(biāo)優(yōu)化問題[7]。由于同時包含兩類性質(zhì)不同的優(yōu)化目標(biāo),該類型IMO十分適合求解融入偏好的多目標(biāo)優(yōu)化問題[8,9]。
綜合上述,基于食譜優(yōu)化問題特點(diǎn),采用交互式進(jìn)化計(jì)算求解是一條可行的食譜設(shè)計(jì)研究思路?;诖?,本文開發(fā)一種交互式食譜智能優(yōu)化方法。首先,將食譜的營養(yǎng)性、價格、熱量等定量因素作為顯式指標(biāo),將用戶偏好這一主要定性因素作為隱式指標(biāo),從而將食譜設(shè)計(jì)問題轉(zhuǎn)化為混合指標(biāo)指標(biāo)優(yōu)化問題;然后,采用指標(biāo)均衡度設(shè)計(jì)新的交互式進(jìn)化策略并求解這一問題;最后,得到同時滿足食品營養(yǎng)性和用戶口味的個性化食譜。
本文的創(chuàng)新之處是:①提出了混合指標(biāo)優(yōu)化指標(biāo)均衡度概念和計(jì)算方法;②提出了新的基于指標(biāo)均衡度的指標(biāo)占優(yōu)準(zhǔn)則;③提出了新的結(jié)合非交互式進(jìn)化方法的Pareto前沿修正策略;④嘗試將上述策略應(yīng)用于食譜設(shè)計(jì)問題。
(1)
式中:cjr為第j種食材單位質(zhì)量含有的營養(yǎng)素r的量,r∈[1,42]。
(2)
式(2)中加撇變量為原變量做歸一化后的取值,約束條件中帶有上下橫線的值為菜品標(biāo)準(zhǔn)值的范圍。式(2)的含義是在滿足用戶需求情況下,食譜菜品定量、能量、營養(yǎng)素和價格等因素與標(biāo)準(zhǔn)值偏差最小。
個性化食譜除了需要滿足營養(yǎng)性、價格、熱量等定量指標(biāo)外,還應(yīng)同時滿足用戶個人口味的個性化需求。不失一般性,考慮混合指標(biāo)優(yōu)化問題
(3)
式中:x是d維決策變量,S為x的可行域,f(x)是被優(yōu)化的性能指標(biāo)。其中fk(x),k=1,2,…,p為個體x(食譜)顯式指標(biāo),fk′(x),k′=p+1,p+2,…,p+q為個體x隱式指標(biāo)。由于用戶個性化需求可以通過對食譜菜品的評價這一定性指標(biāo)刻畫,所以,可以將用戶對食譜的評價值作為個體隱式指標(biāo);按式(2)計(jì)算出的食譜優(yōu)化值反映了食譜菜品營養(yǎng)性、價格、熱量等定量指標(biāo)的最優(yōu)化結(jié)果,所以,可以將f1(x)作為個體顯式指標(biāo)。在本文中,個體顯式指標(biāo)與隱式指標(biāo)均只有一個,即p=q=1,p+q=2,個體混合指標(biāo)形式記為f1(x)/f1+1(x)。
通過式(3)及食譜的特點(diǎn)可以發(fā)現(xiàn),用戶的偏好與食譜的營養(yǎng)性、價格等因素往往存在沖突,即受“口腹之欲”獲得的食譜菜品,往往對應(yīng)著不健康的營養(yǎng)性,反之亦然。這樣一來,交互式進(jìn)化優(yōu)化獲得的食譜會出現(xiàn)難以調(diào)和的定性與定量指標(biāo)矛盾,而最優(yōu)的食譜應(yīng)在用戶偏好和定量指標(biāo)之間獲得最佳平衡?;诖耍竟?jié)提出進(jìn)化指標(biāo)均衡度概念。
設(shè)第t代種群個體xi(t)顯式適應(yīng)值為f1(xi(t)),f2(xi(t)),…,fp(xi(t)),隱式適應(yīng)值為fp+1(xi(t)),fp+2(xi(t)),…,fp+q(xi(t)),對顯式和隱式適應(yīng)值歸一化后,可以獲得種群無量綱指標(biāo)行矩陣B(xi(t))1×(p+q)。根據(jù)問題(3),在B(xi(t))1×(p+q)中,1~p列元素b11(xi(t)),b12(xi(t)),…,b1p(xi(t))為顯式指標(biāo),即成本型指標(biāo),該指標(biāo)值越小越好;p+1~p+q列元素b1(p+1)(xi(t)),b1(P+2)(xi(t)),…,b1(p+q)(xi(t))為隱式指標(biāo),即效益型指標(biāo),該指標(biāo)值越大越好。為了刻畫B(xi(t))1×(p+q)的指標(biāo)均衡性,下面采用Gini系數(shù)建立個體指標(biāo)均衡度[10]。
在交互式進(jìn)化過程中,由于每一代的個體指標(biāo)在決策中所起作用相同,設(shè)指標(biāo)效用系數(shù)為1,且每一代均能收集到相關(guān)數(shù)據(jù)對相應(yīng)指標(biāo)進(jìn)行評價,故直接將個體xi(t)的各項(xiàng)指標(biāo)b11(xi(t)),b12(xi(t)),…,b1(p+q)(xi(t))做升序排列,記為V11(xi(t)),V12(xi(t)),…,V1(p+q)(xi(t)),則個體xi(t),i=1,2,…N的指標(biāo)均衡度為
(4)
(5)
對于問題(3),本節(jié)基于個體指標(biāo)均衡度概念,將交互式進(jìn)化優(yōu)化與非交互式進(jìn)化優(yōu)化結(jié)合,獲得更高效的進(jìn)化求解方法,具體如下:
(1)系統(tǒng)初始化生成初始種群。為減少評價噪聲,用戶對個體xi(t),i=1,2,…,N按1-5級評分,該離散值反映了用戶偏好,表達(dá)了用戶個性化信息,所以該值既是個體適應(yīng)值,也是個體隱式指標(biāo);同時,系統(tǒng)在后臺按式(2)計(jì)算個體顯示指標(biāo)f1(xi(t)),則提取的個體混合指標(biāo)為f1(xi(t))/f1+1(xi(t));然后,采用NSGA-II算法優(yōu)化種群,獲得Pareto最優(yōu)解,并作為案例存入案例庫;
(6)
式中:T′max為GA最大進(jìn)化代數(shù)。
(3)考慮種群規(guī)模,選擇一個GA優(yōu)化的最優(yōu)個體替換掉當(dāng)前種群中個體指標(biāo)均衡度最低的個體,改善當(dāng)前種群指標(biāo)均衡性;
(4)用戶若對優(yōu)化結(jié)果滿意,則終止程序,否則,重新評價個體,繼續(xù)遺傳操作。算法架圖如圖1所示,其中斜體下劃線部分是本文工作的創(chuàng)新之處。
圖1 算法框架
為實(shí)現(xiàn)進(jìn)化優(yōu)化,將食譜樣本作為進(jìn)化個體。結(jié)合食譜菜品的3個組成部分,進(jìn)化個體編碼也由主食、配菜和飲品3部分組成。采用二進(jìn)制編碼,其中前4位為主食,包括基本主食、花樣主食、糕點(diǎn)等3類共16種方案;中間6位為配菜,包括蛋品、乳品、大葷、半葷、小葷、全素、小菜、水果等8類共64種家常菜方案;最后4位為飲品,包括湯、飲料、粥等3類共16種方案。個體染色體長度為14,搜索空間包含24×26×24=16384種食譜組合方案(優(yōu)化解),用戶通過算法找到最滿意的食譜樣本(滿意解)。圖2表示了染色體編碼過程,其中xi1,xi2,xi3表示個體xi(t)的3個組成部分,b1-b14表示染色體各基因位。圖中個體染色體為0001 100101 0110,對應(yīng)的食譜菜品是“米飯/素炒西芹/銀耳湯”。食譜樣本以.bmp格式儲存在根目錄下的數(shù)據(jù)庫中。
圖2 染色體編碼
本系統(tǒng)采用Visual Basic 6.0實(shí)現(xiàn),系統(tǒng)結(jié)構(gòu)如圖3所示。系統(tǒng)劃分為模型載入模塊、模型處理模塊和交互式進(jìn)化算法模塊,3個模塊通過交互進(jìn)化界面融合,共同完成交互式進(jìn)化設(shè)計(jì)。采用繪圖軟件構(gòu)建食譜模型,并編寫程序?qū)崿F(xiàn)模型的讀取和顯示。模型載入模塊基于MFC創(chuàng)建SDI應(yīng)用程序,當(dāng)運(yùn)行“打開”命令后,生成文件所在位置的路徑,并調(diào)用載入模型函數(shù)。由于該文件的塊是嵌套存儲,讀取的內(nèi)容也是嵌套存入內(nèi)存中。將讀取的內(nèi)容轉(zhuǎn)化為能夠用OpenGL表現(xiàn)的格式,最后,調(diào)用視圖類中的OnDraw()函數(shù),利用OpenGL技術(shù)將模型顯示出來。模型處理模塊的作用是構(gòu)成完整的食譜樣本。該模塊首先調(diào)用圖片庫中主食、配菜和飲品圖案,之后將這些圖案貼圖到模型表面。剩余操作采用按鈕控制,由用戶決定是否執(zhí)行。該模塊的流程是添加按鈕,建立消息響應(yīng)函數(shù),在不同函數(shù)中調(diào)用相應(yīng)的OpenGL函數(shù)。交互式進(jìn)化算法模塊將本文提出的算法整合到系統(tǒng)中,為保證系統(tǒng)運(yùn)行效率,交互進(jìn)化界面設(shè)置按鈕控制算法執(zhí)行。人機(jī)交互過程中,用戶首先對界面顯示的模型打分;之后,用戶點(diǎn)擊進(jìn)化按鈕,由系統(tǒng)調(diào)用進(jìn)化算法以產(chǎn)生下一代個體;重復(fù)上述過程直到找到最優(yōu)個體。
圖3 系統(tǒng)結(jié)構(gòu)
圖4 用戶信息界面
圖5 系統(tǒng)操作界面
本系統(tǒng)的體驗(yàn)用戶是男女各5名在校大學(xué)生,年齡區(qū)間20-25,身高體重均屬正常范圍,記為用戶1-10。本節(jié)從適應(yīng)性、有效性和可用性等3個方面分別驗(yàn)證系統(tǒng)的性能。
表1 系統(tǒng)優(yōu)化解
表2 算法進(jìn)化代數(shù)與滿意解樣本分析
圖6 算法進(jìn)化代數(shù)與滿意解
(2)進(jìn)化過程中用戶偏好的波動是反映算法適應(yīng)性的另一重要指標(biāo)。用戶偏好的波動可以通過進(jìn)化過程中用戶評價個體適應(yīng)值變化反映,用戶評價個體適應(yīng)值變化可以分為由低變高、保持不變和由高變低等3種情況。統(tǒng)計(jì)用戶進(jìn)化優(yōu)化過程中評價適應(yīng)值上升率PR、保持率PH和下降率PD
(7)
式中:∑SR是用戶評價適應(yīng)值均值每代由低變高的次數(shù)之和;∑SH是用戶評價適應(yīng)值均值每代保持不變的次數(shù)之和;∑SD是用戶評價適應(yīng)值均值每代由高變低的次數(shù)之和;∑SF是系統(tǒng)出現(xiàn)的互異個體數(shù)之和,且PR+PH+PD=1。
用戶的偏好波動統(tǒng)計(jì)結(jié)果見表3。由表3可以看出,兩種方法中,進(jìn)化過程中用戶偏好均呈逐漸上升趨勢,即用戶對系統(tǒng)給出的食譜越來越滿意,但本文方法的適應(yīng)值上升率最高、保持率最低。這說明,使用本文方法用戶偏好波動最小、優(yōu)化結(jié)果更符合用戶偏好。原因在于,本文方法考慮了定量指標(biāo)的影響,用戶對食譜菜品的評價結(jié)果包含的理性成分更多,優(yōu)化解可以更好融入用戶偏好,所以,偏好變化最小。兩種方法的適應(yīng)值下降率并無顯著差異,這說明兩種方法均可以搜索到符合用戶偏好的優(yōu)化結(jié)果。另外,通過t檢驗(yàn)可知,兩種方法中女生組與男生組的各項(xiàng)偏好波動指標(biāo)均并無顯著差異,這一與印象不符的有趣現(xiàn)象表明,對于食譜選擇這類混合指標(biāo)優(yōu)化問題沒有性別傾向性。
表3 用戶偏好波動結(jié)果
本節(jié)測試算法對于顯式指標(biāo)的優(yōu)化效果,即驗(yàn)證一份食譜除了滿足用戶口味外,對于營養(yǎng)性需求方面的滿足效果。每位用戶提供1份4.1節(jié)(1)中采用本文方法和IGA獲得的食譜,以及根據(jù)10位用戶體征,采用食物交換份法獲得的10份食譜,共計(jì)30份食譜樣本。按式(1)計(jì)算每份食譜中碳水化合物、蛋白質(zhì)和脂肪等3種營養(yǎng)素含量,分別記為Ci,Pi,Fi,i=1,2,…,10。根據(jù)中國營養(yǎng)學(xué)會推薦的3種營養(yǎng)素標(biāo)準(zhǔn)點(diǎn)(C,P,F)=(405g,101g,75g)[11],則營養(yǎng)指標(biāo)為
(8)
其中,di越接近于0,說明食譜越接近營養(yǎng)需求。
3種方法的di曲線如圖7所示。由圖可見,本文方法獲得的食譜營養(yǎng)指標(biāo)最低,說明本文方法優(yōu)化質(zhì)量最高。原因在于,IGA只以用戶偏好優(yōu)化食譜,沒有考慮食材份量、熱量等因素,所以優(yōu)化方案的營養(yǎng)指標(biāo)最高,優(yōu)化質(zhì)量最差。食物交換法基于本文方法的食譜重新計(jì)算營養(yǎng)指標(biāo),由于沒有根據(jù)用戶情況進(jìn)行優(yōu)化,所以,營養(yǎng)指標(biāo)介于本文方法和IGA之間。這表明,本文方法的優(yōu)化結(jié)果營養(yǎng)性最好,用戶可以獲得最佳的營養(yǎng)配置,所以,本文方法有效性最佳。
圖7 食譜營養(yǎng)指標(biāo)
4.1節(jié)和4.2節(jié)兩項(xiàng)實(shí)驗(yàn)結(jié)束后,對用戶問卷調(diào)查本文方法和IGA可用性。該問卷分為有效性、滿意度、易用性和易學(xué)性等4類共30個評分項(xiàng)目,每個評分項(xiàng)目都是正向陳述[13]。用戶在7點(diǎn)Likert量表上對陳述給出評分。再根據(jù)評分項(xiàng)目權(quán)重將各項(xiàng)評分結(jié)果折算成相關(guān)類的體驗(yàn)值,最后,將體驗(yàn)值取均值,并用圖8所示雷達(dá)圖表示。由圖可見,兩種方法在易學(xué)性和易用性兩個方面差異并不大,這是因?yàn)檫@兩種方法的進(jìn)化優(yōu)化系統(tǒng)人機(jī)交互界面十分統(tǒng)一,所以系統(tǒng)可操做性一致。但在有效性和滿意性兩個方面,本文方法的體驗(yàn)值明顯高于對比方法,這說明本文方法的優(yōu)化結(jié)果更符合用戶偏好,用戶對系統(tǒng)的認(rèn)可程度更高,算法的可用性最強(qiáng)。原因在于,將食譜優(yōu)化問題視為求解混合指標(biāo)優(yōu)化問題,目標(biāo)層次更為豐富,在不增加用戶額外負(fù)擔(dān)的情況下提高了優(yōu)化質(zhì)量。
圖8 可用性雷達(dá)
通過上述3項(xiàng)實(shí)驗(yàn)測試可以見到,本文方法具有良好的交互性,能夠適用于不同用戶個性化需求。在兼顧營養(yǎng)、價格等因素前提下,本文方法可以獲得更有效的健康食譜,并表現(xiàn)出最佳的可用性。
采用交互式進(jìn)化優(yōu)化與非交互式進(jìn)化優(yōu)化結(jié)合方法實(shí)現(xiàn)個性化食譜優(yōu)化設(shè)計(jì)。該方法同時優(yōu)化顯式指標(biāo)與隱式指標(biāo)。采用交互式進(jìn)化優(yōu)化方法優(yōu)化隱式指標(biāo)?;谥笜?biāo)均衡度,采用非交互式進(jìn)化優(yōu)化方法優(yōu)化顯式指標(biāo),替換指標(biāo)均衡度較差個體,改造Pareto前沿面。與傳統(tǒng)食物交換法和單純交互式進(jìn)化優(yōu)化方法對比,本文方法可以在最少的進(jìn)化代內(nèi)很便捷地獲得最優(yōu)滿意解,獲得的個性化食譜可同時滿足用戶偏好和營養(yǎng)性指標(biāo)。系統(tǒng)的適應(yīng)性更強(qiáng),有效性更高,可用性顯著。本文研究的食譜優(yōu)化仍屬簡單的混合指標(biāo)優(yōu)化問題,探尋交互式進(jìn)化計(jì)算求解高維混合指標(biāo)優(yōu)化對象是進(jìn)一步研究的內(nèi)容。