# Author : Manfred Scheucher # Date : Jul 25 2015 # Description: This python script generates an LP which can be solved by an # LP-solver. The following command gives an example how to # use this script with GLPK: # python b.py 5 > 5.lp && glpsol --lp 5.lp from sys import argv from itertools import combinations assert(1^1==0) # use python, not sage def b(x): return (n*'0'+bin(x)[2:])[-n:] # binary rep. with leading zeroes def v(x,y): return " v_"+str(x)+"_"+str(y) n = int(argv[1]) i = 0 print "Maximize" print " obj: "+'+'.join(v(x,y) for x in range(n) for y in range(n)) print "Subject To" D = range(-n,n) D.remove(0) for x in range(n): for y in range(n): L = [] L += [((x+d),(y+0)) for d in D] L += [((x+0),(y+d)) for d in D] L += [((x+d),(y+d)) for d in D] L += [((x+d),(y-d)) for d in D] print " c"+str(i)+": "+'+'.join(['8 '+v(x,y)]+[v(a,b) for (a,b) in L if a in range(n) and b in range(n)])+"<= 9" i+=1 print "Binary" for x in range(n): for y in range(n): print v(x,y) print "End"