我正在努力在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)
)
答案 0 :(得分:1)