【CPLEX教程03】java调用cplex求解一个TSP问题模型
2020-12-13 06:01
标签:rom nim 消息 决策 app 文件名 eclips 今天 span 前面我们已经搭建好cplex的java环境了,相信大家已经跃跃欲试,想动手写几个模型了。今天就来拿一个TSP的问题模型来给大家演示一下吧~ CPLEX系列教程可以关注我们的公众号哦!获取更多精彩消息! 关于TSP建模,就不多解释了。以及什么是TSP问题,也不要问我了。直接贴一个现成的模型出来吧。 整个程序框架如图,app下是调用cplex的主要package。 package graph定义了一些变量,在求解过程中需要用到。input是算例,包含100-9000个城市。 求解过程可以分为以下几步进行: 注意,一次求解不一定能求得最优解,小编跑了一个早上都跑不出来,还是100个节点的。model.getValue(x[i][j]) >= 0.5这个判断只是把求解过程中一些较好的边给添加进去而已。最优解是要满足所有约束的。 代码下载请关注我们的公众号哦!后台回复【CPTSP】不包括【】即可下载。 代码来源GitHub,小编去掉了部分代码。期待后期进一步精简和修改,大家下载下来后用eclipse导入,设置好cplex环境以后。在App.java里面,右键Run As->Run configurations...: 找到App,在Arguments窗口,找到Program arguments: 输入参数说明: 然后就可以愉快的run了。 附上运行结果: 大家可以在while(count 【CPLEX教程03】java调用cplex求解一个TSP问题模型 标签:rom nim 消息 决策 app 文件名 eclips 今天 span 原文地址:https://www.cnblogs.com/dengfaheng/p/11162150.html00 前言
01 TSP建模
02 程序框架
其中:
03 求解过程
IloCplex model = new IloCplex();
// define variables
IloIntVar[][] x = new IloIntVar[data.size()][data.size()];
for (int i = 0; i
// one has only a city to go, and should
for (int i = 0; i
// one can only arrive to one city at a time, and should
for (int j = 0; j
// add cycle restrictions
for (Stack
// one should complete the tour within the smallest distance possible
IloLinearNumExpr z = model.linearNumExpr();
for (int i = 0; i
model.addMinimize(z);
if (model.solve()) {
// get tour
for (int i = 0; i = 0.5) {
tour.add(new Edge(i, j));
}
}
}
// repaint tour
} else {
System.err.println("Boi, u sick!");
System.exit(1);
}
04 运行说明
--instancePath+空格+算例文件的路径,注意用英文双引号括起来。
--maximumRead+空格+数字,表示算例大小,也就是多少个城市,文件名可以直接看出。
上一篇:Apache2: How To Redirect Users To Mobile Or Normal Web Site Based On Device Using mod_rewrite
下一篇:uploadify v3.2.1 上传报大量js 类似__flash__addCallback(document.getElementById("SWFUpload_0"
文章标题:【CPLEX教程03】java调用cplex求解一个TSP问题模型
文章链接:http://soscw.com/essay/32234.html