原题p1
p2是整理好的模型,怎么用lingo代码解决以下问题
下午好🌅🌅🌅
本答案参考ChatGPT-3.5
这道题目可以通过Lingo代码求解得到。
解题思路:
计算每个网点之间的距离,构建距离矩阵d(i,j)。
引入0/1变量x(i)表示第i个网点是否建立供应站,引入0/1变量y(i,j)表示第j个网点是否被第i个网点的供应站覆盖。
目标函数是使供应站的个数最小,即min sum(x(i))。
约束条件:
Lingo代码:
model:
sets:
i /1*10/
j /1*10/;
parameters:
d(i,j) distance matrix /1 2 3 4 5 6 7 8 9 10
2.7 6.402 5.579 8.619 4.147 1.712 6.972 11.721 12.5
0.729 6.222 6.056 3.311 6.239 12.39 5.383 11.318
6.698 6.066 3.231 7.79 10.102 5.609 8.387
3.681 1.246 9.191 4.327 9.279 8.698
5.156 5.4 8.16 4.479 7.993
6.064 10.117 3.309 8.739
4.706 8.053 7.584
5.699 6.225
7.26 /;
variables:
x(i) binary, y(i,j) binary;
equations:
obj Objective function
, constraint1 Maximum 5 customers covered
, constraint2 Coverage radius
, constraint3 x >= y
;
obj.. sum(i, x(i)) =E= 10;
constraint1(i).. sum(j, y(i,j)) =L= 5;
constraint2(i,j).. d(i,j)*y(i,j) =L= 10;
constraint3(i,j).. x(i) =G= y(i,j);
model.optcr = 0;
model.maxtime = 60;
solve model using mip minimizing obj;
display x.l, sum(i, x.l(i));
解释:
注意: