#!/usr/bin/python # Copyright Joel Friedman 2018. For use in UBC's Math 441 course. # from gurobipy import * ######################################################## # Set up the variables and constraints ######################################################## n = 5 # number of cities jfTSP = Model('Baby_TSP') x = jfTSP.addVars(n,n, vtype=GRB.BINARY, name='ArcsTaken') u = jfTSP.addVars(n, lb = 0, ub = n-1, vtype=GRB.INTEGER, name='order') jfTSP.addConstrs( ( x[i,i] == 0 for i in range(n) ), name='ZeroDiag' ) jfTSP.addConstrs( ( x.sum(i,'*') == 1 for i in range(n) ), name='LeaveCities') jfTSP.addConstrs( ( x.sum('*',i) == 1 for i in range(1,n) ), name='EnterCities') jfTSP.addConstrs( ( u[i] - u[j] + n * x[i,j] <= n-1 for i in range(1,n) for j in range(n) ), name='orderRespected') jfTSP.setObjective( x[0,1] , GRB.MAXIMIZE ) jfTSP.optimize() jfTSP.printAttr("X")