
CPLEX
文章平均质量分 67
Gavin在努力
这个作者很懒,什么都没留下…
展开
-
CPLEX运行出错-OPL标记问题
问题描述:前面的乱码看不懂,大概意思是找不到对应的路径。开始我以为是路径中包含中文的关系,我新建了项目,把路径都设置成了英文,但还是出现这个问题。原因出在项目中“运行配置”文件夹下的文件是中文的原因。就是下图框出来的地方。把它改成英文后,该问题就解决了。修改方法为:右键这个“配置1(缺省值)”,重命名,修改英文名后右键运行。最终的结果在“解”这个对话框中。就因为这小小的重命名,...原创 2019-06-21 20:30:00 · 13228 阅读 · 28 评论 -
ILOG CPLEX Optimization Studio 编写 TSP问题
网上关于IBM的ILOG CPLEX Optimization Studio的使用非常少,给自己的编程带来了不少的麻烦。下面是我用OPL编程语言编写的第一个TSP程序。以TSPlib中gr17.tsp为例。TSP问题中子集的表示比较麻烦,下面nodes2相关的代码段就是用来处理这个子集的。下面的代码第一部分是.mod文件,第二部分是.dat文件。该例子中输出结果是 2085,运行完总用时35秒,具...原创 2019-06-23 14:25:45 · 7066 阅读 · 18 评论 -
ILOG CPLEX 部分语法汇总
从两天前开始接触CPLEX的OPL语言,各种错误不断,但网上参考资料又很少。本博文基于自己的摸索,汇总部分基础语法,以备不时之需。以TSP为例。关键词 range 表示一个范围,使用范例:range city=0..CityNum-1; 表示定义了一个city的变量,取值是0到CityNum-1,其中CityNum是我在此之前定义的int型变量,表示城市数量。关键词 dvar 表示变量。其...原创 2019-06-23 20:27:41 · 11259 阅读 · 8 评论 -
ILOG CPLEX Optimization Studio 编写 TSP问题 (2)
基于子集的求解方式详见我的另一篇博文:https://blog.youkuaiyun.com/u011561033/article/details/93380842由于子集S在程序中不好表示,并且随着TSP模型增大,S的规模呈指数级上升,因此,本博文主要讲述另一种TSP模型(可能叫做位势法)。具体详见.mod部分代码(.dat和最终结果与基于子集求解TSP的博文中内容一致,因此此处不再重复赘述,详见最开始...原创 2019-06-23 21:10:00 · 4226 阅读 · 23 评论 -
旅行商问题(TSP)的两种模型
TSP简介一个商人从一点出发,经过所有点后返回原点。它需要满足:除起点和终点外,所有点当且仅当经过一次;起点与终点重合;所有点构成一个连通图。要求:得到这个商人经过所有点的最短路程。TSP模型表示设x[i][j]是一个0-1变量,其中1表示点i与点j之间有连边,0表示这两点之间无连边,值得注意的是:x[i][j]不一定等于x[j][i]。设c[i][j]表示点i到点j的距离,同理,...原创 2019-06-23 21:12:14 · 45027 阅读 · 10 评论 -
Java调用CPLEX解决TSP问题(基于MTZ模型)
MTZ模型理解简单,编码简单,但是对于解决规模较大的问题复杂度较大。我在计算TSP问题时,101个点大概需要15分钟,120个点大概需要2个小时,再往上就没有试过了。现把对应代码存档于此。值得注意的是约束3中ui和uj不能只添加一个。import java.io.BufferedReader;import java.io.File;import java.io.FileInputSt...原创 2019-07-11 17:11:01 · 2168 阅读 · 1 评论 -
Java调用CPLEX解决TSP问题(基于DFJ模型)
DFJ模型易于理解,可拓展性强,但纯DFJ模型需要一次性求解节点的所有子集,需要用到回溯法,相对效率较低。当节点为n时,所需的子集合规模达2^n-2n-2个,具有指数级别复杂度。当节点个数为101个时,基本卡着不动了。下面是Java调用CPLEX解决TSP问题的DFJ模型。这里较为精巧的是递归求解子集,在我另一篇博文中有所介绍,此处不再细解。博文链接如下:https://blog.csdn.n...原创 2019-07-11 17:19:03 · 2157 阅读 · 1 评论 -
Java调用CPLEX解决TSP问题(基于constraint generation模型)
constraint generation 约束生成方法(不知道我翻译得对不对)在网上资料相对较少,中文的资料更少。因为传统的DFJ模型解决TSP问题需要求解指数级别的子集,因此constraint generation显得十分必要(就目前而言,120个节点的TSP也是分分钟解决)。下面是基于constraint generation的代码。值得注意的是在运行constraint gene...原创 2019-07-11 17:25:00 · 2991 阅读 · 1 评论 -
浅析constraint generation(约束生成,行生成)和column generation(列生成)
这篇博文主要是想记录一下我这几天的工作心得。鉴于网上关于constraint generation和column generation的中文资料相对较少,希望这篇博文也能帮助像我一样的新学者。首先,是我对constraint generation的理解。标题中的约束生成或者行生成是我自己翻译的,可能存在误差(单纯形法中用一行表示一个约束)。前人提出这个算法的主要原因是因为有的问题约束特别多,例...原创 2019-07-22 21:08:50 · 8074 阅读 · 2 评论