蚁群算法求解TSP问题的源程序及简要说明

Python018

蚁群算法求解TSP问题的源程序及简要说明,第1张

该程序试图对具有31个城市的VRP进行求解,已知的最优解为784.1,我用该程序只能优化到810左右,应该是陷入局部最优,但我不知问题出在什么地方。请用过蚁群算法的高手指教。

蚁群算法的matlab源码,同时请指出为何不能优化到已知的最好解

%

%

%the procedure of ant colony algorithm for VRP

%

%%%%%%%%%%%

%initialize the parameters of ant colony algorithms

load data.txt

d=data(:,2:3)

g=data(:,4)

m=31% 蚂蚁

alpha=1

belta=4% 决定tao和miu重要性的参数

lmda=0

rou=0.9%衰减系数

q0=0.95

% 概率

tao0=1/(31*841.04)%初始信息素

Q=1% 蚂蚁循环一周所释放的信息素

defined_phrm=15.0 % initial pheromone level value

QV=100 % 车辆容量

vehicle_best=round(sum(g)/QV)+1%所完成任务所需的最少车数

V=40

% 计算两点的距离

for i=1:32

for j=1:32

dist(i,j)=sqrt((d(i,1)-d(j,1))^2+(d(i,2)-d(j,2))^2)

end

end

%给tao miu赋初值

for i=1:32

for j=1:32

if i~=j

%s(i,j)=dist(i,1)+dist(1,j)-dist(i,j)

tao(i,j)=defined_phrm

miu(i,j)=1/dist(i,j)

end

end

end

for k=1:32

for k=1:32

deltao(i,j)=0

end

end

best_cost=10000

for n_gen=1:50

print_head(n_gen)

for i=1:m

%best_solution=[]

print_head2(i)

sumload=0

cur_pos(i)=1

rn=randperm(32)

n=1

nn=1

part_sol(nn)=1

%cost(n_gen,i)=0.0

n_sol=0 % 由蚂蚁产生的路径数量

M_vehicle=500

t=0 %最佳路径数组的元素数为0

while sumload<=QV

for k=1:length(rn)

if sumload+g(rn(k))<=QV

gama(cur_pos(i),rn(k))=(sumload+g(rn(k)))/QV

A(n)=rn(k)

n=n+1

end

end

fid=fopen('out_customer.txt','a+')

fprintf(fid,'%s %i\t','the current position is:',cur_pos(i))

fprintf(fid,'\n%s','the possible customer set is:')

fprintf(fid,'\t%i\n',A)

fprintf(fid,'------------------------------\n')

fclose(fid)

p=compute_prob(A,cur_pos(i),tao,miu,alpha,belta,gama,lmda,i)

maxp=1e-8

na=length(A)

for j=1:na

if p(j)>maxp

maxp=p(j)

index_max=j

end

end

old_pos=cur_pos(i)

if rand(1)<q0

cur_pos(i)=A(index_max)

else

krnd=randperm(na)

cur_pos(i)=A(krnd(1))

bbb=[old_pos cur_pos(i)]

ccc=[1 1]

if bbb==ccc

cur_pos(i)=A(krnd(2))

end

end

tao(old_pos,cur_pos(i))=taolocalupdate(tao(old_pos,cur_pos(i)),rou,tao0)%对所经弧进行局部更新

sumload=sumload+g(cur_pos(i))

nn=nn+1

part_sol(nn)=cur_pos(i)

temp_load=sumload

if cur_pos(i)~=1

rn=setdiff(rn,cur_pos(i))

n=1

A=[]

end

if cur_pos(i)==1 % 如果当前点为车场,将当前路径中的已访问用户去掉后,开始产生新路径

if setdiff(part_sol,1)~=[]

n_sol=n_sol+1 % 表示产生的路径数,n_sol=1,2,3,..5,6...,超过5条对其费用加上车辆的派遣费用

fid=fopen('out_solution.txt','a+')

fprintf(fid,'%s%i%s','NO.',n_sol,'条路径是:')

fprintf(fid,'%i ',part_sol)

fprintf(fid,'\n')

fprintf(fid,'%s','当前的用户需求量是:')

fprintf(fid,'%i\n',temp_load)

fprintf(fid,'------------------------------\n')

