OR-Tools用于解决车辆路径、流程、整数和线性规划以及约束编程等难题,但是只提供了提供了C++,Python,Java,.NET的接口。那么php怎么来调用呢。
我们选择使用php 运行python脚本来获取我们想要的结果
首先需要安装,可查看安装教程
本次运用的场景是多个包裹最短路径算法。假如一个快递员手上有12个包裹,如何规划一个最短送货的线路呢
根据每个包裹距离生成一个距离矩阵,注意这个距离单位是m
[
[
0,
270,
560,
560,
750,
1120,
990,
1150,
1200,
1280,
1010,
700
],
[
270,
0,
350,
400,
490,
920,
820,
1030,
1090,
1220,
990,
670
],
[
560,
350,
0,
120,
250,
580,
480,
710,
770,
940,
770,
480
],
[
560,
400,
120,
0,
350,
570,
430,
630,
680,
830,
650,
360
],
[
750,
490,
250,
350,
0,
510,
510,
780,
840,
1050,
950,
690
],
[
1120,
920,
580,
570,
510,
0,
220,
410,
460,
720,
780,
690
],
[
990,
820,
480,
430,
510,
220,
0,
270,
330,
560,
570,
480
],
[
1150,
1030,
710,
630,
780,
410,
270,
0,
60,
310,
430,
510
],
[
1200,
1090,
770,
680,
840,
460,
330,
60,
0,
250,
420,
540
],
[
1280,
1220,
940,
830,
1050,
720,
560,
310,
250,
0,
320,
580
],
[
1010,
990,
770,
650,
950,
780,
570,
430,
420,
320,
0,
320
],
[
700,
670,
480,
360,
690,
690,
480,
510,
540,
580,
320,
0
]
]
把这个距离矩阵传入我这边写好的python代码
脚本下载传送门
接下去看php如何调用
$discountMap = [[0, 270, 560, 560, 750, 1120, 990, 1150, 1200, 1280, 1010, 700], [270, 0, 350, 400, 490, 920, 820, 1030, 1090, 1220, 990, 670], [560, 350, 0, 120, 250, 580, 480, 710, 770, 940, 770, 480], [560, 400, 120, 0, 350, 570, 430, 630, 680, 830, 650, 360], [750, 490, 250, 350, 0, 510, 510, 780, 840, 1050, 950, 690], [1120, 920, 580, 570, 510, 0, 220, 410, 460, 720, 780, 690], [990, 820, 480, 430, 510, 220, 0, 270, 330, 560, 570, 480], [1150, 1030, 710, 630, 780, 410, 270, 0, 60, 310, 430, 510], [1200, 1090, 770, 680, 840, 460, 330, 60, 0, 250, 420, 540], [1280, 1220, 940, 830, 1050, 720, 560, 310, 250, 0, 320, 580], [1010, 990, 770, 650, 950, 780, 570, 430, 420, 320, 0, 320], [700, 670, 480, 360, 690, 690, 480, 510, 540, 580, 320, 0]];
$discountMap = json_encode($discountMap);
$command = "python3 google_ortools.py {$discountMap}";
//执行脚本以后。$res就是每个点排序后的结果了。只需要按顺序链接各点就可以是规划后的线路了
exec($command, $res);
//返回结果
['0', '11', '10', '9', '8', '7', '6', '5', '4', '2', '3', '1']
这个各个点在地图上的效果图

博客介绍了用PHP调用Python解决难题的方法。因OR - Tools只提供C++、Python、Java、.NET接口,故选择用PHP运行Python脚本。以多个包裹最短路径算法为例,根据包裹距离生成距离矩阵传入Python代码,还提及了安装教程和脚本下载。
1596

被折叠的 条评论
为什么被折叠?



