Menu

[d29355]: / models / subsetsum.py  Maximize  Restore  History

Download this file

29 lines (26 with data), 700 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
25
26
27
28
from __future__ import print_function
#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 range(n)]
for i in range(1, n+1): print(i, a[i-1], ",", end=' ')
print()
print( a)
s = sum(a)/2
print("(n,m):", (n,m), "sum:", sum(a), " s:", s)
from pymprog import *
beginModel("subsetsum")
x = var('x', range(n), bool)
st( sum(a[i]*x[i] for i in range(n)) == s )
from datetime import datetime
print(datetime.now())
solve()
print(datetime.now())
print("solver status: %r" % status())
for i in range(n):
if x[i].primal > 0.5: print(a[i], end=' ')
print()
end()