fclose(fid)

% 对所得路径进行路径内3-opt优化

final_sol=exchange(part_sol)

for nt=1:length(final_sol)% 将所有产生的路径传给一个数组

temp(t+nt)=final_sol(nt)

end

t=t+length(final_sol)-1

sumload=0

final_sol=setdiff(final_sol,1)

rn=setdiff(rn,final_sol)

part_sol=[]

final_sol=[]

nn=1

part_sol(nn)=cur_pos(i)

A=[]

n=1

end

end

if setdiff(rn,1)==[]% 产生最后一条终点不为1的路径

n_sol=n_sol+1

nl=length(part_sol)

part_sol(nl+1)=1%将路径的最后1位补1

% 对所得路径进行路径内3-opt优化

final_sol=exchange(part_sol)

for nt=1:length(final_sol)% 将所有产生的路径传给一个数组

temp(t+nt)=final_sol(nt)

end

cost(n_gen,i)=cost_sol(temp,dist)+M_vehicle*(n_sol-vehicle_best) %计算由蚂蚁i产生的路径总长度

for ki=1:length(temp)-1

deltao(temp(ki),temp(ki+1))=deltao(temp(ki),temp(ki+1))+Q/cost(n_gen,i)

end

if cost(n_gen,i)<best_cost

best_cost=cost(n_gen,i)

old_cost=best_cost

best_gen=n_gen % 产生最小费用的代数

best_ant=i%产生最小费用的蚂蚁

best_solution=temp

end

if i==m %如果所有蚂蚁均完成一次循环,,则用最佳费用所对应的路径对弧进行整体更新

for ii=1:32

for jj=1:32

tao(ii,jj)=(1-rou)*tao(ii,jj)

end

end

for kk=1:length(best_solution)-1

tao(best_solution(kk),best_solution(kk+1))=tao(best_solution(kk),best_solution(kk+1))+deltao(best_solution(kk),best_solution(kk+1))

end

end

fid=fopen('out_solution.txt','a+')

fprintf(fid,'%s%i%s','NO.',n_sol,'路径是:')

fprintf(fid,'%i ',part_sol)

fprintf(fid,'\n')

fprintf(fid,'%s %i\n','当前的用户需求量是:',temp_load)

fprintf(fid,'%s %f\n','总费用是:',cost(n_gen,i))

fprintf(fid,'------------------------------\n')

fprintf(fid,'%s\n','最终路径是:')

fprintf(fid,'%i-',temp)

fprintf(fid,'\n')

fclose(fid)

temp=[]

break

end

end

end

end

我现在也在研究它,希望能共同进步.建义可以看一下段海滨的关于蚁群算法的书.讲的不错,李士勇的也可以,还有一本我在图书馆见过,记不得名字了.

