0

如何在 GLPK 中使用以下参数距离?像参数距离 {line in Line, dir in Direction , ori in Station , des in Station};?

data;

set Direction := Eastbound Westbound;

set Line := District Piccadilly;

set Station := ACTON_TOWN ALDGATE_EAST ALPERTON ARNOS_GROVE...;

param Distance := #  Line Direction StationFrom StationTo Kilometers
District Eastbound ACTON_TOWN CHISWICK_PARK 1.22
District Eastbound ALDGATE_EAST WHITECHAPEL 0.82
District Eastbound BARKING UPNEY 1.38
District Eastbound BARONS_COURT WEST_KENSINGTON 0.64
District Eastbound BAYSWATER PADDINGTON 0.98
District Eastbound BECONTREE DAGENHAM_HEATHWAY 1.37
...
end;
4

1 回答 1

1

在“数据”部分之前,您可以定义如下参数

param Distance {Line, Direction, Station, Station};

然后像这样使用它

var x, >= 0;
minimize obj : sum{line in Line, dir in Direction , ori in Station , des in Station}(x*Distance[line,dir,ori,des]);

但是你有一个大问题。使用一个站集,您将拥有往返于 Acton_Town 的连接,因此您必须在数据部分将它们设置为零。此外,这种向东和西向的组合距离表示存在问题 - 在两个方向上都会有一个 ACTON_TOWN 到 CHIPSWICK_PARK,因此您必须以某种方式处理不合理连接的值(如固定索引或高定价) . 不在线路上的车站也是如此。

您可能应该考虑单独表示您的站点,例如

set Station_Piccadilly := ...;
set Station_District := ...;
...

如果您想进行一些路由,您可能应该查看包含旅行商问题的 glpk 示例 tsp.mod。

于 2015-03-03T15:35:56.640 回答