物资采购流行性预测问题的蚁群算法
A Colony Algorithm for Commodity Purchase Epidemic Forecast Problem

作者: 罗 亮 , 李小平 , 张馨文 , 周 瑞 :西安邮电大学理学院,陕西 西安; 罗 明 :甘肃临夏市实验小学,甘肃 临夏;

关键词: 组合优化蚁群算法下模函数物资采购Combinatorial Optimization Ant Colony Algorithm Submodular Function Materials Procurement

摘要:
物资采购流行性预测是现代物流中的一个重要环节,是一种典型的组合优化问题。为使物流生产达到最佳效果,提出了一种基于下模函数下的蚁群算法,对物资采购中的流行性预测问题作出解答。该蚁群算法结合了贪婪算法是对一般蚁群算法的改进,最后以实验表明该算法在解决物资采购流行性预测问题是有效的。

Abstract: Material procurement epidemic of modern logistics in the forecast is an important topic, and is a typical combinatorial optimization problem. To make the logistics of production to achieve the best results, a colony algorithm solving the problem of purchasing epidemic forecast is presented. This colony algorithm is an improved algorithm that is combined with the greedy algorithm. Finally, experimental results show that algorithm in solving the problem of purchasing epidemic forecast is valid.

1. 引言

物资采购是现代物流环节中非常重要的一环,而在物资采购环节中起决定性作用是物资采购流行性预测问题。为使物流生产达到最佳配置,本文提出如下物资采购流行性预测问题:来自不同地区不同城市或地域的采购商对某一集团公司的物资进行采购,对于不同的采购商要在某一特定的销季用最畅销的物资获得最大的利益,而对于集团公司,对不同的采购商采购的物资种类进行预测从而有计划有侧重的生产,致使生产出来的产品种类更大限度的满足采购商的需求,同时生产出的产品得到最小化浪费。此问题可进一步描述如下:

有来自n个地区的采购商对某集团公司的m中物资进行多次预选购,从预选购的n个集合选出最受欢迎,最流行的一种或q种产品进行重点生产,使达到最大化产销平衡,双方获得最大利益的状态。

需要说明的是本文所提出的问题可以应用文献 [1] 中提出一种近似算法(其中主要用了贪婪算法)对每个采购商根据自己的条件对m种物资分别选购,从而在其每个采购集合 S i 中重叠最多的元素作为重点产品生产。但是若要采取此算法来解决本文提出的问题会产生以下负面影响:

时间跨度过小,起不到预测效果,造成很大偏差;

采购商之间没有参照,造成对每种物资生产规模过小,产品种类过多,形不成大批量生产,造成资源浪费,资金得不到很快的回轮。

因此在本文将文献 [1] 中提出的算法作为解决。

整体问题的算法的一部分具体体现为贪心算法的结果作为初始预测结果,而更多的采用蚁群算法作为问题解决的主体算法对贪心结果进行优化,在整个过程中联合下模函数对算法中对应参数给予修正。

本文结构作如下安排。引言部分主要介绍物资采购流行性预测问题的背景及其问题阐述。第1节对本文主要涉及到的相关概念进行说明。第2节提出解决问题的蚁群算法并进行分析同时对问题的解决得出蚁群算法。第3部分为实验部分。第4部分为结论。

2. 预备知识

蚂蚁算法(ant algorithm)是一种源于大自然中生物世界的新的仿生类算法作为通用型随机优化算法,它吸收了昆虫王国中蚂蚁的行为特性通过其内在的搜索机制,在一系列困难的组合优化问题求解中取得了成效。

蚂蚁算法在著名的旅行商问题(TSP) [2] 信息融合 [3] 和工件排序问题 [4] ,制造业 [5] 以及在交通运输领域中 [6] [7] [8] [9] 取得成效以来,已陆续渗透到其它问题。本文进一步将这种新型的生物优化思想扩展到物资采购流行性预测问题中。

