摘 要:營養配餐計算模型為多目標模型,求解過程復雜,筆者利用改進過的多目標粒子群算法優化后,再根據配餐用戶的偏好信息進行優化,擺脫了傳統多目標優化的權重系數的影響,使得營養配餐計算模型能夠滿足各類人群的差異化、特殊化。最后,筆者以一日營養量為目標進行實際配餐,實驗證明,配餐結果令人滿意。
關鍵詞:多目標優化;多目標粒子群算法;營養配餐計算模型
中圖分類號:O224;TP392 文獻標志碼:A 文章編號:1671-7953(2009)02-0083-04
隨著我國經濟的發展和社會的進步,人民生活水平逐步提高,人們的飲食已經由溫飽型轉向營養型。而且不同類的人群對營養的需求不同,這就要求我們要滿足各類人群飲食的差異化、特殊化。例如糖尿病人需要控制糖的攝入量,肥胖人要控制熱量的需求量,老人要優先補充維生素等。此外,在滿足營養需求的基礎上,某人想多食用他喜歡的某種或某類食物等。為了滿足各類人群的多方面的需要,根據各類人群的偏好信息,筆者設計了靈活的營養配餐計算模型。利用多目標粒子群算法得到一組滿足各類人群基本營養需求的配餐數據,再根據各類人群的偏好信息,選擇出適合此類人群的一個配餐數據,盡量使完全不同類人群營養配餐結果不同。
1 多目標優化粒子群算法
1.1 多目標優化的基本概念
單目標優化問題通常可表述為下面的形式[1]:
其中x∈Rn是帶有n個決策變量的向量,f(x)是目標函數,gi(x)是m個不等式約束函數,由它們形成了可行解區域。
1.2 粒子群算法
粒子群算法是一種新的進化計算技術,由Kennedy和Eberhart提出[2]。主要是通過每個粒子當前的狀態和在飛行過程中所經歷過的最好位置,以及整個群體所經歷過的最好位置來計算粒子下一步運動的方向和速度。其速度和位置的更新公式如下:
1.3 多目標粒子群優化算法
雖然粒子群優化算法在許多單目標優化問題中的成功應用,說明了PSO(Particle Swarm optimization)算法的有效性,但是粒子群優化算法還不能直接應用于多目標優化問題。為了實現多目標粒子群算法,一些研究者提出了他們的改進方案,例如Parsopoulos和Vrahatis提出了一種目標聚合的多目標粒子群算法[3];Ray和Liew提出了模擬真實群體行為的多目標粒子群算法[4];Coello和Leehuga提出了一種基于網格的多目標粒子群算法(Multiple ObjectiveParticle Swarm optimization,MOPSO)[5];Sierra和CoeUo 提出一種新的基于Pareto支配關系的多目標粒子群算法[6]等。也提出了很好的解決辦法,都有自己獨特的方法或特點,但是從他們的發表的論文中我們可以發現它們都存在著一個共同的缺點,這些算法的分布性和收斂性還有待進一步提高。
2 改進的多目標粒子群算法
改進的多目標粒子群算法基于Pareto支配關系構造非支配解集合,采用外部集保存當前找到的非支配解集,將 支配概念用于更新外部集合,使算法能保持較好的分布性,通過引入半可行域的概念設計選擇算子對約束條件進行處理以增加求解精度,應用擁擠制度和禁忌算法來改進全局極值和個體極值的選取方法避免陷入局部非劣最優解,并且提出了隨機選擇策略分組法這個構造非支配集構造方法加快算法運行效率。改進的多目標粒子群算法的主要流程如下:
1)初始化粒子群,種群大小為N:
For i-1 To N
(a)Pop[i]的初始位置隨機產生;
(b)V[i]=0;(v[i]是粒子i的速度);
(c)Pbest[i]初始化為粒子i本身;(Pbest[i]保存粒子i的個體極值)
(d)Gbest[i]初始化為粒子i本身;(Gbest[i]保存粒子i的全局極值)
2)應用選擇算子,得到足夠多的有利個體;
3)對粒子群中每個粒子按公式(7)更新其速度,按公式(8)更新其位置:在公式(7)中,常數cl和c2控制個體極值和全局極值對粒子更新的影響程度,參數W稱為慣性權重,r1和r2是[0,…,1]之間的隨機數。
4)計算每個粒子的適應度函數值;
5)求非支配集:用隨機選擇策略分組法找出種群中的非支配粒子進入非支配解集;
6)更新個體極值,(在這里使用支配概念。對每個粒子,若粒子i的當前位置支配其個體極值位置,則更新其個體極值;若兩者為非支配關系,當兩者均在可行域或半可行域時,隨機選取個體極值;當兩者一個在可行域另一個在半可行域或一個在半可行域另一個在非可行域時,選取前者;當兩者均在非可行域時,求其d,d小者為個體極值);
7)更新外部集,將群體的非支配集按ε支配關系插入外部集;
8)更新全局極值,利用擁擠機制和禁忌算法在外部集中隨機選擇一粒子作為粒子i的全局極值;
9)按公式對粒子進行迭代,轉至(2)直至滿足中止條件退出。
外部集保存的就是算法每代運行的最好結果,在算法迭代運算完成后,外部集中的所有粒子就是算法最后得到的結果。
3 改進多目標粒子群優化算法在營養配餐計算模型中應用
3.1 一日營養配餐模型
首先,確定目標約束方程
設有n種食物,每種食物有13項營養成分;熱量、蛋白質、脂肪、鈣、鐵、鋅、硒、視黃醇、維生素E、硫胺素、核黃素、煙酸、維生素C。
1)約束系數矩陣A:
3.2 營養配餐計算模型應用實例及結果分析
3.2.1 營養配餐計算模型應用實例
筆者應用一日營養配餐計算模型進行實際配餐,具體如下:營養配餐期望輸出量如表1所示。
根據《食物成分表》(人民衛生出版社1991年出版)進行營養配餐,在無偏好信息下實際輸出結果,需要229.87 (g)饅頭,550.81(g)米飯,215.57(g)烙餅,56.02(g)菠菜,171.28(g)土豆,96.98(g)肉雞,51.6l(g)雞蛋粉的營養成分含量。營養配餐期望輸出量與實際輸出量對比如表2所示。
3.2.2 結果分析
(1)由表2可以看出,除硫胺素、核黃素外,營養配餐的總體誤差非常小,平均誤差為7.53%,其結果可信度高。
(2)誤差分析:在配餐過程中,由于硫胺素、核黃素基數很小,而實際配餐差額并不大,由于基數小,在計算過程中四舍五入影響計算精度造成。
以上數據是在無偏好信息下得到,如果有偏好信息的加入,筆者也做了實驗,需要優先滿足了偏好信息,增加了一個決策量,導致誤差額比無偏好信息時略大,但都在允許的范圍內,因此認為得到的實驗數據是可行的,有效的,是符合實際應用的。與此類似,可以選擇任意一種食物作為偏好信息進行決策求解,使偏好的食物的食物量最多和最少,在滿足基本營養攝入的基礎上,滿足不同人對食物口味的需求。使配餐結果更加的人性化,多樣化,滿足不同人群的多樣需求。以此為基礎,也可選擇任意兩種和兩種以上食物作為偏好信息進行決策求解。總體而言,配餐結果令人滿意,實用性較強。
4 結論
筆者的營養配餐計算模型為多目標模型,實際求解過程復雜,筆者將多目標粒子群算法應用于求多目標線性規劃的最優解來解決。使得營養配餐計算模型能夠滿足各類人群的差異化、特殊化。此外,為了滿足各類人群的多方面的需要,根據各類人群的偏好信息,通過該模型的實踐證明得到較好的效果。
參考文獻
[1] 謝 濤,陳火旺,康立山.多目標優化的演化算法[J].計算機學報, 2003,26(8):997-1003.
[2] SHEN Y R.Far-infrared generation by optical mixing[J].Progress in Quantum lectronics,2000,4(3):207-232.
[3] PARSONPOULOS K.E.,VRAHATIS M.N.Particle Swarm Optimization Method in Multiobjective Problems[C].Proceeding sof the 2002 ACM Symposium on Applied Computing(SAC 202)[S.1],2002:603-607.
[4] RAY T.LIEW K.M. A swarm metaphor for multiobjective design optimization[J].Eng,2002,34(2):141-153.
[5] COELLO C.A.LECHUGA M.S.MOPSO:A proposal for multiobjective particle swarm optimization[C].Proceedings of the IEEE congress on Evolutionary Computation(CEC 2002),Honolulu,Hawii,USA,2002.
[6] M.R.SIERRA,COELLO.C.,Improving PSO-Based Multi-objective 0ptimization Using Crowding,Mutation and e-Dominance[C].Third International Conference,EMO 2005,Springer.Lecture Notes in computer Science ,Guanajuato,Mexico,2005,3410(3):505-519.
[7] 王小剛,李明杰,王福利等. 一種新的多目標粒子群算法的研究與應用[J].東北大學學報,2008,29(10):1377-1378.