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

本文通过调整参数N及使用不同求解器,在含有大量顶点与边的复杂网络中测试求解效率。实验结果显示,CPLEX表现出最优性能,能够在40秒内完成从构建问题到求解的全过程。

上代码吧,通过调节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。

参考资源链接:[ILOG AMPL CPLEX 用户指南](https://wenku.youkuaiyun.com/doc/44hggi1amx?utm_source=wenku_answer2doc_content) 要在AMPL中配置并使用CPLEX求解器,首先需要确保你已经正确安装了AMPL软件及其CPLEX求解器。在Windows系统上,通常会找到名为cplexamp.exe或cplex.exe的可执行文件。接下来,你需要通过AMPL的命令行界面来指定求解器,并设置相关的参数。 首先,启动AMPL并编写你的线性规划模型,确保模型的正确性。然后,在AMPL命令行中输入如下命令来选择CPLEX求解器并开始求解过程: ``` option solver cplexamp; solve; ``` 如果你使用的是早期版本的CPLEX,需要将cplexamp替换为cplex。 为了优化求解过程,你可以设置CPLEX的参数。例如,如果你想要调整CPLEX的优化参数来加速求解过程,可以这样做: ``` option solver cplexamp; cplexamp_options 'threads=4 method=barrier optca=1e-6 optcr=1e-6'; solve; ``` 在上述命令中,'threads=4' 设置了使用4个线程来并行处理问题,'method=barrier' 指定了使用屏障法进行求解,而'optca' 和 'optcr' 则是优化参数,分别用于调整可行性容差和相对容差。 此外,你还可以在模型中直接嵌入求解器参数,如: ``` model; ... set ARCS within NODES cross NODES; var Flow {ARCS} >= 0, integer; ... minimize TotalCost: sum {(i,j) in ARCS} Cost[i,j] * Flow[i,j]; subject to Supply {i in NODES: SupplyDeficit[i] > 0}: sum {j in NODES} Flow[i,j] = SupplyDeficit[i]; ... solve; display Flow; ``` 在这个例子中,我们定义了一个线性规划模型,并使用CPLEX求解器来最小化总成本。求解之后,我们可以显示变量Flow的值来查看结果。 为了更深入地理解和掌握CPLEX求解器的使用,包括它的高级参数配置和问题规模的处理,强烈推荐参考《ILOG AMPL CPLEX 用户指南》。该用户指南详尽地介绍了如何安装和配置求解器,以及如何通过命令行与求解器进行交互,提供了一个全面的学习资源,帮助你更好地理解和应用求解器解决实际问题。 参考资源链接:[ILOG AMPL CPLEX 用户指南](https://wenku.youkuaiyun.com/doc/44hggi1amx?utm_source=wenku_answer2doc_content)
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值