章节出错了,点此刷新,刷新后小编会在两分钟内校正章节内容,请稍后再试。
“冬羽姐姐。”夏咪抓紧了旁边冬羽的手臂,她的眼睛装作不在意似地四处观察着,“这里会不会有混徒。”
“拉缇没有发出警报。那估计就是没有了。”冬羽也攥紧夏咪的手,缓慢地走着。
近乎极致的寂静和近乎极致的黑暗包裹着她们。眯起眼睛,勉强能够看到树木的轮廓。
两人互相搀扶着,小心翼翼地踏出一步。
“咔吱。”什么东西碎裂的声音。
是叶子吧。是叶子。绝对是叶子。她们安慰着自己。
这里就像是一个密封着的骨灰盒一样。没一丝生气。好像有双冰冷的手抚摸着自己的背脊,冰冷无比。
“咕咚。”夏咪不安地咽了一口口水,在寂静的空气中格外清晰。
“呼......”二人急促的呼吸声愈发明显,温热的呼吸似乎是冰冷的空气中唯一的可以勉强维持自己体温的东西了。
冰冷的空气从鼻腔刺进肺部,好像一把刀在剖析着自己的肺部。从皮肤延伸到心脏的冰冷几乎要把整个身体冻僵。
“哦?二位小姐可是迷路了啊?否则......怎会误闯在下的寒舍。”儒雅温润的男声在不远处传来。
伴随而来的,还有点点流萤。
像是暖阳在空中炸裂开来,一点点光芒触到夏咪和冬羽的皮肤,化作一阵阵暖流流进她们体内。大抵是这冰冷得像极寒之地的地方唯一的温暖。
光芒结束后,那少年端着一支蜡烛。
火焰摇晃着,光芒没有多亮,却足以明亮视线。微弱的火焰把冬羽和夏咪的双眸映得明亮。
“二位有双眼啊......一定很美吧......”那少年嘟囔了一句,微微呼出的几口气让火焰更加倾向夏咪和冬羽几分,“可惜在下看不到。”
夏咪和冬羽这才注意到少年的样貌。
白色的衬衫,黑色的休闲裤和一双帆布鞋,十分普通,但是干净得一尘不染。
他或许长得很好看吧,如果不看眼睛的话,当然,也看不到眼睛。少年的眼睛被一块白色的绷带遮住。
嘴角挂着浅浅的笑容,可惜不能看到眼中的光。
可是总有些什么东西发着光代替了它吧。
“请问......”冬羽戒备地往后退了一步,抓紧了夏咪的手,“请问您是......?”
“啊,忘记自我介绍了。”少年优雅地缓缓鞠躬,“在下名叫长秉烛。”他嘴角礼貌地扬起一个亲和的微笑,“是一名异能者。当然,如二位所见,我也是一名盲人。”
“异能者?”夏咪好奇地歪歪头,“听那个死面瘫说过诶。”
“二位好奇异能者是什么吗?”长秉烛的修长的手指微微一动,舒适的光芒一瞬间清扫开所有的黑暗,“这就是我的异能。”
“唔......似乎就和苏丽拉差不多吧。”夏咪抿了抿嘴。
“看来二位小姐是从舞音世界来的了。”长秉烛轻轻挥灭蜡烛,“请问有什么需要帮助的吗?在下十分乐意效劳。”
冬羽想了想:“请问您认识承音吗?”
“承音吗?”长秉烛扬着的嘴角僵住了,他勉强地把嘴角挂在一个还算有礼貌的高度,“在下知道,需要在下联系他吗?”
“那麻烦了。”冬羽也微微颔首。
“这是在下的荣幸。”长秉烛僵硬地笑着,有些颤抖地从口袋中掏出一个手机,拨通了一个他不怎么希望看到的电话号码。
“喂,我这里有两个小姑娘,希望见你。”他尽量抿住嘴唇,不让自己发出颤抖的声音,“你来我这里吧。”他不轻不重地吐出这几个字。
“不了。”隔着电话,长秉烛仿佛都能看到承音那个得意的笑容,“我现在马上回去,你只要把她们带过来就好了。”
长秉烛咬着牙:“好......”低沉的声音从喉咙里滚出来,“我现在就去......”
承音那边。
“这么生气干嘛......?”承音还是一如既往的面瘫脸,“筑秋,把我传送回去。不用很快,我十分钟之内到就好了,还有,你们现在不用去找紫色和粉色的了。”
“找到了?”筑秋把他拉到一个隐蔽的地方。
“她们到了长秉烛那里。”承音简单地应了一句,没再和筑秋搭话。
“准备好了嗷。”筑秋身上一道淡蓝色的光芒闪过,迅速地落在了承音身上。
承音家。
“你们先玩,我去找其她天女。”谢志扬和天女们随便客套了几句之后,轻轻搁下自己手中的水杯,理了理衣服,走出了门。
“谢志扬哥哥也走了呢......”小熠重重地坐在沙发上,“好无聊哦......”
“滴——”熟悉的指纹解锁声在玄关处响起。
“死面瘫回来了?”春宝往小熠那边挪了一分。
“春宝别怕,那家伙虽然看上去恐怖,但也绝对不敢动我们。”虽然这样,小熠还是紧紧地搂着春宝。
“打扰了。”长秉烛恭敬地微微躬身,娴熟又有些不情愿地套上了鞋套。
“诶?你是......”小熠松开了春宝,有些疑惑地看着长秉烛。
长秉烛没有说什么客套的话,一如既往地优雅地鞠躬,谦和地介绍着自己:“在下叫长秉烛,如你们所见在下是一名盲人。与此同时,在下也是一名异能者。这次来的目的,是为了带这二位小姐来到这里。”长秉烛后退几步,躬下身子,做出一个请的手势。
“啊冬羽姐姐!夏咪!!!”
长秉烛轻轻笑了一声:“女生间友谊还真是可爱。”
“好久不见了,秉烛。”
“的确好久不见了啊。”长秉烛没有回头,他知道是承音。
承音显然还想再说些什么,他张张嘴,却一个字都没有憋出来。难得地,他的脸上泛起淡淡的红晕。
“你不必解释什么。我把人带到了。告辞了。”长秉烛没再说什么,生硬地向前走去,像是刚刚编好的程序一样。
承音一瞬间像是不知道做什么一样:“等下!”他手忙脚乱地攥住长秉烛的手腕,“我可以保护好你们!”
“所以呢?”长秉烛缓缓地转过头来,像是机器人卡壳了一样,“所以他们死了!”他一字一顿地说,“这就是你的保护?”
承音咬咬牙,猛地把长秉烛拽回到自己身边,把他推到沙发上去,他冷着声音:“孤说可以就是可以!孤永远都不会再让你们受到伤害了!这是孤的承诺!”
他的脸蓦地靠近长秉烛:“孤的承诺,孤自然会做到!”他的语气中好像藏着无限悲伤和无限愤怒,“汝的眼睛孤也会治好!孤也会让这个世界安康!这些孤都会做到的!”
“所以现在!汝能回到吾等身边了吗!吾等需要汝!失去了汝!吾等就不再是一个团体了!请汝回来吧!”他扯着长秉烛的领带,“请回来吧!”
承音乱了阵脚,他慌乱地吼着,一时间失了原先冷淡沉着的气质。
“什么......情况......”春宝被承音这幅模样弄得有点慌张。
“看样子......”夏咪神秘地笑了笑,“估计是死面瘫喜欢上这个超有礼貌的大哥哥了!”她嘴角露出一抹“我懂”的表情。
“诶我也觉得是这样!”小熠和夏咪击了个掌,一起露出一抹“我懂”的表情。
“这样的吗?”冬羽深深地看了承音和长秉烛一眼,“估计是很痛苦的爱恨纠葛吧。”
“那他们一定很难过吧......”春宝难过地看了承音和长秉烛一眼。
“你们在说什么?”承音和长秉烛齐齐地转过头来。
“没什么,你们继续。”四人的语气中流露出一种奇怪的悲伤。
“???”空气中弥漫着问号。
............
二人总算是冷静下来了。
“秉烛,你回来吧。”承音淡淡地说。
“好。”长秉烛也淡淡地说。
二人对视一眼,蓦地笑了。
(不是BL只是战友不是BL只是战友不是BL只是战友)
............
“那个黄色的和青色的在哪里啊......”丁珈琪不耐烦地跺了跺脚,“唔筑秋秋你就不能搜索一下吗!”
“没办法啊。”筑秋的手不断地在平板上滑动着,“她们可能会出现在这52家店中。”
“52家店???!!”丁珈琪整个人几乎要瘫下去,“我们一家一家找要多久啊!!!”
“笨!”筑秋用指节敲了敲丁珈琪的天灵盖,“因为他们一定会出现在这些店里面,所以我们可以不用考虑范围问题。”
“所以呢......”丁珈琪揉揉头,埋怨地看着筑秋,“这就是打我的原因?”
“如果令一家店就是一个点。她们只会出现在点上,而不会出现在联结两点的线上。”筑秋的手指在另一台平板上不断地输入着代码,“我们只需要求出怎样的路线可以在最短时间内到达这几家店。”
“将军饮马问题升级版?”丁珈琪歪歪头,好奇地凑过去看了看,“但是为什么你要输出这么多代码啊?”
“这个问题叫:巡回推销问题(TravellingSalesmanProblem)。”筑秋嘴角扬起一个自信的弧度,“可以用Python解出来。看好了。”
importnumpyasnp
importmatplotlib.pyplotasplt
importpdb
“旅行商问题(TSP,TravelingSalesmanProblem)“
coordinates=np.array([[66.83,25.36],[61.95,26.34],[40,44.39],[24.39,14.63],[17.07,22.93],[22.93,76.1],
[51.71,94.14],[87.32,65.36],[68.78,52.19],[84.88,36.09],[50,30],[40,20],[25,26]])
#得到距离矩阵的函数
defgetdistmat(coordinates):
num=coordinates.shape[0]#52个坐标点
distmat=np.zeros((num,num))#52X52距离矩阵
foriinrange(num):
forjinrange(i,num):
distmat[i][j]=distmat[j][i]=np.linalg.norm((coordinates[i]-coordinates[j]),ord=2)#求2范数,即距离
#print('距离矩阵',distmat)
returndistmat#对称距离矩阵
#初始化参数
definitpara():
alpha=0.99
t=(1,100)#元祖
markovlen=1000
returnalpha,t,markovlen
num=coordinates.shape[0]
distmat=getdistmat(coordinates)#得到距离矩阵
solutionnew=np.arange(num)#[0,1,...,num-1],即新路线图
#valuenew=np.max(num)
solutioncurrent=solutionnew.copy()#[0,1,...,num-1],即当前路线图
valuecurrent=99000#np.max这样的源代码可能同样是因为版本问题被当做函数不能正确使用,应取一个较大值作为初始值
#print(valuecurrent)
solutionbest=solutionnew.copy()
valuebest=99000#np.max
alpha,t2,markovlen=initpara()
t=t2[1]#t=100
t_min=t2[0]
result=[]#记录迭代过程中的最优距离解
whilet>t_min:
foriinnp.arange(markovlen):
#下面的两交换和三角换是两种扰动方式,用于产生新解
ifnp.random.rand()>0.5:#交换路径中的这2个节点的顺序
#np.random.rand()产生[0,1)区间的均匀随机数
whileTrue:#产生两个不同的随机数
loc1=np.int(np.ceil(np.random.rand()*(num-1)))#np.ceil表示向大于等于该值的向上取整;np.floor:向下取整
loc2=np.int(np.ceil(np.random.rand()*(num-1)))
##print(loc1,loc2)
ifloc1!=loc2:
break
solutionnew[loc1],solutionnew[loc2]=solutionnew[loc2],solutionnew[loc1]
else:#三交换
whileTrue:
loc1=np.int(np.ceil(np.random.rand()*(num-1)))
loc2=np.int(np.ceil(np.random.rand()*(num-1)))
loc3=np.int(np.ceil(np.random.rand()*(num-1)))
if((loc1!=loc2)&(loc2!=loc3)&(loc1!=loc3)):
break
#下面的三个判断语句使得loc1<loc2<loc3
ifloc1>loc2:
loc1,loc2=loc2,loc1
ifloc2>loc3:
loc2,loc3=loc3,loc2
ifloc1>loc2:
loc1,loc2=loc2,loc1
#下面的三行代码将[loc1,loc2)区间的数据插入到loc3之后
tmplist=solutionnew[loc1:loc2].copy()
solutionnew[loc1:loc3-loc2+1+loc1]=solutionnew[loc2:loc3+1].copy()
solutionnew[loc3-loc2+1+loc1:loc3+1]=tmplist.copy()
valuenew=0
foriinrange(num-1):
valuenew+=distmat[solutionnew[i]][solutionnew[i+1]]
valuenew+=distmat[solutionnew[0]][solutionnew[num-1]]
#print(valuenew)
ifvaluenew<valuecurrent:#接受该解
#更新solutioncurrent和solutionbest
valuecurrent=valuenew
solutioncurrent=solutionnew.copy()
ifvaluenew<valuebest:
valuebest=valuenew
solutionbest=solutionnew.copy()
else:#按一定的概率接受该解
ifnp.random.rand()<np.exp(-(valuenew-valuecurrent)/t):
valuecurrent=valuenew
solutioncurrent=solutionnew.copy()
else:
solutionnew=solutioncurrent.copy()
t=alpha*t
result.append(valuebest)
#print(t)#程序运行时间较长,打印t来监视程序进展速度
#用来显示结果
#plt.plot(
plot_x_set=[]
plot_y_set=[]
print(solutioncurrent+1)#输出最优路径图
foriinsolutioncurrent:
#plt.plot(coordinates[i])
plot_x_set.append(coordinates[i][0])
plot_y_set.append(coordinates[i][1])
plt.plot(plot_x_set,plot_y_set,'r')
plt.scatter(plot_x_set,plot_y_set,)
fori,txtinenumerate(solutionnew+1):#标注每个点的序号
plt.annotate(txt,(plot_x_set[i],plot_y_set[i]))
#首尾2个点的连线
x=[plot_x_set[0],plot_x_set[-1]]
y=[plot_y_set[0],plot_y_set[-1]]
plt.plot(x,y,'k')#用黑色标识
plt.show()
#绘制迭代次数与最短距离图片
plt.plot(np.array(result))
plt.ylabel(“bestvalue“)
plt.xlabel(“t“)
plt.show()
————————————————
(版权声明:本文为CSDN博主「Jancydc」的原创文章,遵循CC4.0BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:
“这......”丁珈琪愣愣地盯着飞速输出的代码,沉沉地看了看筑秋的侧脸,“你这么厉害,让我怎么活。”
“好了,总之就是得出最短的线路了!”筑秋收起平板,“我已经把那个线路背下来了,我们走吧!”
丁珈琪咬咬嘴唇,没说什么,跟了上去。
“怎么了丁丁?”筑秋感觉丁珈琪有什么不对。
“你好厉害哦。”丁珈琪怯怯地瞄了筑秋一眼。
“不是好事吗?你的好朋友厉害点。”筑秋没理解,愣愣地追问着。
“没什么......”丁珈琪埋下头,没再说什么。
“到底怎么了呢?”筑秋嘀咕了一句,没再追问下去。。
就现在而言,找到天女这一件事的重要性高于知道丁珈琪心中在想什么。
虽然丁珈琪也很重要。