ahmedtaha / travelling-salesman-path
此包最新版本(dev-master)没有可用的许可证信息。
旅行商问题提出以下问题:“给定一系列城市及其之间的距离,什么是最短的路线,可以访问每个城市一次并返回起点城市?”
dev-master
2022-06-14 22:08 UTC
Requires (Dev)
- roave/security-advisories: dev-latest
This package is auto-updated.
Last update: 2024-09-15 04:05:37 UTC
README
安装
您可以通过Composer安装此包。
composer require ahmedtaha/travelling-salesman-path
使用以下命令发布您的oto配置文件
php artisan vendor:publish --provider="Ahmedtaha\TravellingSalesman\TravellingSalesmanServiceProvider" --tag="tsp"
如果您想使用谷歌地点的驾车距离来计算距离,请将tsp配置从config/tsp.php文件更改,或者我将自动计算直接距离
"google_api_key" => "", // google places paid key
用法
- 问题是找到所需位置的最短路线。让我们考虑一些您必须访问的城市。您应该以最低成本访问所有城市一次。
use Ahmedtaha\TravellingSalesman\Services\Concrete\TspBranchBound; $instance = TspBranchBound::getInstance(); #add starting point coordination $instance->addLocation([ 'id' => 'Mansoura', 'latitude' => 31.0409, 'longitude' => 31.3785 ]); #add array of another points coordination $instance->addLocation([ [ 'id' => 'Tanta', 'latitude' => 30.7865, 'longitude' => 31.0004 ], [ 'id' => 'Ismailia', 'latitude' => 30.5965, 'longitude' => 32.2715 ], [ 'id' => 'Damietta', 'latitude' => 31.4175, 'longitude' => 31.8144 ] ]); return $instance->solve();
结果
{ "cost": 495.6299999999999, "locations": [ { "latitude" : 31.0409, "longitude": 31.3785, "id" : "Mansoura" }, { "latitude" : 31.4175, "longitude": 31.8144, "id" : "Damietta" }, { "latitude" : 30.7865, "longitude": 31.0004, "id" : "Tanta" }, { "latitude" : 30.5965, "longitude": 32.2715, "id" : "Ismailia" } ], "path": "Mansoura -> Damietta , Damietta -> Tanta , Tanta -> Ismailia , Ismailia -> Mansoura" }
#关注我