日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

根据经纬度计算范围_遗传算法可视化项目(插曲):关于距离的计算

發布時間:2025/3/21 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 根据经纬度计算范围_遗传算法可视化项目(插曲):关于距离的计算 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

今天暫時先不講遺傳算法,我要解決的是TSP問題,具體什么TSP問題之前文章里講過了,大家可以點一下歷史消息或者這里:

遺傳算法可視化項目(1):概述

遺傳算法可視化項目(2):獲取信息

遺傳算法可視化項目(3):創建圖的數據結構

TSP問題里面除了算法還有一個重要的東西,就是距離,一般情況下計算兩點之間距離直接用公式:√(Δx2+Δy2),可是我之前爬到的數據是經緯度,兩地距離沒有這么簡單,因為畢竟是球面上兩點的距離,不是平面,這里我不用網上的那個推導出來的公式,我一步步推導,首先以地球球心為原點,赤道平面為xOy平面,建立xyz三維坐標系,我在這里就默認東經是[0°,180°],西經是[-180°,0°](反過來也沒事),北緯[0°,90°],南緯[-90°,0°](反過來沒問題),假設第一個點經緯度是(α1,β1),第二個點經緯度是(α2,β2)(α1,α2對應經度值;β1,β2對應緯度值)。很明顯第一個點轉換成為三維坐標是(cosα1,sinα1,sinβ1),第二個點轉換成為三維坐標也就是(cosα2,sinα2,sinβ2),點可以看成是向量,直接利用:

cosθ=兩向量數量積/兩向量模長的乘積

這個公式求出兩向量夾角的余弦值cosθ,然后再利用反余弦函數arccos求出θ,不需要進行平移啥的,arccos函數值域是[0,π],向量夾角也是這個范圍,最后利用公式L=|θ|*r(θ一定要是弧度制!r是地球平均半徑,不平均還真的有點難處理)求得弧長,也就是所謂的球面上兩點的距離!

接下來說一下昨天文章中遺留下來的MAX取多大的值的問題,設置成10的話上面那個公式完全不能用,最小值應該比地球平均半徑*π(也就是半圈)要大,這個值很明顯比10大很多,但為什么我要用10是因為我感覺就海南島那一小塊地方,球面可以近似的看成平面(如果不能看成平面用上面那個方法),然后就是那個距離公式(√(Δx2+Δy2)),然后我編寫程序算了一下經緯度的差,代碼和運行結果如下:

很明顯,令Δx=經度差,Δy=緯度差,代入√(Δx2+Δy2)這個距離公式,結果小于10,所以我可以用10表示不可達!

不管用什么方法,明天遺傳算法大家也就只是距離計算方式不同,但最后得出來的最短路徑都差不多那樣!文章最后附上項目地址:https://github.com/3480430977/DataVisualizationOfGA

最后歡迎大家掃碼關注

總結

以上是生活随笔為你收集整理的根据经纬度计算范围_遗传算法可视化项目(插曲):关于距离的计算的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。