什么是启发式算法转自:p://blog.csdn.net/aris_zzy/archive/2006/05/27/757156.aspx引言:解决实际的问题,要建模型,在求解。求解要选择算法,只有我们对各种算法的优缺点都很熟悉后才能根据实际问题选出有效的算法。但是对各种算法都了如指掌是不现实的,但多知道一些,会使你的选择集更大,找出最好算法的概率越大。现在研一,要开题了些点文献综述,愿与大家分享。大自然是神奇的,它造就了很多巧妙的手段和运行机制。受大自然的启发,人们从大自然的运行规律中找到了许多解决实际问题的方法。对于那些受大自然的运行规律或者面向具体问题的经验、规则启发出来的方法,人们常常称之为启发式算法(Heuristic Algorithm)。现在的启发式算法也不是全部来自然的规律,也有来自人类积累的工作经验。启发式算法的发展:启发式算法的计算量都比较大,所以启发式算法伴随着计算机技术的发展,取得了巨大的成就。40年代:由于实际需要,提出了启发式算法(快速有效)。50年代:逐步繁荣,其中 贪婪算法和局部搜索 等到人们的关注。60年代: 反思,发现以前提出的启发式算法速度很快,但是解得质量不能保证,而且对大规 模的问题仍然无能为力(收敛速度慢)。启发式算法的不足和如何解决方法:(水平有限 仅仅提出6点)启发式算法目前缺乏统一、完整的理论体系。很难解决! 启发式算法的提出就是根据经验提出,没有什么坚实的理论基础。由于NP理论,启发式算法就解得全局最优性无法保证。等NP?=P有结果了再说吧,不知道这个世纪能不能行。各种启发式算法都有个自优点如何,完美结合。如果你没有实际经验,你就别去干这个,相结合就要做大量尝试,或许会有意外的收获。启发式算法中的参数对算法的效果起着至关重要的作用,如何有效设置参数。还是那句话,这是经验活但还要悟性,只有try again………..启发算法缺乏有效的迭代停止条件。还是经验,迭代次数100不行,就200,还不行就1000…………还不行估计就是算法有问题,或者你把它用错地方了………..启发式算法收敛速度的研究等。你会发现,没有完美的东西,要快你就要付出代价,就是越快你得到的解也就远差。其中(4)集中反映了超启发式算法的克服局部最优的能力。虽然人们研究对启发式算法的研究将近50年,但它还有很多不足:1.启发式算法目前缺乏统一、完整的理论体系。2.由于NP理论,各种启发式算法都不可避免的遭遇到局部最优的问题,如何判断3.各种启发式算法都有个自优点如何,完美结合。4.启发式算法中的参数对算法的效果起着至关重要的作用,如何有效设置参数。5.启发算法缺乏有效的迭代停止条件。6.启发式算法收敛速度的研究等。70年代:计算复杂性理论的提出,NP问题。许多实际问题不可能在合理的时间范围内找到全局最优解。发现贪婪算法和局部搜索算法速度快,但解不好的原因主要是他们只是在局部的区域内找解,等到的解没有全局最优性。由此必须引入新的搜索机制和策略………..Holland的遗传算法出现了(Genetic Algorithm)再次引发了人们研究启发式算法的兴趣。80年代以后:模拟退火算法(Simulated Annealing Algorithm),人工神经网络(Artificial Neural Network),禁忌搜索(Tabu Search)相继出现。 最近比较热或刚热过去的:演化算法(Evolutionary Algorithm), 蚁群算法(Ant Algorithms), 拟人拟物算法,量子算法等。各个算法的思想这就不再详细给出(以后会给出一些,关注我的blog) ,为什么要引出启发式算法,因为NP问题,一般的经典算法是无法求解,或求解时间过长,我们无法接受。这里要说明的是:启发式算法得到的解只是近似最优解(近似到什么程度,只有根据具体问题才能给出). 二十一世纪的最大的数学难题NP?=P,如果NP=P启发式算法就不在有存在的意义。优胜劣汰是大自然的普遍规律,它主要通过选择和变异来实现。选择是优化的基本思想,变异(多样化)是随机搜索或非确定搜索的基本思想。“优胜劣汰”是算法搜索的核心,根据“优胜劣汰”策略的不同,可以获得不

本文原标题“Ant Group’s disjointed Southeast Asian fifintech colony”,发表于The Ken。点击“查看原文”阅读英文原文

拥有7.11亿活跃支付宝用户的蚂蚁集团,已经深深植根于中国市场,而东南亚是它的下一个目标。 即使这家金融 科技 巨头成功执行了 历史 上最大的IPO,它在多元化地区的仍将是一个挑战。

东南亚分布着十一个国家。有着超过6.5亿的人口。 拥有数百种不同的语言和文化,对于任何一家公司来说,要解决像东南亚这样一个多元化的地区所带来的挑战都不容易。即使您是一家希望筹资350亿美元,并有可能创造 历史 的互联网巨头。

阿里巴巴的创始人马云和前身为蚂蚁金融的蚂蚁集团,已在七个东南亚地区建立了本地业务。在过去四年中。它是投资和与当地战略伙伴合资逐渐开始业务,并于2016年11月收购泰国金融服务公司Ascend Money的20%股权,蚂蚁的策略是复制其广受欢迎的支付宝电子钱包模式传播到整个地区的市场。14岁的支付宝现金拥有7.11亿月活用户(主要位于中国),截止2020年 6月的12个月内给它带来了177亿元的收入。

蚂蚁想要在东南亚打好基础,以建立和推广在中国已经成功的具有盈利前景的金融服务,例如消费贷款,保险和财富管理。蚂蚁金服在2020年前6个月实现32亿美元净利润。

