• 沒有找到結果。

第五章 結論與未來展望

5.2 未來展望

以能量的觀點套用在螞蟻演算法上,讓演算法能有除了距離以外的搜 尋目標,同時藉由代入不同能量的參考條件,能使得此演算法有廣泛的延 伸性,實作演算法之所使用 javascript 的方式撰寫,網頁的方式呈現,便是 期望能更容易地被應用各種場合,而不侷限於特殊帄台、特殊編譯環境。

本論文的期望未來能夠加入更多各種不同因素,加強能量預估的精準 性,例如電池的健康條件、電池內耗因素,或針對路況因素,加入各種比 較,例如紅綠燈的時間長短、路面的帄滑程度,期望能提升預測的準確度,

以應用在未來的電動車上,除了能量最佳路徑外,為其提供電動車充電站 的路徑指引,又或者應用在多車輛派遣的規劃,達到真正智能車的目的。

參考文獻

[1] Janet Heine Barnett, Early writings on graph theory: Euler circuits and the Königsberg bridge problem, Colorado State University Pueblo, 2005.

[2] Dijkstra, E. W., A note on two problems in connexion with graphs, Numerische Mathematik, 1959.

[3] I. Chabini and S. Lan, “Adaptations of the A* algorithm for the computation of fastest paths in deterministic discrete-time dynamic networks,” IEEE Transactions on Intelligent Transportation Systems, vol. 3, no. 1, pp.60-74, Mar. 2002.

[4]張傑,

以改良的 A*演算法規劃較佳導引路徑之研究”,大同大學 資訊工程研究所,碩士論文,2009。

[5] Eiben, Agoston E., P-E. Raue, and Zs Ruttkay., “Genetic algorithms with multi-parent recombination," Parallel Problem Solving from Nature—PPSN III, Springer Berlin Heidelberg, 1994, pp. 78-87.

[6]曹家瑞,

物流業配送系統之車輛指派與路徑規劃”,國立台北科技大學 生產系統工程與管理研究所,碩士論文,1999。

[7] Dorigo, Marco, Vittorio Maniezzo, and Alberto Colorni, “Ant System:

Optimization by a Colony of Cooperating Agents,” IEEE Transactions On System, Man, And Cybernetics-Part B Cybernetics, vol. 26, no. 1, 1996.

[8] Flood, Merrill M., “The traveling-salesman problem,” Operations Research, 1956, pp, 61-75.

[9]江冠慶,

蟻拓優化演算法應用於多型態零工式生產排程問題”,國立臺 灣大學工業工程學研究所,碩士論文,2013。

[10] Marco Dorigo, Senior Member, IEEE, and Luca Maria Gambardella, Member,

IEEE, “Ant Colony System: A Cooperative Learning Approach to the Traveling

Salesman Problem,” Evolutionary Computation, IEEE Transactions, vol. 1.1, pp.

53-66, 1997.

[11] Duc-Hien Nguyen and Jyh-Ching Juang, “A Refined Ant Colony algorithm for Optimal Path Planning,” Proceedings of 2011 International Conference on System Science and Engineering, China, 2011, pp. 125.

[12] E.Bonabeau, M.Dorigo, G.Theraulaz, “Swarm Intelligence: From natural to artificial systems, ” New York: Oxford University Press. 1999.

[13] B. Bullnheimer, R.F. Hartl and C. Strauss, “A new rank-based version of the ant system: A computational study, ” Central European Journal of

Operations Research and Economics 7, pp. 25-38, 1999.

[14] Zhang, Y., Wang, H., Zhang, Y., & Chen, Y., “Best-worst ant system,” In Advanced Computer Control, 2011 3rd International Conference on IEEE, pp.

392-395, 2011.

[15]林裕勝,

細菌演化模糊控制器及其在兩輪移動載具控制上之應用研 究”,國立臺灣師範大學應用電子科技學系,碩士論文,2013。

[16]溫彥侯,

兩輪式自我帄衡車之控制器設計與實現”,國立臺灣師範大 學應用電子科技學系,碩士論文,2013。

[17] Lee, J. W., Choy, Y. I., Sugisakaz, M., & Lee, J. J, “Study of novel heterogene- ous ant colony optimization algorithm for global path planning,” In Industrial Electronics, IEEE International Symposium, 2010, pp. 1961-1966.

[18] JI, Xiaogang, LI, Nan. “ACO-Based multiple geometric elements measure path planning for CMM,” In Computer Application and System Modeling, 2010