在应用蚂蚁算法求解物资采购流行性预测问题中还要用到非减下模获利函数,在微观经济学中认为买方的物品估价函数满足边际效用递减法则,而这一观点是被广泛接受的,而边际效用递减规律的理论基础则是非减下模函数。其主要用于初值的设定以及在蚂蚁算法中相关信息素的调整。非减下模函数定义如下:

定义 [10] :设 V = { 1 , 2 , , n } 为一有限集, Ω = { X | X V } 表示由N的所有子集组成的集合,若集函数f是 Ω R 满足:

1) X , Y N ,若 X Y ,则有

f ( X ) f ( Y ) ;

2) X , Y N ,总有

f ( X ) + f ( Y ) f ( X Y ) + f ( X Y ) ;

则称f为 Ω R 的非减下模函数。

3. 问题的解决

3.1. 蚁群算法设计

在算法设计之前必须对算法初始状态以及相关数据进行设定:1) 要对参数初始化(包括时间,最大循环次数,蚂蚁个数,节点个数,初始节点信息素等),2) 蚂蚁状态转移公式。

3.1.1. 参数初始化

为更准确预测,对每个采购商限定资金上限,对于第i个采购商,他的采购资金上限为 L i ,同时为确定每个节点初始信息量,第一次采购中采取贪心算法,令 S i 为第i个采购商的物资集。令时间 t = 0 和循环次数 N 0 = 0 ,设置最大循环次数 N c max ,将m个蚂蚁置于n个节点上,这时我们将不同地区的采购商作为节点构造二部图(令有向图的每条(i,j)表示第j种物资被第i个蚂蚁采购。)初始化信息量由第一次的采购中采用边际效益最大的贪婪原则按照如下算法进行初值的确定:

Step1 令 S i = 0 , i = 1 , 2 , , n

Step2 取 k C ,使 θ i k = f ( S i { c k i } ) f ( S i ) = max j C { f ( S i { c j } ) f ( S i ) }

Step3 令 S i = S i { c k } k S i p k c k < L i 转step2,否则转step5。

Step5 对于物资集C中的元素初始信息量按如下算法进行

for j = 1 to m

t 0 = 0 τ j ( t 0 ) = 0

for i = 1 to n

j S i ,则 τ j ( t 0 ) = τ j ( t 0 ) + 1

next i

output τ j (t0)

next j

3.1.2. 设定蚂蚁状态转移概率公式:

将蚂蚁状态转移概率公式定义为:

P = [ p j ( i ) ] α [ η j ( i ) ] β / s c t a b u ( i ) [ τ s ( i ) ] [ η s ( i ) ] β

其中C为物资集,tabu(i)为第i个蚂蚁的禁忌表;a为信息启发式因子,表示轨迹的相对重要性即积累信息在蚂蚁运动时所起的作用,其值越大,则该蚂蚁倾向于选择其它蚂蚁经过的路径,从侧面又反映了流行趋势。在本例中由于是不同地域之间的相互参考,a为相对敏感的参数;b为期望启发式因子,在本例中

与价值有很大关系,反映了蚂蚁对价格的受重视程度; η j ( i ) ( t ) 表示蚂蚁对于j物资的能见度且 η j ( i ) ( t ) = 1 c j (i)

(其中 c j ( i ) 为i蚂蚁在j节点的市场价格),由于 c j ( i ) 的考虑要受到区域的限制,一般情况下在一个欠发达地

区, c j ( i ) 越小,则 η j ( i ) ( t ) 越大,而在一个经济较发达地区,的影响程度要比欠发达地区显得迟钝一些,所以对于参数b在该地区稍小一点。 τ j ( t ) 表示t时刻j节点的信息量,具体计算公式为

τ j ( t + n ) = ( 1 ρ ) τ j ( t ) + Δ τ ( t + n ) (1)

其中 Δ τ j ( t + n ) 表示对每只蚂蚁对c中的物资做完选择后 t + n 时刻j节点处的信息素的改变量。具体计算公式为

Δ τ j ( t ) = 1 / M , Δ τ j ( i ) ( t ) = l [ f ( S i ) f ( S i / j ) ] (2)

