# 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+1)+"_"+str(y+1) 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" for x in range(n): for y in range(n): print " c"+str(i)+":"+'+'.join(('3' if e==0 and d==0 else '1')+v(x+d,y+e) for d in [-1,0,1] for e in [-1,0,1])+"<= 4" i+=1 for x in range(-1,n+1): for y in range(-1,n+1): if x not in range(n) or y not in range(n): print " c"+str(i)+":"+v(x,y)+"= 0" i+=1 print "Binary" for x in range(-1,n+1): for y in range(-1,n+1): print v(x,y) print "End"