如何在R中进行数学优化(TSP),也许使用optim()

时间:2016-12-18 00:09:31

标签: r mathematical-optimization traveling-salesman

我正在努力在R中创建一个基本的旅行商问题(TSP),但我找不到合适的资源来帮助我使用导入数据optim()。或者optim()可能不是我想要的。我将分享我的榜样,并希望你能指出我正确的方向或帮助解决具体问题。

有一些地方我试图找到最短的路线。每个位置需要在路线上访问一次且仅一次。路线需要在Origin开始和结束。可能的解决方案是:

From Origin>到位置1>到位置2>并返回Origin或

From Origin>到位置2>到位置1>并返回原点

我已将以下数据导入R:

distances <- read.csv("distances_test.csv")

ORIGIN-----DESTINATION-----DISTANCE

Origin-----Location2-------4.161917178

Origin-----Location1-------31.16857564

Location1--Location2-------30.75861336

Location1--Origin----------31.16857564

Location2--Location1-------30.75861336

Location2--Origin----------4.161917178

现在我想确定如何告诉R:

目标函数是最小化距离乘以x的总和,其中x是赋值变量(x = 0或1),表示选择了特定路径。

约束是:

(1)x介于0和1之间,x为整数(或者如果存在带optim()的快捷方式,则表示x为二进制)。 (2)所有原点指数= 1的总和(即卡车离开每个地点一次) (3)所有目的地指数的x总和= 1(即卡车到达每个地点一次) (4)初始原点指数是Origin (5)最终目的地索引是Origin

使用optim(par, objective),我不清楚初始参数是什么或如何编写此目标函数(即min sum(i=1..n)sum(j=1...n) distance(i,j) * x(i,j)

1 个答案:

答案 0 :(得分:1)

如果您想通过简单的单纯形算法解决TSP问题,那么R可以帮助您解决问题。您还可以查看此网站,其中在R中实现了此问题的几种启发式方法。 https://operatiology.wordpress.com/2014/05/15/traveling-salesman-problem-in-r/