ILOG CPLEX Optimization Studio 编写 TSP问题 (2)

基于子集的求解方式详见我的另一篇博文:https://blog.csdn.net/u011561033/article/details/93380842

由于子集S在程序中不好表示,并且随着TSP模型增大,S的规模呈指数级上升,因此,本博文主要讲述另一种TSP模型(可能叫做位势法)。具体详见.mod部分代码(.dat和最终结果与基于子集求解TSP的博文中内容一致,因此此处不再重复赘述,详见最开始的博文链接)。此处定义了range Snode=1..CityNum-1用于表示不考虑起点的TSP的点。

/*********************************************
 * OPL 12.6.3.0 Model
 * Author: ASUS
 * Creation Date: 2019-6-21 at 下午5:42:13
 *********************************************/
int CityNum = ...;//the number of city
range City =0..CityNum-1;
range SNode =1..CityNum-1;
float distance[City][City]=...;//the distance between city A and city B
dvar boolean visitCity[City][City];//City A to city B or not
dvar int u[City];

execute{
	//u[0]=0;
	for(var c1 in City)
		for(var c2 in City)
		if(c1

 

你可能感兴趣的:(CPLEX,运筹学)