International Conference on IEEE, 2010, pp. V14-539-V14-544.

[19] Lee, J. W., Kim, J. J., Choi, B. S., & Lee, J. J., “Improved Ant Colony

Humanoid Robots 8th IEEE-RAS International Conference on IEEE, 2008, pp.

[24]Zehua Zhang, Xuejie Zhang, “Realization of open cloud computing federation based on mobile agent,” Intelligent Computing and Intelligent Systems IEEE Inte- rnational Conference, 2009, pp. 642-646.

[25] Kai Lei, Yining Ma, Zhi Tan, “Performance Comparison and Evaluation of Web Development Technologies in PHP, Python, and Node.js,” Computational Science and Engineering IEEE 17th International Conference, 2014.

[26] Tilkov, S., Vinoski, S., “Node.js: Using JavaScript to Build High-Performance Network Programs,” Internet Computing IEEE, 2010, pp. 80- 83.

[27] Jaramillo, D., Nguyen Van Duy, Newhook, R., “Real-time experience techniques for collaborative tools on mobile,” SOUTHEASTCON IEEE, 2014, pp. 1-6.

[28] Hausladen, J., Pohn, B., Horauer, M., “A cloud-based integrated development environment for embedded systems,” Mechatronic and Embedded Systems and Appl- ications IEEE/ASME 10th International Conference, 2014, pp. 1-5.

[29] Zhiqiang You, Huaiyu Xu, Jihui Xu, Jinfeng Xu, Dayu Shi, “Micro-Blogging

gence and Communication Networks Fourth International Conference, 2012, pp.

150-153.

[30] Hao Zhang, Manchun Li, Zhenjie Chen, Zhiliang Bao, Qiuhao Huang, Dong Cai,

“Land use information release system based on Google Maps API and XML,” Geo- informatics 18th International Conference, 2010, pp. 1-4.

.

附錄

13. ClassACO.prototype.initial=function(){

14. this.initial_pheromone_value=Math.random() 15. this.pheromones=[];

16. this.points=[];

17. }