蚂蚁集团也需要将其版图扩大到中国以外的地区。在首次公开募股文件中显示,中国“法律,法规和规章将越来越完善和繁杂。” 媒体表示,相关部分也将很快实施放贷人利率上限,这将削弱蚂蚁金服最赚钱的收入。同时与印度和美国日益紧张的政治局势,也加剧了对其它国际市场的需求。

蚂蚁的目光早已投向了东南亚,但在该地区并非一帆风顺,它没有为公司提供统一的区域服务。在每个国家/地区,关系类型不同,影响力范围也不同。新加坡咨询公司Kapronasia的创始人Zennon Kapron表示:“该公司为在东南亚找到立足之地进行了一些努力。支付宝钱包的采用尚未成功,目前尚不清楚长期战略是什么“。

在东南亚最大的经济体印度尼西亚,蚂蚁集团的DANA电子钱包受到了来自竞争对手的压力,这些竞争对手包括出行巨头Grab,电商公司Tokopedia,以及印尼Gojek以及阿里巴巴的竞争对手腾讯。在在其他市场上,蚂蚁已经与影响力有限的大型本地财团合作。例如泰国本地的正大集团(CPGroup)和马来西亚银行联昌国际(CIMB Group), 蚂蚁还与多家区域金融技术公司进行竞争,这些技术公司正在扩大其在东南亚的服务和市场。

总部位于新加坡的支付行业高管对《The Ken》杂志说:“最初的想法是开发一条珍珠项链,在每个连接在一起的市场中都占有一席之地。” “ 但是现在,这是真正的水果沙拉,这使得不可能将所有资源都丢给一家公司 。” 他们要求匿名,因为他们不想通过公开批评公司来损害与蚂蚁金服的关系。

现在似乎是时候翻倍了,蚂蚁金服正处于期待已久的IPO的风口浪尖,这可能将使该公司的估值达到2500亿美元。蚂蚁金服在招股说明书中表示,计划将其IPO收益的10%用于扩大其全球市场。 而东南亚业务将是重中之重。

蚂蚁帝国

2017年,蚂蚁金服首席执行官井贤栋表示该公司正在寻求战略与位置优越的本地实体建立合作伙伴关系,并可以从技术中受益。在东南亚,这通常意味着与在位者合作(政府)。

为了将数字金融普惠带给全世界更多的人,蚂蚁金服采取了与海外战略合作伙伴合作的方式,并为其提供创新解决方案 - 井贤栋

蚂蚁为其本地合作伙伴提供了丰富的经验和专业知识,但它也在忙于提取数据以使其金融服务技术适应该地区。“蚂蚁在中国拥有数亿用户;它已经建立了流程,拥有知识和算法,”菲律宾支付行业的一位前高管告诉The Ken。“这不仅使它们与本地竞争对手脱颖而出,甚至与美国金融服务也脱颖而出。一旦拥有用户数据,他们将比其他所有人拥有巨大的优势。” 高管要求匿名,因为他们不想公开讨论前竞争对手。

蚂蚁告诉The Ken,它无权访问用户数据。“我们与被投资公司没有数据共享安排,也无法访问他们的用户数据。数据隐私和保护是Ant的基本优先事项,也是我们与合作伙伴,客户和用户建立的信任的核心部分。”一位发言人说。

但是,与初创公司或小型企业不同,与大公司达成交易可能会导致权力纠纷。

蚂蚁金服在2016年投资Ascend Money。其交易包括有权购买额外的30%股份。蚂蚁拒绝评论是否行权。

鉴于正大集团的规模,增加其在Ascend Money中的所有权股份似乎是一个严峻的挑战。该集团经营着零售,电信和农业领域的200多个业务。据《日经亚洲评论》报道,其中包括在泰国开设的10,000家711家便利店的特许经营权,这些商店的年收入为630亿美元。即使在这个庞大的帝国中,数字服务也被视为极为重要的一部分。

由于投资仅涵盖其泰国业务,因此蚂蚁在Ascend的地位也受到限制。同时因为与7-11的合作,蚂蚁集团也参与了TrueMoney Wallet的投资,这是泰国最顶级的金融 科技 服务之一。但是,Ascend在印度尼西亚,菲律宾,越南,缅甸和柬埔寨活跃,在这些地方提供企业对企业的金融服务和跨境汇款服务。

