MTZ模型理解简单,编码简单,但是对于解决规模较大的问题复杂度较大。我在计算TSP问题时,101个点大概需要15分钟,120个点大概需要2个小时,再往上就没有试过了。
现把对应代码存档于此。值得注意的是约束3中ui和uj不能只添加一个。
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import ilog.concert.*;
import ilog.concert.IloCopyManager.Check;
import ilog.cplex.*;
public class Main {
public static int _cityNum;
public static double[][] _cityDis;
public static ArrayList<Integer> _set;
public static ArrayList<ArrayList<Integer>> _setPool;
public static ArrayList<Integer> _setCG;// for constraint generation
public static ArrayList<ArrayList<Integer>> _setCGPool;// for constraint
// generation
public static long _time;
public static double _ansLength;
public static double[][] _ansCity;
public static void main(String[] args) {
String filename = "E:\\JAVA\\TSP1\\data\\gr120.tsp