Hae L. wrote:

Andreas L. wrote:

The simplest way to solve this problem in Gecode/R is probably to use

set variables:

[…]

Hi there; thanks so much! Qq (quick question): How would I modify this

so that it lists each possible combination surrounded within their own

bracket sets?

That is covered in

http://gecoder.rubyforge.org/documentation/searching_for_solutions.html

. There doesn’t exist a convenience method for it, so one has to

formulate the problem as a class:

require ‘rubygems’

require ‘gecoder’

class ArraySumProblem

include Gecode::Mixin

```
def initialize
weights = [2429.63, 497.87, 51.96, 59.43, 138.4, 66.22, 28.74,
1.75, 2075.13, 556.14, 112.56, 116.5, 84.41, 55.97, 139.07,
24.46]
# Convert to integers.
weights.map!{ |x| (x*100).floor }
selected_weights_is_a set_var([], weights)
selected_weights.sum.must == 343578
branch_on selected_weights
end
```

end

ArraySumProblem.new.each_solution do |solution|

p solution.selected_weights.value.map{ |x| x.to_f / 100 }

end

Output:

[1.75, 112.56, 116.5, 138.4, 139.07, 497.87, 2429.63]

[24.46, 28.74, 51.96, 59.43, 66.22, 138.4, 139.07, 497.87, 2429.63]

If you are planning to solve several instances of the problem then you

probably want to modify the above so that the weights and target are

sent in through the constructor.