最小费用s-t可行流问题的AMPL描述及求解器的速度

上代码吧,通过调节N值和求解器观察求解时间即可。在本人的计算机测试表明cplex最快,gurobi表现也相当好,当规模达到100000个顶点2000000条边时在40秒(包括了从问题构建到最终求解的全过程)内求解完毕。

option randseed 1;
param N >=2 integer;
param density >0,<1 :=20/N;
set cities:=1..N;
set links:=setof{i in 1..ceil(N*N*density)} (ceil(N*Uniform01()),ceil(N*Uniform01()));
param cap{links} := ceil(10+980*Uniform01());
param cost{links}:= ceil(2+20*Uniform01());
param quan>=10;
param s:=1;
param t:=N;
minimize total_cost;
node nodes{i in cities}: net_out=(if i=s then quan else
                                       (if i=t then -quan));
arc flow{(i,j) in links} >=0 <= cap[i,j]
    from nodes[i] to nodes[j] obj total_cost cost[i,j];
data;
param N:=100000;
param quan:=2000;
option solver cplex;
solve;
display total_cost;

其中node和arc是AMPL的关键字,意如其名,语法格式看着例子也就明白了,需要注意的是node一定要先声明,应为arc中要用到node。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值