其中 M = k = 1 n Δ τ j ( k ) ( t ) ,M表示边际效益之和, f ( · ) 为单调下模获利函数,r为挥发因子。

根据以上分析给出求解物资采购流行性预测问题的蚁群算法。

3.1.3. 求解物资采购流行性预测问题的蚁群算法步骤

Step1: 参数初始化,令时间 t = 0 ,设置最大循环次数 N c max ,将蚂蚁置于n个节点上,其中j节点的初始信息量由1.11节中的贪婪算法求得;

Step2: 循环次数 N c = N c + 1

Step3: 蚂蚁的初始禁忌表索引号 k = 1

Step4: 蚂蚁数目 k = k + 1

Step5: 蚂蚁个体根据2.1.2中设定的状态转移概率公式计算概率选择元素 j c t a b u ( i ) ,并进行禁忌表修改:

j { c t a b u ( i ) } and p j ( i ) > p 0 ,则

{ t a b u ( i ) } = { t a b u ( i ) } + j

j { c t a b i ( i ) } and p j ( i ) < p 0 ,则

{ c t a b u ( i ) } = { c t a b u ( i ) } + j

Step6: 若集合c中元素每个蚂蚁未遍历完则转入step4,否则跳到step7。

Step7: 根据公式(1) (2)更新每个节点上的信息量;

Step8: 若 N c < N c max 转入step2,否则结束。

3.1.4. 蚁群算法具体程序设计

1) 流行元素的产生

D o N c < n c max f o r j = 1 t o m t a b u ( i ) = 0 f o r i = 1 t o n i f j { c t a b u ( i ) } a n d p j ( i ) > p 0 t h e n { t a b u ( i ) } = { t a b u ( i ) } + j i f j S i t h e n S i = S i j i f j S i t h e n S i / j