考虑到团队和项目可能会重叠,将这两个业务联系起来是一项挑战。这使蚂蚁不能参与Ascend战略的大部分工作,暗示着合作伙伴关系不平衡。这也意味着,Ascend正在与蚂蚁投资组合公司竞争,例如缅甸的Wave Money和菲律宾的GCash。

据Ascend的一位高管说,蚂蚁一直与Ascend保持业务发展的联系,经常共享报告和数据,但这种关系并不是相互对等的。该高管补充说,在Ascend内部,该公司如何与蚂蚁集团在未来项目上合作一直存在不确定性。他们要求匿名,因为他们没有获得公司的授权与媒体沟通。

蚂蚁集团在马来西亚的表现似乎更好,在马来西亚,它与拥有70亿美元资产的联昌国际集团(CIMB Group)合资经营Touch'n GoeWallet。Touch n’Go拥有1400万注册用户,几乎占该国人口的一半。 它在马来希望有着稳固的地位(作为公共交通支付方式的选择已经建立了二十多年),今年被政府进一步委以重任,使其成为向公民发放疫情困难基金的三个移动钱包之一。

这恰恰是蚂蚁金服与CIMB于2017年7月启动Touch n’Go Digital的主流方式。但是,这并不是排他的关系。2018年 蚂蚁启动了与其对手渣打银行在中国的基于区块链的汇款服务。2020年9月,渣打银行与bKash合作,这一家由蚂蚁支持的孟加拉国移动钱包。 使该国的移民工人能够使用该钱包进行汇款服务。这笔交易意义重大,马来西亚在拥有100万孟加拉国劳工,仅在2020年7月就汇出了2.357亿美元给他们的家庭。

蚂蚁的影响力

但是,当蚂蚁的东南亚剧本放在一起时,它会产生令人印象深刻的结果。这家中国公司带来了其专业知识,人才和技术体系,可以促进其合作伙伴业务的发展。

Mynt是一家由电信运营商Globe创立的菲律宾金融 科技 公司,蚂蚁金服于2017年2月投资时,其GCash消费者钱包陷入困境。如今,GCash已成为菲律宾新兴移动钱包领域的领先者。在Apple和Google应用商店中,它在财务应用程序中均排名第一。菲律宾前高管告诉《The Ken》,其转型的很大一部分归功于蚂蚁。 “基于产品,技术和结构,它们领先于其他产品,这种方法确实取得了回报。”

蚂蚁让移动支付变得更轻松,更可靠,同时增加了,高管还补充说,该公司具有出色的信贷和风险控制能力。他们指出,在菲律宾,评估客户的信用度是一项巨大的挑战,因为没有合适的信用系统可供参考。

这与腾讯在东南亚的战略形成鲜明对比。腾讯于2018年11月通过投资Voyager参与菲律宾,Voyager是菲律宾长途电信公司PLDT旗下的金融 科技 企业,经营着一个名为PayMaya的手机钱包。腾讯的参与并不仅限于直接影响,还包括提供资源。结果,PayMaya无法赶上GCash。同样,Gojek也没有利用收购钱包Coins来弥补差距。(利用Coins来争取对竞争对手的优势)。【墨腾按:PLDT曾经是Rocket Internet Pre IPO的投资人,但是自身的移动运营上Smart其实一直落后于Globe】

蚂蚁想在印度尼西亚复制其菲律宾战略的成功,而在印度尼西亚,蚂蚁是Dana的主要投资者。电子钱包来自曾经是该国最受欢迎的社交App BlackBerry Messenger(BBM)。 作为首席执行官的 Vincent Iswaratioso,此前曾担任了支付宝印度尼西亚负责人两年的时间。 印尼拥有2.6亿人口,因此需要在印度尼西亚逐渐打造其品牌形象,并让Iswaratioso负责。蚂蚁金服还从其新加坡管理团队聘请了Ken Tan来领导一个风险管理团队,该团队曾经成功帮助其金融业务在中国成为摇钱树的奠定了基础。Tan去年离开了蚂蚁集团和Dana,加入了新加坡大华银行。蚂蚁作为Dana的合作伙伴是非常理想的。它具有很强大的领导力和技术能力,因此可以引进技术或与其他服务结合。

