scs 0.2.2 → 0.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +16 -0
- data/LICENSE.txt +18 -18
- data/README.md +19 -14
- data/lib/scs/ffi.rb +31 -20
- data/lib/scs/solver.rb +32 -9
- data/lib/scs/version.rb +1 -1
- data/vendor/scs/CITATION.cff +39 -0
- data/vendor/scs/CMakeLists.txt +320 -0
- data/vendor/scs/Makefile +32 -23
- data/vendor/scs/README.md +9 -218
- data/vendor/scs/include/aa.h +67 -23
- data/vendor/scs/include/cones.h +22 -19
- data/vendor/scs/include/glbopts.h +107 -79
- data/vendor/scs/include/linalg.h +3 -4
- data/vendor/scs/include/linsys.h +58 -44
- data/vendor/scs/include/normalize.h +6 -5
- data/vendor/scs/include/rw.h +8 -2
- data/vendor/scs/include/scs.h +257 -141
- data/vendor/scs/include/scs_types.h +34 -0
- data/vendor/scs/include/scs_work.h +83 -0
- data/vendor/scs/include/util.h +3 -15
- data/vendor/scs/linsys/cpu/direct/private.c +241 -232
- data/vendor/scs/linsys/cpu/direct/private.h +13 -7
- data/vendor/scs/linsys/cpu/indirect/private.c +194 -118
- data/vendor/scs/linsys/cpu/indirect/private.h +7 -4
- data/vendor/scs/linsys/csparse.c +87 -0
- data/vendor/scs/linsys/csparse.h +34 -0
- data/vendor/scs/linsys/external/amd/SuiteSparse_config.c +6 -6
- data/vendor/scs/linsys/external/amd/SuiteSparse_config.h +6 -1
- data/vendor/scs/linsys/external/amd/amd_internal.h +1 -1
- data/vendor/scs/linsys/external/amd/amd_order.c +5 -5
- data/vendor/scs/linsys/external/qdldl/changes +2 -0
- data/vendor/scs/linsys/external/qdldl/qdldl.c +29 -46
- data/vendor/scs/linsys/external/qdldl/qdldl.h +33 -41
- data/vendor/scs/linsys/external/qdldl/qdldl_types.h +11 -3
- data/vendor/scs/linsys/gpu/gpu.c +58 -21
- data/vendor/scs/linsys/gpu/gpu.h +70 -35
- data/vendor/scs/linsys/gpu/indirect/private.c +394 -157
- data/vendor/scs/linsys/gpu/indirect/private.h +27 -12
- data/vendor/scs/linsys/scs_matrix.c +478 -0
- data/vendor/scs/linsys/scs_matrix.h +70 -0
- data/vendor/scs/scs.mk +14 -10
- data/vendor/scs/src/aa.c +394 -110
- data/vendor/scs/src/cones.c +497 -359
- data/vendor/scs/src/ctrlc.c +15 -5
- data/vendor/scs/src/linalg.c +107 -26
- data/vendor/scs/src/normalize.c +30 -72
- data/vendor/scs/src/rw.c +202 -27
- data/vendor/scs/src/scs.c +769 -571
- data/vendor/scs/src/scs_version.c +11 -3
- data/vendor/scs/src/util.c +37 -106
- data/vendor/scs/test/minunit.h +22 -8
- data/vendor/scs/test/problem_utils.h +180 -25
- data/vendor/scs/test/problems/degenerate.h +130 -0
- data/vendor/scs/test/problems/hs21_tiny_qp.h +124 -0
- data/vendor/scs/test/problems/hs21_tiny_qp_rw.h +116 -0
- data/vendor/scs/test/problems/infeasible_tiny_qp.h +100 -0
- data/vendor/scs/test/problems/qafiro_tiny_qp.h +199 -0
- data/vendor/scs/test/problems/random_prob +0 -0
- data/vendor/scs/test/problems/random_prob.h +45 -0
- data/vendor/scs/test/problems/rob_gauss_cov_est.h +188 -31
- data/vendor/scs/test/problems/small_lp.h +14 -13
- data/vendor/scs/test/problems/small_qp.h +352 -0
- data/vendor/scs/test/problems/test_validation.h +43 -0
- data/vendor/scs/test/problems/unbounded_tiny_qp.h +82 -0
- data/vendor/scs/test/random_socp_prob.c +54 -53
- data/vendor/scs/test/rng.h +109 -0
- data/vendor/scs/test/run_from_file.c +20 -11
- data/vendor/scs/test/run_tests.c +35 -2
- metadata +29 -98
- data/vendor/scs/linsys/amatrix.c +0 -305
- data/vendor/scs/linsys/amatrix.h +0 -36
- data/vendor/scs/linsys/amatrix.o +0 -0
- data/vendor/scs/linsys/cpu/direct/private.o +0 -0
- data/vendor/scs/linsys/cpu/indirect/private.o +0 -0
- data/vendor/scs/linsys/external/amd/SuiteSparse_config.o +0 -0
- data/vendor/scs/linsys/external/amd/amd_1.o +0 -0
- data/vendor/scs/linsys/external/amd/amd_2.o +0 -0
- data/vendor/scs/linsys/external/amd/amd_aat.o +0 -0
- data/vendor/scs/linsys/external/amd/amd_control.o +0 -0
- data/vendor/scs/linsys/external/amd/amd_defaults.o +0 -0
- data/vendor/scs/linsys/external/amd/amd_dump.o +0 -0
- data/vendor/scs/linsys/external/amd/amd_global.o +0 -0
- data/vendor/scs/linsys/external/amd/amd_info.o +0 -0
- data/vendor/scs/linsys/external/amd/amd_order.o +0 -0
- data/vendor/scs/linsys/external/amd/amd_post_tree.o +0 -0
- data/vendor/scs/linsys/external/amd/amd_postorder.o +0 -0
- data/vendor/scs/linsys/external/amd/amd_preprocess.o +0 -0
- data/vendor/scs/linsys/external/amd/amd_valid.o +0 -0
- data/vendor/scs/linsys/external/qdldl/qdldl.o +0 -0
- data/vendor/scs/src/aa.o +0 -0
- data/vendor/scs/src/cones.o +0 -0
- data/vendor/scs/src/ctrlc.o +0 -0
- data/vendor/scs/src/linalg.o +0 -0
- data/vendor/scs/src/normalize.o +0 -0
- data/vendor/scs/src/rw.o +0 -0
- data/vendor/scs/src/scs.o +0 -0
- data/vendor/scs/src/scs_version.o +0 -0
- data/vendor/scs/src/util.o +0 -0
- data/vendor/scs/test/data/small_random_socp +0 -0
- data/vendor/scs/test/problems/small_random_socp.h +0 -33
- data/vendor/scs/test/run_tests +0 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: db74c6ffd6696e799a18d2f5d02f5b753020a2535e539cdd26abac388f1ea046
|
|
4
|
+
data.tar.gz: f7d5b3b98b58d812fb923193303b7f0bfcf7cb2972de2ae34a392fb9f4a5bd40
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: cf7a4948ba7a21865142a421da3e683904951faf7e602d429722cf05bdbae559dcc15484e6cb4afa6bf683ecf681757370bfa3fa7b01dab6620b300462eea703
|
|
7
|
+
data.tar.gz: 493da1d4fbe2fdb7180fffad3599137500d437b082d788365bf828dd8845469b3bf0d63863ea467c013cc2f874c5b04ab935c7129d45b1c890278dda7ad21039
|
data/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,19 @@
|
|
|
1
|
+
## 0.3.2 (2022-01-17)
|
|
2
|
+
|
|
3
|
+
- Updated SCS to 3.1.1
|
|
4
|
+
|
|
5
|
+
## 0.3.1 (2021-10-08)
|
|
6
|
+
|
|
7
|
+
- Fixed installation on Linux
|
|
8
|
+
|
|
9
|
+
## 0.3.0 (2021-10-05)
|
|
10
|
+
|
|
11
|
+
- Updated SCS to 3.0.0
|
|
12
|
+
|
|
13
|
+
## 0.2.3 (2021-09-09)
|
|
14
|
+
|
|
15
|
+
- Updated SCS to 2.1.4
|
|
16
|
+
|
|
1
17
|
## 0.2.2 (2020-07-21)
|
|
2
18
|
|
|
3
19
|
- Updated SCS to 2.1.2
|
data/LICENSE.txt
CHANGED
|
@@ -1,22 +1,22 @@
|
|
|
1
|
-
|
|
1
|
+
The MIT License (MIT)
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Copyright (c) 2012 Brendan O'Donoghue (bodonoghue85@gmail.com)
|
|
4
|
+
Copyright (c) 2019-2021 Andrew Kane
|
|
4
5
|
|
|
5
|
-
Permission is hereby granted, free of charge, to any person obtaining
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
the following conditions:
|
|
6
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
7
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
8
|
+
in the Software without restriction, including without limitation the rights
|
|
9
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
10
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
11
|
+
furnished to do so, subject to the following conditions:
|
|
12
12
|
|
|
13
|
-
The above copyright notice and this permission notice shall be
|
|
14
|
-
|
|
13
|
+
The above copyright notice and this permission notice shall be included in all
|
|
14
|
+
copies or substantial portions of the Software.
|
|
15
15
|
|
|
16
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
OF
|
|
22
|
-
|
|
16
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
17
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
18
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
19
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
20
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
21
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
22
|
+
SOFTWARE.
|
data/README.md
CHANGED
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
# SCS
|
|
1
|
+
# SCS Ruby
|
|
2
2
|
|
|
3
3
|
[SCS](https://github.com/cvxgrp/scs) - the splitting conic solver - for Ruby
|
|
4
4
|
|
|
5
5
|
:fire: Supports many different [problem types](https://www.cvxpy.org/tutorial/advanced/index.html#choosing-a-solver)
|
|
6
6
|
|
|
7
|
-
[](https://github.com/ankane/scs-ruby/actions)
|
|
8
8
|
|
|
9
9
|
## Installation
|
|
10
10
|
|
|
11
11
|
Add this line to your application’s Gemfile:
|
|
12
12
|
|
|
13
13
|
```ruby
|
|
14
|
-
gem
|
|
14
|
+
gem "scs"
|
|
15
15
|
```
|
|
16
16
|
|
|
17
17
|
If installation fails, you may need to install [dependencies](#dependencies).
|
|
@@ -39,16 +39,21 @@ Default values shown
|
|
|
39
39
|
```ruby
|
|
40
40
|
solver.solve(data, cone, {
|
|
41
41
|
normalize: true, # heuristic data rescaling
|
|
42
|
-
scale: 1
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
42
|
+
scale: 0.1, # if normalized, rescales by this factor
|
|
43
|
+
adaptive_scale: true, # heuristically adapt dual scale through the solve
|
|
44
|
+
rho_x: 1e-6, # x equality constraint scaling
|
|
45
|
+
max_iters: 1e5, # maximum iterations to take
|
|
46
|
+
eps_abs: 1e-4, # absolute feasibility tolerance
|
|
47
|
+
eps_rel: 1e-4, # relative feasibility tolerance
|
|
48
|
+
eps_infeas: 1e-7, # infeasibility tolerance
|
|
46
49
|
alpha: 1.5, # relaxation parameter
|
|
47
|
-
|
|
50
|
+
time_limit_secs: nil, # time limit for solve run in seconds
|
|
48
51
|
verbose: true, # write out progress
|
|
49
52
|
warm_start: false, # warm start
|
|
50
53
|
acceleration_lookback: 10, # memory for acceleration
|
|
51
|
-
|
|
54
|
+
acceleration_interval: 10, # iterations to run Anderson acceleration
|
|
55
|
+
write_data_filename: nil, # filename to write data if set
|
|
56
|
+
log_csv_filename: nil # write csv logs of various quantities
|
|
52
57
|
})
|
|
53
58
|
```
|
|
54
59
|
|
|
@@ -76,22 +81,22 @@ On Heroku, use the [heroku-apt-buildpack](https://github.com/heroku/heroku-build
|
|
|
76
81
|
|
|
77
82
|
## History
|
|
78
83
|
|
|
79
|
-
View the [changelog](https://github.com/ankane/scs/blob/master/CHANGELOG.md)
|
|
84
|
+
View the [changelog](https://github.com/ankane/scs-ruby/blob/master/CHANGELOG.md)
|
|
80
85
|
|
|
81
86
|
## Contributing
|
|
82
87
|
|
|
83
88
|
Everyone is encouraged to help improve this project. Here are a few ways you can help:
|
|
84
89
|
|
|
85
|
-
- [Report bugs](https://github.com/ankane/scs/issues)
|
|
86
|
-
- Fix bugs and [submit pull requests](https://github.com/ankane/scs/pulls)
|
|
90
|
+
- [Report bugs](https://github.com/ankane/scs-ruby/issues)
|
|
91
|
+
- Fix bugs and [submit pull requests](https://github.com/ankane/scs-ruby/pulls)
|
|
87
92
|
- Write, clarify, or fix documentation
|
|
88
93
|
- Suggest or add new features
|
|
89
94
|
|
|
90
95
|
To get started with development:
|
|
91
96
|
|
|
92
97
|
```sh
|
|
93
|
-
git clone --recursive https://github.com/ankane/scs.git
|
|
94
|
-
cd scs
|
|
98
|
+
git clone --recursive https://github.com/ankane/scs-ruby.git
|
|
99
|
+
cd scs-ruby
|
|
95
100
|
bundle install
|
|
96
101
|
bundle exec rake compile
|
|
97
102
|
bundle exec rake test
|
data/lib/scs/ffi.rb
CHANGED
|
@@ -27,13 +27,6 @@ module SCS
|
|
|
27
27
|
|
|
28
28
|
dlload File.expand_path("../../vendor/scs/out/#{lib_name}.#{ext}", __dir__)
|
|
29
29
|
|
|
30
|
-
extern "size_t scs_sizeof_int(void)"
|
|
31
|
-
extern "size_t scs_sizeof_float(void)"
|
|
32
|
-
|
|
33
|
-
# TODO support other sizes
|
|
34
|
-
raise Error, "Unsupported int size" if scs_sizeof_int != 4
|
|
35
|
-
raise Error, "Unsupported float size" if scs_sizeof_float != 8
|
|
36
|
-
|
|
37
30
|
typealias "scs_float", "double"
|
|
38
31
|
typealias "scs_int", "int"
|
|
39
32
|
|
|
@@ -41,14 +34,17 @@ module SCS
|
|
|
41
34
|
"scs_int m",
|
|
42
35
|
"scs_int n",
|
|
43
36
|
"ScsMatrix *a",
|
|
37
|
+
"ScsMatrix *p",
|
|
44
38
|
"scs_float *b",
|
|
45
39
|
"scs_float *c",
|
|
46
|
-
"ScsSettings *stgs"
|
|
47
40
|
]
|
|
48
41
|
|
|
49
42
|
m::Cone = struct [
|
|
50
|
-
"scs_int
|
|
43
|
+
"scs_int z",
|
|
51
44
|
"scs_int l",
|
|
45
|
+
"scs_float *bu",
|
|
46
|
+
"scs_float *bl",
|
|
47
|
+
"scs_int *bsize",
|
|
52
48
|
"scs_int *q",
|
|
53
49
|
"scs_int qsize",
|
|
54
50
|
"scs_int *s",
|
|
@@ -67,31 +63,46 @@ module SCS
|
|
|
67
63
|
|
|
68
64
|
m::Info = struct [
|
|
69
65
|
"scs_int iter",
|
|
70
|
-
"char status[
|
|
66
|
+
"char status[128]",
|
|
67
|
+
"char lin_sys_solver[128]",
|
|
71
68
|
"scs_int status_val",
|
|
69
|
+
"scs_int scale_updates",
|
|
72
70
|
"scs_float pobj",
|
|
73
71
|
"scs_float dobj",
|
|
74
72
|
"scs_float res_pri",
|
|
75
73
|
"scs_float res_dual",
|
|
74
|
+
"scs_float gap",
|
|
76
75
|
"scs_float res_infeas",
|
|
77
|
-
"scs_float
|
|
78
|
-
"scs_float
|
|
76
|
+
"scs_float res_unbdd_a",
|
|
77
|
+
"scs_float res_unbdd_p",
|
|
79
78
|
"scs_float setup_time",
|
|
80
|
-
"scs_float solve_time"
|
|
79
|
+
"scs_float solve_time",
|
|
80
|
+
"scs_float scale",
|
|
81
|
+
"scs_float comp_slack",
|
|
82
|
+
"scs_int rejected_accel_steps",
|
|
83
|
+
"scs_int accepted_accel_steps",
|
|
84
|
+
"scs_float lin_sys_time",
|
|
85
|
+
"scs_float cone_time",
|
|
86
|
+
"scs_float accel_time"
|
|
81
87
|
]
|
|
82
88
|
|
|
83
89
|
m::Settings = struct [
|
|
84
90
|
"scs_int normalize",
|
|
85
91
|
"scs_float scale",
|
|
92
|
+
"scs_int adaptive_scale",
|
|
86
93
|
"scs_float rho_x",
|
|
87
94
|
"scs_int max_iters",
|
|
88
|
-
"scs_float
|
|
95
|
+
"scs_float eps_abs",
|
|
96
|
+
"scs_float eps_rel",
|
|
97
|
+
"scs_float eps_infeas",
|
|
89
98
|
"scs_float alpha",
|
|
90
|
-
"scs_float
|
|
99
|
+
"scs_float time_limit_secs",
|
|
91
100
|
"scs_int verbose",
|
|
92
101
|
"scs_int warm_start",
|
|
93
102
|
"scs_int acceleration_lookback",
|
|
94
|
-
"
|
|
103
|
+
"scs_int acceleration_interval",
|
|
104
|
+
"const char* write_data_filename",
|
|
105
|
+
"const char *log_csv_filename"
|
|
95
106
|
]
|
|
96
107
|
|
|
97
108
|
m::Matrix = struct [
|
|
@@ -103,14 +114,14 @@ module SCS
|
|
|
103
114
|
]
|
|
104
115
|
|
|
105
116
|
# scs.h
|
|
106
|
-
extern "ScsWork *scs_init(const ScsData *d, const ScsCone *k,
|
|
107
|
-
extern "scs_int scs_solve(ScsWork *w,
|
|
117
|
+
extern "ScsWork *scs_init(const ScsData *d, const ScsCone *k, const ScsSettings *stgs)"
|
|
118
|
+
extern "scs_int scs_solve(ScsWork *w, ScsSolution *sol, ScsInfo *info)"
|
|
108
119
|
extern "void scs_finish(ScsWork *w)"
|
|
109
|
-
extern "scs_int scs(const ScsData *d, const ScsCone *k, ScsSolution *sol, ScsInfo *info)"
|
|
120
|
+
extern "scs_int scs(const ScsData *d, const ScsCone *k, const ScsSettings *stgs, ScsSolution *sol, ScsInfo *info)"
|
|
110
121
|
extern "const char *scs_version(void)"
|
|
111
122
|
|
|
112
123
|
# utils.h
|
|
113
|
-
extern "void scs_set_default_settings(
|
|
124
|
+
extern "void scs_set_default_settings(ScsSettings *stgs)"
|
|
114
125
|
end
|
|
115
126
|
end
|
|
116
127
|
end
|
data/lib/scs/solver.rb
CHANGED
|
@@ -6,13 +6,13 @@ module SCS
|
|
|
6
6
|
|
|
7
7
|
def solve(data, cone, **settings)
|
|
8
8
|
cdata = create_data(data)
|
|
9
|
-
|
|
9
|
+
settings = create_settings(settings)
|
|
10
10
|
ccone = create_cone(cone)
|
|
11
11
|
|
|
12
12
|
solution = calloc(ffi::Solution.size) # alloc clear memory
|
|
13
13
|
info = ffi::Info.malloc
|
|
14
14
|
|
|
15
|
-
ffi.scs(cdata, ccone, solution, info)
|
|
15
|
+
ffi.scs(cdata, ccone, settings, solution, info)
|
|
16
16
|
|
|
17
17
|
solution = ffi::Solution.new(solution)
|
|
18
18
|
x = read_float_array(solution.x, cdata.n)
|
|
@@ -26,15 +26,24 @@ module SCS
|
|
|
26
26
|
iter: info.iter,
|
|
27
27
|
status: read_string(info.status),
|
|
28
28
|
status_val: info.status_val,
|
|
29
|
+
scale_updates: info.scale_updates,
|
|
29
30
|
pobj: info.pobj,
|
|
30
31
|
dobj: info.dobj,
|
|
31
32
|
res_pri: info.res_pri,
|
|
32
33
|
res_dual: info.res_dual,
|
|
34
|
+
gap: info.gap,
|
|
33
35
|
res_infeas: info.res_infeas,
|
|
34
|
-
|
|
35
|
-
|
|
36
|
+
res_unbdd_a: info.res_unbdd_a,
|
|
37
|
+
res_unbdd_p: info.res_unbdd_p,
|
|
36
38
|
setup_time: info.setup_time,
|
|
37
|
-
solve_time: info.solve_time
|
|
39
|
+
solve_time: info.solve_time,
|
|
40
|
+
scale: info.scale,
|
|
41
|
+
comp_slack: info.comp_slack,
|
|
42
|
+
rejected_accel_steps: info.rejected_accel_steps,
|
|
43
|
+
accepted_accel_steps: info.accepted_accel_steps,
|
|
44
|
+
lin_sys_time: info.lin_sys_time,
|
|
45
|
+
cone_time: info.cone_time,
|
|
46
|
+
accel_time: info.accel_time
|
|
38
47
|
}
|
|
39
48
|
end
|
|
40
49
|
|
|
@@ -114,15 +123,30 @@ module SCS
|
|
|
114
123
|
cdata.m = m
|
|
115
124
|
cdata.n = n
|
|
116
125
|
cdata.a = csc_matrix(data[:a])
|
|
126
|
+
|
|
127
|
+
if data[:p]
|
|
128
|
+
raise ArgumentError, "Bad p shape" if shape(data[:p]) != [n, n]
|
|
129
|
+
cdata.p = csc_matrix(data[:p])
|
|
130
|
+
end
|
|
131
|
+
|
|
132
|
+
raise ArgumentError, "Bad b size" if data[:b].to_a.size != m
|
|
117
133
|
cdata.b = float_array(data[:b])
|
|
134
|
+
|
|
135
|
+
raise ArgumentError, "Bad c size" if data[:c].to_a.size != n
|
|
118
136
|
cdata.c = float_array(data[:c])
|
|
119
137
|
cdata
|
|
120
138
|
end
|
|
121
139
|
|
|
122
140
|
def create_cone(cone)
|
|
123
141
|
ccone = ffi::Cone.malloc
|
|
124
|
-
ccone.
|
|
142
|
+
ccone.z = cone[:z].to_i
|
|
125
143
|
ccone.l = cone[:l].to_i
|
|
144
|
+
ccone.bu = float_array(cone[:bu])
|
|
145
|
+
ccone.bl = float_array(cone[:bl])
|
|
146
|
+
if cone[:bu].to_a.size != cone[:bl].to_a.size
|
|
147
|
+
raise ArgumentError, "Expected bu and bl size to match"
|
|
148
|
+
end
|
|
149
|
+
ccone.bsize = cone[:bu].to_a.size
|
|
126
150
|
ccone.q = int_array(cone[:q])
|
|
127
151
|
ccone.qsize = cone[:q].to_a.size
|
|
128
152
|
ccone.s = int_array(cone[:s])
|
|
@@ -134,10 +158,9 @@ module SCS
|
|
|
134
158
|
ccone
|
|
135
159
|
end
|
|
136
160
|
|
|
137
|
-
def
|
|
161
|
+
def create_settings(settings)
|
|
138
162
|
set = ffi::Settings.malloc
|
|
139
|
-
|
|
140
|
-
ffi.scs_set_default_settings(data)
|
|
163
|
+
ffi.scs_set_default_settings(set)
|
|
141
164
|
|
|
142
165
|
# hack for setting members with []=
|
|
143
166
|
# safer than send("#{k}=", v)
|
data/lib/scs/version.rb
CHANGED
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
cff-version: 1.2.0
|
|
2
|
+
message: "If you use this software, please cite it as below."
|
|
3
|
+
authors:
|
|
4
|
+
- family-names: "O'Donoghue"
|
|
5
|
+
given-names: "Brendan"
|
|
6
|
+
- family-names: "Chu"
|
|
7
|
+
given-names: "Eric"
|
|
8
|
+
- family-names: "Parikh"
|
|
9
|
+
given-names: "Neal"
|
|
10
|
+
- family-names: "Boyd"
|
|
11
|
+
given-names: "Stephen"
|
|
12
|
+
title: "SCS: Spltting Conic Solver"
|
|
13
|
+
version: 3.1.1
|
|
14
|
+
date-released: 2021
|
|
15
|
+
url: "https://github.com/cvxgrp/scs"
|
|
16
|
+
|
|
17
|
+
# Original SCS paper:
|
|
18
|
+
preferred-citation:
|
|
19
|
+
type: article
|
|
20
|
+
authors:
|
|
21
|
+
- family-names: "O'Donoghue"
|
|
22
|
+
given-names: "Brendan"
|
|
23
|
+
- family-names: "Chu"
|
|
24
|
+
given-names: "Eric"
|
|
25
|
+
- family-names: "Parikh"
|
|
26
|
+
given-names: "Neal"
|
|
27
|
+
- family-names: "Boyd"
|
|
28
|
+
given-names: "Stephen"
|
|
29
|
+
journal: "Journal of Optimization Theory and Applications"
|
|
30
|
+
month: 6
|
|
31
|
+
start: 1042 # Start pages
|
|
32
|
+
end: 1068 # End pages
|
|
33
|
+
title: "Conic Optimization via Operator Splitting and Homogeneous Self-Dual Embedding"
|
|
34
|
+
issue: 3
|
|
35
|
+
volume: 169
|
|
36
|
+
year: 2016
|
|
37
|
+
doi: 10.1007/s10957-016-0892-3
|
|
38
|
+
url: https://dx.doi.org/10.1007/s10957-016-0892-3
|
|
39
|
+
|