i f j S i t h e n τ j ( i ) ( ( t 0 + j ) = ( 1 ξ ) τ j ( i ) ( ( t 0 + i 1 ) + Δ τ j ( i ) ( ( t 0 + i 1 ) e l s e τ j ( i ) ( ( t 0 + j ) = τ j ( i ) ( ( t 0 + i 1 ) τ j ( i ) ( ( t 0 + i 1 ) n e x t i τ j ( i ) ( ( t 0 + j ) = ( 1 ρ ) i = 1 n τ j ( i ) ( ( t 0 + j ) + ρ Δ τ j ( i ) ( ( t 0 + j ) n e x t j N c = N c + 1 E n d D o

2) 对流行元素的排序

f o r j = 1 t o m f o r i = 1 t o n i f j S i t h e n P ( j ) = P ( j ) + 1 n e x t i p u t o u t P ( j ) n e x t j

对于 P ( j ) , j = 1 , 2 , , m 从大到小排序,设为 P 1 , P 2 , , P m 得最流行元素 P max = P 1 。前r个流行元素为 P 1 , P 2 , , P r

4. 实验

在初始成本的选取过程中随机产生了23到34之间的数,作为市场物资价值矩阵。

物资价值矩阵

[ 23 24 26 28 30 30 32 23 25 29 ] [ 24 26 27 29 30 31 35 24 27 30 170 26 24 27 32 33 32 34 25 26 29 180 25 27 29 29 32 33 33 23 26 32 170 24 26 28 29 34 32 36 23 28 31 200 23 26 27 28 31 34 33 24 25 31 170 25 25 26 30 33 31 34 24 29 30 160 24 25 28 32 32 30 33 24 25 31 170 25 29 27 28 33 30 34 23 26 31 190 25 25 27 29 31 32 34 26 27 29 210 ]

边际效益矩阵

[ m 1 m 2 m 3 m 4 m 5 m 6 m 7 m 8 m 9 m 10 0 2 2 1 0 1 3 1 2 1 3 0 1 4 3 2 1 2 1 0 2 3 3 1 2 3 2 0 1 3 1 2 2 1 4 2 4 0 3 2 0 2 2 0 1 4 1 1 0 2 2 1 0 2 3 1 2 1 4 1 1 1 2 4 2 0 1 1 0 2 2 5 1 0 3 0 2 0 1 2 2 1 1 1 1 2 2 3 2 0 ]

同时为了产生边际效益,给定对应物资的实际价值系数,为使贪心选择体现出采购商的意图,为使更准确的反映流行性物资,我们限定采购商的资金上限。经过贪心选择测得初始信息素量:

τ ( 1 ) = 4 , τ ( 2 ) = 5 , τ ( 3 ) = 7 , τ ( 4 ) = 4 , τ ( 5 ) = 7 τ ( 6 ) = 5 , τ ( 7 ) = 6 , τ ( 8 ) = 5 , τ ( 9 ) = 6 , τ ( 10 ) = 6

以下设定蚁群算法中所设计的参数,经过实验测得最佳参数为:

p 0 = 0.5 , ρ = 0.4 , α = 0.8 , β = 0.6 , l = n m , ξ = 0.2.

最终结果为:

5 7 9 10 3 2 4 8 1 6.

5. 结论

通过蚁群算法在对某一销季物资的流行元素做出判断来有计划的进行生产,而对于购买商,没有盲目的购进物资,而是参照了其他人或地域商人的意见看法,销售趋势,有取有舍最大限度的利用销售旺季抓住商机赢得最大的利润。在整个过程中表现出了很大的可行性和优点。第一初始阶段考虑到购买商的利益关系,用下模函数为获利函数结合贪婪算法,初步得到总的物资种类以及物资储备;第二在蚁群算法过程中考虑到了商家的让利举动对应了蚁群选购活动中信息素的改变,很大程度上模拟了现代商业活动。

资助信息

国家自然科学基金–数学天元基金(11626187);陕西省教育厅科研专项基金(16JK1708, 16JK1694)。

文章引用: 罗 亮 , 罗 明 , 李小平 , 张馨文 , 周 瑞 (2018) 物资采购流行性预测问题的蚁群算法。 应用数学进展, 7, 328-333. doi: 10.12677/AAM.2018.74040

参考文献

[1] 罗亮, 贾欣鑫, 何尚录. 求解组合拍卖问题最大值的贪婪算法[J]. 黑龙江科技学院学报, 2008, 18(5): 382-384.

[2] 王书勤, 黄茜. 蚁群算法参数优化设置研究[J]. 信阳师范学院学报(自然科学版), 2012, 25(2): 262-265.

[3] 李艳灵, 李刚. 基于蚁群算法和粗糙集的信息融合教学评价[J]. 信阳师范学院学报(自然科学版), 2009, 22(4): 624-627.

[4] 陈义保, 姚建初, 钟毅芳, 等. 基于蚁群系统的工件排序问题的一种新算法[J]. 系统工程学报, 2002, 179(5): 476-480.

[5] Sdimanpura, M., Vratb, P. and Shankar, R. (2005) An Ant Algorithm for the Single Row Layout Problem in Flexible Manufacturing Systems. Computers & Operations Research, 32, 583-598.
https://doi.org/10.1016/j.cor.2003.08.005

[6] 崔学丽, 马良, 范炳全. 车辆路径问题(VRP)蚂蚁搜索算法[J]. 系统工程学报, 2004, 19(4): 418-422.

[7] 陈昌富, 龚晓南. 启发式蚂蚁算法及其在高填石路堤稳定性分析中的应用[J]. 数学的实践与认识, 2004, 34(6): 89-92.

[8] 闻育, 吴铁军. 基于蚂蚁算法的城域交通控制实时滚动优化[J]. 控制与决策, 2004, 19(9): 1057-1059.

[9] Chen, C.-H. and Ting, C.-J. (2006) An Improved ant Colony System Algorithm for the Vehicle Routing Problem. Journal of Chinese institute of Industrial Engineers, 23, 115-116.

[10] Sviridenko, M. (2004) A Note on Maximizing a Submodular Set Function Subject to Knapsack Constraint. Operation Rrdrstvhi Lryyrtd, 32, 41-43.

分享
Top