opt-rb 0.1.1 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 8fbd52b19c465db0b32b7ef39a80c581904de6cfd257ca20f28c04fb0ac50b31
4
- data.tar.gz: 1dea622c2248537c91c9d66ec80b749a60485195acbc25383a6377b53f4c7086
3
+ metadata.gz: 36273c4c91e9009dd5f1b754e6d1c01fc0e4188a4ceeac85f1e9cbb76ec27274
4
+ data.tar.gz: 8b664c75defb3b7394ddef0c64bf6a743e8012eadbf8f6f2ccabff1dda67bec4
5
5
  SHA512:
6
- metadata.gz: 405e7e4a8109885cb1c97e0fc9380e346ae9876439376635fa1d3cd0f1cdf293ca005e6bc31b7af49913c2a52ade0972690b6b155e13db07f4919eda12125625
7
- data.tar.gz: 6d3b768fefe6388cf3b21dcb499e1c80e7d2eb4c5f61febd2ce72ec1f4ea7cae790267620a452ca805684d4434fa35bcada98d9ad89865cac2f099d063fe8255
6
+ metadata.gz: 388019490f5b877034117d3013bc41af1f633ba4762ab742b1b327386e0bed75277b9e1e3c70e0c5e82ea3c6578f22c89c46157173b5c81c2425a03afa66e853
7
+ data.tar.gz: 15dc32d76e91f2d80022427beca9f54709b894def409b877e172bea64b2f927a94071657368fc09abc8eee53b88e3c77d4129c0d946cfdb4a76aeb46fb890656
data/CHANGELOG.md CHANGED
@@ -1,3 +1,8 @@
1
+ ## 0.1.2 (2023-05-01)
2
+
3
+ - Added `value` method for expressions
4
+ - Fixed error selecting solver
5
+
1
6
  ## 0.1.1 (2023-04-16)
2
7
 
3
8
  - Added support for semi-continuous and semi-integer variables
@@ -57,6 +57,13 @@ module Opt
57
57
  end
58
58
  end
59
59
 
60
+ def value
61
+ values = parts.map(&:value)
62
+ return nil if values.any?(&:nil?)
63
+
64
+ values.sum
65
+ end
66
+
60
67
  def vars
61
68
  @vars ||= @parts.flat_map(&:vars)
62
69
  end
data/lib/opt/problem.rb CHANGED
@@ -40,7 +40,7 @@ module Opt
40
40
 
41
41
  raise Error, "No solvers found" if Opt.available_solvers.empty?
42
42
 
43
- solver ||= (Opt.default_solvers[type] || Opt.available_solvers.find { |s| s.supports_type?(type) })
43
+ solver ||= (Opt.default_solvers[type] || Opt.available_solvers.find { |s| Opt.solvers[s].supports_type?(type) })
44
44
  raise Error, "No solvers found for #{type}" unless solver
45
45
 
46
46
  # TODO better error message
data/lib/opt/product.rb CHANGED
@@ -11,6 +11,12 @@ module Opt
11
11
  "#{inspect_part(@left)} * #{inspect_part(@right)}"
12
12
  end
13
13
 
14
+ def value
15
+ return nil if left.value.nil? || right.value.nil?
16
+
17
+ left.value * right.value
18
+ end
19
+
14
20
  def vars
15
21
  @vars ||= (@left.vars + @right.vars).uniq
16
22
  end
data/lib/opt/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Opt
2
- VERSION = "0.1.1"
2
+ VERSION = "0.1.2"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: opt-rb
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrew Kane
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-04-17 00:00:00.000000000 Z
11
+ date: 2023-05-02 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description:
14
14
  email: andrew@ankane.org