Menu

[r118]: / subsetsum.py  Maximize  Restore  History

Download this file

25 lines (23 with data), 623 Bytes

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#The subset sum problem: given a multiset of integers, find
#subset of it such that the sum of the subset equals a given
#value.
from random import *
n = 40
m = 90000000
a=[randint(1, m) for i in xrange(n)]
for i in xrange(1, n+1): print i, a[i-1], ",",
print
print a
s = sum(a)/2
print "(n,m):", (n,m), "sum:", sum(a), " s:", s
from pymprog import *
beginModel("subsetsum")
x = var(xrange(n), 'x', bool)
st( sum(a[i]*x[i] for i in xrange(n)) == s )
from datetime import datetime
print datetime.now()
solve()
print datetime.now()
print "solver status:", status()
for i in xrange(n):
if x[i].primal > 0.5: print a[i],