18. ClassACO.prototype.removeElement=function (arr){

19. var what, a = arguments, L = a.length, ax;

28. ClassACO.prototype.randomTarget = function(ant){

29. var index=this.getIndOfPoint(ant.nowAt);

30. var dests=[];

31. var dest_probs=[];

32. var p_sum=0;

34. var _this = this;

35. _thisP[index].forEach(function(val,ind){

36. dests.push(val.dest);

37. });

38. ant.trail.forEach(function(text,ind){

39. _this.removeElement(dests,text);

40. });

41. if (!dests.length)return 0;

42. //console.log(ant.preAt);

43. dests.forEach(function(val,ind){

44. _thisP[index].forEach(function(v,i){

45. if(v.dest==val){

53. if(ant.preAt)energyInverse = 0.001/_this.calEnergy(ant.nowAt,v.dest,ant .preAt)

54. var property = Math.pow(v.pheromone_val,alpha)*Math.pow(energyInverse,b eta);

63. if(dest_probs[d].pheromone_val>rand)return dest_probs[d].dest;

64. } 65. }

66. ClassACO.prototype.antMove = function(ant){

67. var newDest=this.randomTarget(ant);

68. var pre = ant.trail.slice(-2)[0];

69. if(newDest==0)return 0; // went to dead road

70. else if(newDest==this.end){ // to the end

71. ant.energy+=this.calEnergy(ant.nowAt,newDest,pre);

72. ant.distance+=this.calDistance(ant.nowAt,newDest);

73. ant.trail.push(this.end);

79. ant.energy+=this.calEnergy(ant.nowAt,newDest,pre);

80. ant.distance+=this.calDistance(ant.nowAt,newDest);

81. ant.trail.push(newDest);

87. ClassACO.prototype.antsMove = function(number){

88. var Ants=[];

103. ClassACO.prototype.disPh= function(){

104. var dis_para=0.3;

105. var _this=this;

106. _this.pheromones.forEach(function(phForm , i){

107. phForm.forEach(function(phTo,j){

108. phTo.pheromone_val*=dis_para 109. })

110. }) 111. }

112. ClassACO.prototype.leavePHForAnts = function (Ants){

113. var _this = this;

114. var bestNumber = Math.floor(Ants.length*0.6) 115. var ants = Ants.slice(0,bestNumber)

116. Ants.forEach(function(ant,ind){

117. if (ant.nowAt==_this.end){

118. _this.leavePh(ant);

119. } 120. });

121. }

122. ClassACO.prototype.leavePh=function(ant){

123. var p=ant.trail.slice(0);

124. var p_ini=p.shift();

125. var p_to;

126. while (p_to=p.shift()){

127. if(this.mode>0)

128. this.addPh(p_ini,p_to,59.76*this.directDistance/(ant.energy*ant.trail.len gth));

129. else

130. this.addPh(p_ini,p_to,this.directDistance/(ant.distance*ant.trail.length) );

131. p_ini=p_to;

132. } 133. }

134. ClassACO.prototype.addPh=function(src,dest,val){

135. src=this.getIndOfPoint(src);

136. this.pheromones[src].forEach(function(v,i){

137. if(v.dest==dest){

138. v.pheromone_val=v.pheromone_val+val;

139. } 140. });

141. }

142. ClassACO.prototype.getIndOfPoint=function(v){

143. var op="";

144. this.points.forEach(function( point , key ) { 145. if(v==point.text)op=key;

146. });

147. return op;

148. }

149. ClassACO.prototype.getDistance = function( lat1, lng1, lat2, lng2){

150. var rad = function(d){

157. var s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a/2),2) + Math.cos(radLat1)

*Math.cos(radLat2)*Math.pow(Math.sin(b/2),2)));

158. s = s * 6378.137; //EARTH_RADIUS;

159. s = Math.round(s * 10000) / 10000;

160. return s;

161. }

162. ClassACO.prototype.calDistance=function(src,dest){

163. src = this.getIndOfPoint(src);

164. dest= this.getIndOfPoint(dest);

165. var length = this.getDistance(this.points[src].x,this.points[src].y,this.poin ts[dest].x,this.points[dest].y);

166. return length;

167. }

168. ClassACO.prototype.calEnergy=function(src,dest,pre){

169. var degEnergy = function(deg){

170. if(deg<(-6))return 0.3;

171. else if(deg<0)return 1-0.0194*Math.pow(-deg,2);

172. else if(deg<10)return 1+0.15*Math.pow(deg,1.7);

173. else return 9;

174. }

175. src = this.getIndOfPoint(src);

176. dest= this.getIndOfPoint(dest);

177. pre = this.getIndOfPoint(pre)

178. var dh=this.points[dest].h-this.points[src].h;

179. var length = this.getDistance(this.points[src].x,this.points[src].y,this.poin ts[dest].x,this.points[dest].y);

180. var deg=Math.atan(dh/length)*360/3.14;

181. var v2x = this.points[dest].x-this.points[src].x 182. var v2y = this.points[dest].y-this.points[src].y 183. var v1x = this.points[src].x-this.points[pre].x 184. var v1y = this.points[src].y-this.points[pre].y 185. var ACorssB = v1x *v2y - v1y* v2x

186. var left = ACorssB < 0

187. var lengthAC = this.getDistance(this.points[dest].x,this.points[dest].y,this.

points[pre].x,this.points[pre].y)

188. var lengthAB = this.getDistance(this.points[src].x,this.points[src].y,this.po ints[pre].x,this.points[pre].y)

189. var lengthBC = length

190. var theta = lengthAB*lengthAB +lengthBC*lengthBC - lengthAC*lengthAC 191. theta = theta/ (2*lengthAB*lengthBC)

192. theta = Math.acos(theta) *180/Math.PI 193. theta = 180 - theta

194. var ret = 0;

195. if(pre==src)ret+=0// // start

196. else if(theta<20)ret+=0;//0.15 // straigt 197. else ret+=(left?0.6:0.35)

198. ret = ret + 59.76*length*degEnergy(deg); //where 59.76 is the energy per met er

199. return ret 200. }

自傳

經過不斷的努力與加強,我才勉強從廣大的電子領域中,吸收到一點 皮毛,順利完成所有學業課程,期間的過程,披星戴月,過關斬將,對我 而言,有過之而無不及。所幸,有失必有所得,儘管我是"時"倍功半,但 花下大把時間後,我對電子領域的收穫,不僅僅是一個學分的 PASS 而已。

即將完成碩士的學業,踏入職場,也代表人生要將進入新的旅程,過 往二十多年求學的成果,將在此刻得到驗收,不論結果是肯定還是挫折,

我都將以最謙卑的心,配上十二萬分努力的精神,以及活到老學到老的精 神,為未來人生創造屬於自己的一片天。

相關文件