但是,与菲律宾不同,强大竞争对手是蚂蚁在印尼的一个问题,印尼是东南亚最具竞争力的移动支付市场,有四个强大的竞争者。OVO是一家拥有3年 历史 的金融 科技 独角兽,在2017年11月获得Grab的战略投资后,已经成为行业的领跑者。在2019年3月,在阿里巴巴和日本投资者软银支持印尼电商平台Tokopedia也加入OVO的合作体系之后,OVO迅速崛起并巩固其在该行业的地位。OVO与GoPay都借鉴了WhatsApp以及PayPal的经验从而展开了激烈竞争。

一位新加坡支付企业的高管表示,Dana现在位居第四,落后于政府支持的钱包LinkAja。Dana的一条出路可能是与OVO的合并交易。但考虑到战略投资者支持OVO,这将给蚂蚁带来一点安慰。钱包对于Grab在印尼的整体推广至关重要。OVO首席执行官Jason Thompson于2018年1月加盟Grab,领导支付业务。Grab也向OVO提供了技术和相关人力资源。

如果要像在菲律宾计划的那样将技术引入该公司,这种紧密的关系对于蚂蚁来说将是一个挑战。GCash摆脱了支付宝的使用范围,利用其在移动钱包领域的主导地位推出了包括小额贷款和保险产品在内的金融服务。

GCash和Mynt在菲律宾也得到了当地大财团Ayala的支持,公司是Globe的主要股东。“随着时间的流逝,我认为蚂蚁集团将争取拥有大部分业务。”这位菲律宾高管说。“企业肯定会寻求更多的资金。”但是,不能保证。Ayala集团拥有一家主要银行。与泰国的正大集团一样,金融服务也是Ayala推动数字化发展的核心。这可能会使其不愿放弃控制权“。

上市后的未来

蚂蚁在东南亚的投资一直持续到2020年。它在5月份与在新加坡上市的集团公司Yoma Strategic Holdings开始在缅甸的合作关系。它还在等待新加坡数字银行牌照申请的结果。

蚂蚁集团与冬海集团在内的14个腾讯系竞争对手抗衡,该公司经营电商平台Shopee,并和Grab和新电信的联合竞标竞争新加坡的数字银行牌照。如果该公司获准在新加坡提供银行服务,则可能会在东南亚其他地区复制该服务。马来西亚是该地区第一个效仿并征求自己的数字银行牌照申请的国家之一。(效仿新加坡的数字银行热潮。)

蚂蚁似乎意识到了它在东南亚的地位。它的IPO招股说明书表示相对于开发自己的服务和专注于收入流,它更加希望通过与不同的合作伙伴建立战略关系实现更广泛的金融服务并维护一个“开放的平台”。

扩大市场对蚂蚁集团至关重要。银行业本身并不是东南亚普遍的主流,更不用说数字金融服务了。用户数量的增加将意味着未来的收入机会将大大增加。但是,蚂蚁不是慈善机构,上市之后会持续带来增长的压力。如果中国出台限制数字金融服务的法规,且传统的银行和初创企业正在缩小差距,那么这项任务将变得更具挑战性。

蚂蚁金服蜕变而成的蚂蚁集团在6月强调这是一个 科技 公司不仅仅只是一个金融服务公司。这可能会预示与本地合作伙伴一起开发基于技术产品的修订战略,而不是仅仅专注于提供金融服务。

咨询公司安永的全球新兴市场金融技术负责人瓦伦•米塔尔(Varun Mittal)说:“大型 科技 公司正在研究如何开发可用于销售金融产品,广告和其他产生收益服务的分销渠道。”

东南亚已经有许多公司参与到“超级应用”的业务生态中,但是蚂蚁集团通过将支付宝变成消费者必不可少的手机钱包,在中国实施了这一战略。 但在东南亚它的效果并不如预期,所以整合伙伴关系可能就成了唯一途径了。

墨腾会免费提供 2020上半年东南亚风险投资报告 东南亚行业赋能报告摘要。 希望获取的朋友,可以通过电邮[email protected]或者微信后台联系我们