scs 0.2.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/CHANGELOG.md +12 -0
- data/LICENSE.txt +22 -0
- data/README.md +98 -0
- data/ext/scs/extconf.rb +29 -0
- data/lib/scs.rb +17 -0
- data/lib/scs/ffi.rb +117 -0
- data/lib/scs/solver.rb +173 -0
- data/lib/scs/version.rb +3 -0
- data/vendor/scs/LICENSE.txt +21 -0
- data/vendor/scs/Makefile +164 -0
- data/vendor/scs/README.md +222 -0
- data/vendor/scs/include/aa.h +56 -0
- data/vendor/scs/include/cones.h +46 -0
- data/vendor/scs/include/ctrlc.h +33 -0
- data/vendor/scs/include/glbopts.h +177 -0
- data/vendor/scs/include/linalg.h +26 -0
- data/vendor/scs/include/linsys.h +64 -0
- data/vendor/scs/include/normalize.h +18 -0
- data/vendor/scs/include/rw.h +17 -0
- data/vendor/scs/include/scs.h +161 -0
- data/vendor/scs/include/scs_blas.h +51 -0
- data/vendor/scs/include/util.h +65 -0
- data/vendor/scs/linsys/amatrix.c +305 -0
- data/vendor/scs/linsys/amatrix.h +36 -0
- data/vendor/scs/linsys/amatrix.o +0 -0
- data/vendor/scs/linsys/cpu/direct/private.c +366 -0
- data/vendor/scs/linsys/cpu/direct/private.h +26 -0
- data/vendor/scs/linsys/cpu/direct/private.o +0 -0
- data/vendor/scs/linsys/cpu/indirect/private.c +256 -0
- data/vendor/scs/linsys/cpu/indirect/private.h +31 -0
- data/vendor/scs/linsys/cpu/indirect/private.o +0 -0
- data/vendor/scs/linsys/external/amd/LICENSE.txt +934 -0
- data/vendor/scs/linsys/external/amd/SuiteSparse_config.c +469 -0
- data/vendor/scs/linsys/external/amd/SuiteSparse_config.h +254 -0
- data/vendor/scs/linsys/external/amd/SuiteSparse_config.o +0 -0
- data/vendor/scs/linsys/external/amd/amd.h +400 -0
- data/vendor/scs/linsys/external/amd/amd_1.c +180 -0
- data/vendor/scs/linsys/external/amd/amd_1.o +0 -0
- data/vendor/scs/linsys/external/amd/amd_2.c +1842 -0
- data/vendor/scs/linsys/external/amd/amd_2.o +0 -0
- data/vendor/scs/linsys/external/amd/amd_aat.c +184 -0
- data/vendor/scs/linsys/external/amd/amd_aat.o +0 -0
- data/vendor/scs/linsys/external/amd/amd_control.c +64 -0
- data/vendor/scs/linsys/external/amd/amd_control.o +0 -0
- data/vendor/scs/linsys/external/amd/amd_defaults.c +37 -0
- data/vendor/scs/linsys/external/amd/amd_defaults.o +0 -0
- data/vendor/scs/linsys/external/amd/amd_dump.c +179 -0
- data/vendor/scs/linsys/external/amd/amd_dump.o +0 -0
- data/vendor/scs/linsys/external/amd/amd_global.c +16 -0
- data/vendor/scs/linsys/external/amd/amd_global.o +0 -0
- data/vendor/scs/linsys/external/amd/amd_info.c +119 -0
- data/vendor/scs/linsys/external/amd/amd_info.o +0 -0
- data/vendor/scs/linsys/external/amd/amd_internal.h +304 -0
- data/vendor/scs/linsys/external/amd/amd_order.c +199 -0
- data/vendor/scs/linsys/external/amd/amd_order.o +0 -0
- data/vendor/scs/linsys/external/amd/amd_post_tree.c +120 -0
- data/vendor/scs/linsys/external/amd/amd_post_tree.o +0 -0
- data/vendor/scs/linsys/external/amd/amd_postorder.c +206 -0
- data/vendor/scs/linsys/external/amd/amd_postorder.o +0 -0
- data/vendor/scs/linsys/external/amd/amd_preprocess.c +118 -0
- data/vendor/scs/linsys/external/amd/amd_preprocess.o +0 -0
- data/vendor/scs/linsys/external/amd/amd_valid.c +92 -0
- data/vendor/scs/linsys/external/amd/amd_valid.o +0 -0
- data/vendor/scs/linsys/external/amd/changes +11 -0
- data/vendor/scs/linsys/external/qdldl/LICENSE +201 -0
- data/vendor/scs/linsys/external/qdldl/README.md +120 -0
- data/vendor/scs/linsys/external/qdldl/changes +4 -0
- data/vendor/scs/linsys/external/qdldl/qdldl.c +298 -0
- data/vendor/scs/linsys/external/qdldl/qdldl.h +177 -0
- data/vendor/scs/linsys/external/qdldl/qdldl.o +0 -0
- data/vendor/scs/linsys/external/qdldl/qdldl_types.h +21 -0
- data/vendor/scs/linsys/gpu/gpu.c +41 -0
- data/vendor/scs/linsys/gpu/gpu.h +85 -0
- data/vendor/scs/linsys/gpu/indirect/private.c +304 -0
- data/vendor/scs/linsys/gpu/indirect/private.h +36 -0
- data/vendor/scs/scs.mk +181 -0
- data/vendor/scs/src/aa.c +224 -0
- data/vendor/scs/src/aa.o +0 -0
- data/vendor/scs/src/cones.c +802 -0
- data/vendor/scs/src/cones.o +0 -0
- data/vendor/scs/src/ctrlc.c +77 -0
- data/vendor/scs/src/ctrlc.o +0 -0
- data/vendor/scs/src/linalg.c +84 -0
- data/vendor/scs/src/linalg.o +0 -0
- data/vendor/scs/src/normalize.c +93 -0
- data/vendor/scs/src/normalize.o +0 -0
- data/vendor/scs/src/rw.c +167 -0
- data/vendor/scs/src/rw.o +0 -0
- data/vendor/scs/src/scs.c +978 -0
- data/vendor/scs/src/scs.o +0 -0
- data/vendor/scs/src/scs_version.c +5 -0
- data/vendor/scs/src/scs_version.o +0 -0
- data/vendor/scs/src/util.c +196 -0
- data/vendor/scs/src/util.o +0 -0
- data/vendor/scs/test/data/small_random_socp +0 -0
- data/vendor/scs/test/minunit.h +13 -0
- data/vendor/scs/test/problem_utils.h +93 -0
- data/vendor/scs/test/problems/rob_gauss_cov_est.h +85 -0
- data/vendor/scs/test/problems/small_lp.h +50 -0
- data/vendor/scs/test/problems/small_random_socp.h +33 -0
- data/vendor/scs/test/random_socp_prob.c +171 -0
- data/vendor/scs/test/run_from_file.c +69 -0
- data/vendor/scs/test/run_tests +2 -0
- data/vendor/scs/test/run_tests.c +32 -0
- metadata +203 -0
@@ -0,0 +1,33 @@
|
|
1
|
+
#include "rw.h"
|
2
|
+
#include "scs.h"
|
3
|
+
#include "util.h"
|
4
|
+
|
5
|
+
#define OPT (1.530897)
|
6
|
+
|
7
|
+
static const char *small_random_socp(void) {
|
8
|
+
ScsData *d;
|
9
|
+
ScsCone *k;
|
10
|
+
ScsSolution *sol;
|
11
|
+
ScsInfo info = {0};
|
12
|
+
scs_int exitflag, success;
|
13
|
+
scs_float perr, derr;
|
14
|
+
const char *filename = "test/data/small_random_socp";
|
15
|
+
|
16
|
+
SCS(read_data)(filename, &d, &k);
|
17
|
+
sol = scs_calloc(1, sizeof(ScsSolution));
|
18
|
+
exitflag = scs(d, k, sol, &info);
|
19
|
+
|
20
|
+
perr = SCS(dot)(d->c, sol->x, d->n) - OPT;
|
21
|
+
derr = -SCS(dot)(d->b, sol->y, d->m) - OPT;
|
22
|
+
|
23
|
+
scs_printf("primal obj error %4e\n", perr);
|
24
|
+
scs_printf("dual obj error %4e\n", derr);
|
25
|
+
|
26
|
+
success = ABS(perr) < 1e-4 && ABS(derr) < 1e-4 && exitflag == SCS_SOLVED;
|
27
|
+
|
28
|
+
SCS(free_data)(d, k);
|
29
|
+
SCS(free_sol)(sol);
|
30
|
+
mu_assert("small_random_socp: SCS failed to produce outputflag SCS_SOLVED",
|
31
|
+
success);
|
32
|
+
return 0;
|
33
|
+
}
|
@@ -0,0 +1,171 @@
|
|
1
|
+
#include <time.h> /* to seed random */
|
2
|
+
#include "amatrix.h"
|
3
|
+
#include "problem_utils.h"
|
4
|
+
#include "scs.h"
|
5
|
+
|
6
|
+
/*
|
7
|
+
create data for problem:
|
8
|
+
|
9
|
+
minimize c'*x
|
10
|
+
subject to Ax <=_K b
|
11
|
+
|
12
|
+
where K is a product of zero, linear, and second-order cones. A is a sparse
|
13
|
+
matrix in
|
14
|
+
CSC format. A is 3n by n with about sqrt(n) nonzeros per column.
|
15
|
+
|
16
|
+
Construct data in such a way that the problem is primal and dual
|
17
|
+
feasible and thus bounded.
|
18
|
+
*/
|
19
|
+
|
20
|
+
int main(int argc, char **argv) {
|
21
|
+
scs_int n, m, col_nnz, nnz, i, q_total, q_num_rows, max_q;
|
22
|
+
ScsCone *k;
|
23
|
+
ScsData *d;
|
24
|
+
ScsSolution *sol, *opt_sol;
|
25
|
+
ScsInfo info = {0};
|
26
|
+
scs_float p_f, p_l;
|
27
|
+
int seed = 0;
|
28
|
+
|
29
|
+
/* default parameters */
|
30
|
+
p_f = 0.1;
|
31
|
+
p_l = 0.3;
|
32
|
+
seed = time(SCS_NULL);
|
33
|
+
|
34
|
+
switch (argc) {
|
35
|
+
case 5:
|
36
|
+
seed = atoi(argv[4]);
|
37
|
+
/* no break */
|
38
|
+
case 4:
|
39
|
+
p_f = atof(argv[2]);
|
40
|
+
p_l = atof(argv[3]);
|
41
|
+
/* no break */
|
42
|
+
case 2:
|
43
|
+
n = atoi(argv[1]);
|
44
|
+
break;
|
45
|
+
default:
|
46
|
+
scs_printf(
|
47
|
+
"usage:\t%s n p_f p_l s\n"
|
48
|
+
"\tcreates an SOCP with n variables where p_f fraction of "
|
49
|
+
"rows correspond\n"
|
50
|
+
"\tto equality constraints, p_l fraction of rows correspond "
|
51
|
+
"to LP constraints,\n"
|
52
|
+
"\tand the remaining percentage of rows are involved in "
|
53
|
+
"second-order\n"
|
54
|
+
"\tcone constraints. the random number generator is seeded "
|
55
|
+
"with s.\n"
|
56
|
+
"\tnote that p_f + p_l should be less than or equal to 1, "
|
57
|
+
"and that\n"
|
58
|
+
"\tp_f should be less than .33, since that corresponds to "
|
59
|
+
"as many equality\n"
|
60
|
+
"\tconstraints as variables.\n",
|
61
|
+
argv[0]);
|
62
|
+
scs_printf(
|
63
|
+
"\nusage:\t%s n p_f p_l\n"
|
64
|
+
"\tdefaults the seed to the system time\n",
|
65
|
+
argv[0]);
|
66
|
+
scs_printf(
|
67
|
+
"\nusage:\t%s n\n"
|
68
|
+
"\tdefaults to using p_f = 0.1 and p_l = 0.3\n",
|
69
|
+
argv[0]);
|
70
|
+
return 0;
|
71
|
+
}
|
72
|
+
srand(seed);
|
73
|
+
scs_printf("seed : %i\n", seed);
|
74
|
+
|
75
|
+
k = (ScsCone *)scs_calloc(1, sizeof(ScsCone));
|
76
|
+
d = (ScsData *)scs_calloc(1, sizeof(ScsData));
|
77
|
+
d->stgs = (ScsSettings *)scs_calloc(1, sizeof(ScsSettings));
|
78
|
+
sol = (ScsSolution *)scs_calloc(1, sizeof(ScsSolution));
|
79
|
+
opt_sol = (ScsSolution *)scs_calloc(1, sizeof(ScsSolution));
|
80
|
+
|
81
|
+
m = 3 * n;
|
82
|
+
col_nnz = (int)ceil(sqrt(n));
|
83
|
+
nnz = n * col_nnz;
|
84
|
+
|
85
|
+
max_q = (scs_int)ceil(3 * n / log(3 * n));
|
86
|
+
|
87
|
+
if (p_f + p_l > 1.0) {
|
88
|
+
printf("error: p_f + p_l > 1.0!\n");
|
89
|
+
return 1;
|
90
|
+
}
|
91
|
+
|
92
|
+
k->f = (scs_int)floor(3 * n * p_f);
|
93
|
+
k->l = (scs_int)floor(3 * n * p_l);
|
94
|
+
|
95
|
+
k->qsize = 0;
|
96
|
+
q_num_rows = 3 * n - k->f - k->l;
|
97
|
+
k->q = (scs_int *)scs_malloc(q_num_rows * sizeof(scs_int));
|
98
|
+
|
99
|
+
while (q_num_rows > max_q) {
|
100
|
+
int size;
|
101
|
+
size = (rand() % max_q) + 1;
|
102
|
+
k->q[k->qsize] = size;
|
103
|
+
k->qsize++;
|
104
|
+
q_num_rows -= size;
|
105
|
+
}
|
106
|
+
if (q_num_rows > 0) {
|
107
|
+
k->q[k->qsize] = q_num_rows;
|
108
|
+
k->qsize++;
|
109
|
+
}
|
110
|
+
|
111
|
+
q_total = 0;
|
112
|
+
for (i = 0; i < k->qsize; i++) {
|
113
|
+
q_total += k->q[i];
|
114
|
+
}
|
115
|
+
|
116
|
+
k->s = SCS_NULL;
|
117
|
+
k->ssize = 0;
|
118
|
+
k->ep = 0;
|
119
|
+
k->ed = 0;
|
120
|
+
|
121
|
+
scs_printf("\nA is %ld by %ld, with %ld nonzeros per column.\n", (long)m,
|
122
|
+
(long)n, (long)col_nnz);
|
123
|
+
scs_printf("A has %ld nonzeros (%f%% dense).\n", (long)nnz,
|
124
|
+
100 * (scs_float)col_nnz / m);
|
125
|
+
scs_printf("Nonzeros of A take %f GB of storage.\n",
|
126
|
+
((scs_float)nnz * sizeof(scs_float)) / POWF(2, 30));
|
127
|
+
scs_printf("Row idxs of A take %f GB of storage.\n",
|
128
|
+
((scs_float)nnz * sizeof(scs_int)) / POWF(2, 30));
|
129
|
+
scs_printf("Col ptrs of A take %f GB of storage.\n\n",
|
130
|
+
((scs_float)n * sizeof(scs_int)) / POWF(2, 30));
|
131
|
+
|
132
|
+
printf("ScsCone information:\n");
|
133
|
+
printf("Zero cone rows: %ld\n", (long)k->f);
|
134
|
+
printf("LP cone rows: %ld\n", (long)k->l);
|
135
|
+
printf("Number of second-order cones: %ld, covering %ld rows, with sizes\n[",
|
136
|
+
(long)k->qsize, (long)q_total);
|
137
|
+
for (i = 0; i < k->qsize; i++) {
|
138
|
+
printf("%ld, ", (long)k->q[i]);
|
139
|
+
}
|
140
|
+
printf("]\n");
|
141
|
+
printf("Number of rows covered is %ld out of %ld.\n\n",
|
142
|
+
(long)(q_total + k->f + k->l), (long)m);
|
143
|
+
|
144
|
+
/* set up SCS structures */
|
145
|
+
d->m = m;
|
146
|
+
d->n = n;
|
147
|
+
gen_random_prob_data(nnz, col_nnz, d, k, opt_sol);
|
148
|
+
SCS(set_default_settings)(d);
|
149
|
+
|
150
|
+
/* d->stgs->write_data_filename = "random_socp_prob"; */
|
151
|
+
|
152
|
+
scs_printf("true pri opt = %4f\n", SCS(dot)(d->c, opt_sol->x, d->n));
|
153
|
+
scs_printf("true dua opt = %4f\n", -SCS(dot)(d->b, opt_sol->y, d->m));
|
154
|
+
/* solve! */
|
155
|
+
scs(d, k, sol, &info);
|
156
|
+
scs_printf("true pri opt = %4f\n", SCS(dot)(d->c, opt_sol->x, d->n));
|
157
|
+
scs_printf("true dua opt = %4f\n", -SCS(dot)(d->b, opt_sol->y, d->m));
|
158
|
+
|
159
|
+
if (sol->x) {
|
160
|
+
scs_printf("scs pri obj= %4f\n", SCS(dot)(d->c, sol->x, d->n));
|
161
|
+
}
|
162
|
+
if (sol->y) {
|
163
|
+
scs_printf("scs dua obj = %4f\n", -SCS(dot)(d->b, sol->y, d->m));
|
164
|
+
}
|
165
|
+
|
166
|
+
SCS(free_data)(d, k);
|
167
|
+
SCS(free_sol)(sol);
|
168
|
+
SCS(free_sol)(opt_sol);
|
169
|
+
|
170
|
+
return 0;
|
171
|
+
}
|
@@ -0,0 +1,69 @@
|
|
1
|
+
#include "rw.h"
|
2
|
+
#include "scs.h"
|
3
|
+
#include "util.h"
|
4
|
+
|
5
|
+
scs_int override_setting(ScsSettings *s, char *param, char *val) {
|
6
|
+
scs_printf("Attempting to override %s with value %s.\n", param, val);
|
7
|
+
if (strcmp(param, "normalize") == 0) {
|
8
|
+
s->normalize = atoi(val);
|
9
|
+
} else if (strcmp(param, "scale") == 0) {
|
10
|
+
s->scale = atof(val);
|
11
|
+
} else if (strcmp(param, "rho_x") == 0) {
|
12
|
+
s->rho_x = atof(val);
|
13
|
+
} else if (strcmp(param, "max_iters") == 0) {
|
14
|
+
s->max_iters = atoi(val);
|
15
|
+
} else if (strcmp(param, "eps") == 0) {
|
16
|
+
s->eps = atof(val);
|
17
|
+
} else if (strcmp(param, "alpha") == 0) {
|
18
|
+
s->alpha = atof(val);
|
19
|
+
} else if (strcmp(param, "cg_rate") == 0) {
|
20
|
+
s->cg_rate = atof(val);
|
21
|
+
} else if (strcmp(param, "verbose") == 0) {
|
22
|
+
s->verbose = atoi(val);
|
23
|
+
} else if (strcmp(param, "acceleration_lookback") == 0) {
|
24
|
+
s->acceleration_lookback = atoi(val);
|
25
|
+
} else {
|
26
|
+
return -1;
|
27
|
+
}
|
28
|
+
scs_printf("Success.\n");
|
29
|
+
return 0;
|
30
|
+
}
|
31
|
+
|
32
|
+
/* Simple helper function to run problems from data files */
|
33
|
+
/* Mostly useful for debugging */
|
34
|
+
int main(int argc, char **argv) {
|
35
|
+
char *filename;
|
36
|
+
scs_int read_status;
|
37
|
+
ScsData *d;
|
38
|
+
ScsCone *k;
|
39
|
+
ScsSolution *sol;
|
40
|
+
ScsInfo info = {0};
|
41
|
+
scs_int i;
|
42
|
+
if (argc < 2) {
|
43
|
+
scs_printf("Need to specify a filename, exit.\n");
|
44
|
+
return -1;
|
45
|
+
}
|
46
|
+
filename = argv[1];
|
47
|
+
read_status = SCS(read_data)(filename, &d, &k);
|
48
|
+
if (read_status < 0) {
|
49
|
+
scs_printf("Data read failure, exit.\n");
|
50
|
+
return -1;
|
51
|
+
}
|
52
|
+
for (i = 2; i < argc; i += 2) {
|
53
|
+
if (argc < i + 2) {
|
54
|
+
scs_printf("Incorrect number of arguments supplied\n.");
|
55
|
+
SCS(free_data)(d, k);
|
56
|
+
return -1;
|
57
|
+
}
|
58
|
+
if (override_setting(d->stgs, argv[i], argv[i + 1]) < 0) {
|
59
|
+
scs_printf("Unrecognized setting %s\n", argv[i]);
|
60
|
+
SCS(free_data)(d, k);
|
61
|
+
return -1;
|
62
|
+
}
|
63
|
+
}
|
64
|
+
sol = scs_calloc(1, sizeof(ScsSolution));
|
65
|
+
scs(d, k, sol, &info);
|
66
|
+
SCS(free_data)(d, k);
|
67
|
+
SCS(free_sol)(sol);
|
68
|
+
return 0;
|
69
|
+
}
|
@@ -0,0 +1,32 @@
|
|
1
|
+
/* Taken from http://www.jera.com/techinfo/jtns/jtn002.html */
|
2
|
+
#include <stdio.h>
|
3
|
+
|
4
|
+
#include "minunit.h"
|
5
|
+
#include "problem_utils.h"
|
6
|
+
#include "scs.h"
|
7
|
+
|
8
|
+
/* Include Tests */
|
9
|
+
#include "problems/small_lp.h"
|
10
|
+
#include "problems/rob_gauss_cov_est.h"
|
11
|
+
#include "problems/small_random_socp.h"
|
12
|
+
|
13
|
+
int tests_run = 0;
|
14
|
+
|
15
|
+
static const char *all_tests(void) {
|
16
|
+
mu_run_test(small_lp);
|
17
|
+
mu_run_test(rob_gauss_cov_est);
|
18
|
+
mu_run_test(small_random_socp);
|
19
|
+
return 0;
|
20
|
+
}
|
21
|
+
|
22
|
+
int main(void) {
|
23
|
+
const char *result = all_tests();
|
24
|
+
if (result != 0) {
|
25
|
+
scs_printf("%s\n", result);
|
26
|
+
} else {
|
27
|
+
scs_printf("ALL TESTS PASSED\n");
|
28
|
+
}
|
29
|
+
scs_printf("Tests run: %d\n", tests_run);
|
30
|
+
|
31
|
+
return result != 0;
|
32
|
+
}
|
metadata
ADDED
@@ -0,0 +1,203 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: scs
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.2.2
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Andrew Kane
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2020-07-22 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: bundler
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rake
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: minitest
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '5'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '5'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: numo-narray
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
description:
|
70
|
+
email: andrew@chartkick.com
|
71
|
+
executables: []
|
72
|
+
extensions:
|
73
|
+
- ext/scs/extconf.rb
|
74
|
+
extra_rdoc_files: []
|
75
|
+
files:
|
76
|
+
- CHANGELOG.md
|
77
|
+
- LICENSE.txt
|
78
|
+
- README.md
|
79
|
+
- ext/scs/extconf.rb
|
80
|
+
- lib/scs.rb
|
81
|
+
- lib/scs/ffi.rb
|
82
|
+
- lib/scs/solver.rb
|
83
|
+
- lib/scs/version.rb
|
84
|
+
- vendor/scs/LICENSE.txt
|
85
|
+
- vendor/scs/Makefile
|
86
|
+
- vendor/scs/README.md
|
87
|
+
- vendor/scs/include/aa.h
|
88
|
+
- vendor/scs/include/cones.h
|
89
|
+
- vendor/scs/include/ctrlc.h
|
90
|
+
- vendor/scs/include/glbopts.h
|
91
|
+
- vendor/scs/include/linalg.h
|
92
|
+
- vendor/scs/include/linsys.h
|
93
|
+
- vendor/scs/include/normalize.h
|
94
|
+
- vendor/scs/include/rw.h
|
95
|
+
- vendor/scs/include/scs.h
|
96
|
+
- vendor/scs/include/scs_blas.h
|
97
|
+
- vendor/scs/include/util.h
|
98
|
+
- vendor/scs/linsys/amatrix.c
|
99
|
+
- vendor/scs/linsys/amatrix.h
|
100
|
+
- vendor/scs/linsys/amatrix.o
|
101
|
+
- vendor/scs/linsys/cpu/direct/private.c
|
102
|
+
- vendor/scs/linsys/cpu/direct/private.h
|
103
|
+
- vendor/scs/linsys/cpu/direct/private.o
|
104
|
+
- vendor/scs/linsys/cpu/indirect/private.c
|
105
|
+
- vendor/scs/linsys/cpu/indirect/private.h
|
106
|
+
- vendor/scs/linsys/cpu/indirect/private.o
|
107
|
+
- vendor/scs/linsys/external/amd/LICENSE.txt
|
108
|
+
- vendor/scs/linsys/external/amd/SuiteSparse_config.c
|
109
|
+
- vendor/scs/linsys/external/amd/SuiteSparse_config.h
|
110
|
+
- vendor/scs/linsys/external/amd/SuiteSparse_config.o
|
111
|
+
- vendor/scs/linsys/external/amd/amd.h
|
112
|
+
- vendor/scs/linsys/external/amd/amd_1.c
|
113
|
+
- vendor/scs/linsys/external/amd/amd_1.o
|
114
|
+
- vendor/scs/linsys/external/amd/amd_2.c
|
115
|
+
- vendor/scs/linsys/external/amd/amd_2.o
|
116
|
+
- vendor/scs/linsys/external/amd/amd_aat.c
|
117
|
+
- vendor/scs/linsys/external/amd/amd_aat.o
|
118
|
+
- vendor/scs/linsys/external/amd/amd_control.c
|
119
|
+
- vendor/scs/linsys/external/amd/amd_control.o
|
120
|
+
- vendor/scs/linsys/external/amd/amd_defaults.c
|
121
|
+
- vendor/scs/linsys/external/amd/amd_defaults.o
|
122
|
+
- vendor/scs/linsys/external/amd/amd_dump.c
|
123
|
+
- vendor/scs/linsys/external/amd/amd_dump.o
|
124
|
+
- vendor/scs/linsys/external/amd/amd_global.c
|
125
|
+
- vendor/scs/linsys/external/amd/amd_global.o
|
126
|
+
- vendor/scs/linsys/external/amd/amd_info.c
|
127
|
+
- vendor/scs/linsys/external/amd/amd_info.o
|
128
|
+
- vendor/scs/linsys/external/amd/amd_internal.h
|
129
|
+
- vendor/scs/linsys/external/amd/amd_order.c
|
130
|
+
- vendor/scs/linsys/external/amd/amd_order.o
|
131
|
+
- vendor/scs/linsys/external/amd/amd_post_tree.c
|
132
|
+
- vendor/scs/linsys/external/amd/amd_post_tree.o
|
133
|
+
- vendor/scs/linsys/external/amd/amd_postorder.c
|
134
|
+
- vendor/scs/linsys/external/amd/amd_postorder.o
|
135
|
+
- vendor/scs/linsys/external/amd/amd_preprocess.c
|
136
|
+
- vendor/scs/linsys/external/amd/amd_preprocess.o
|
137
|
+
- vendor/scs/linsys/external/amd/amd_valid.c
|
138
|
+
- vendor/scs/linsys/external/amd/amd_valid.o
|
139
|
+
- vendor/scs/linsys/external/amd/changes
|
140
|
+
- vendor/scs/linsys/external/qdldl/LICENSE
|
141
|
+
- vendor/scs/linsys/external/qdldl/README.md
|
142
|
+
- vendor/scs/linsys/external/qdldl/changes
|
143
|
+
- vendor/scs/linsys/external/qdldl/qdldl.c
|
144
|
+
- vendor/scs/linsys/external/qdldl/qdldl.h
|
145
|
+
- vendor/scs/linsys/external/qdldl/qdldl.o
|
146
|
+
- vendor/scs/linsys/external/qdldl/qdldl_types.h
|
147
|
+
- vendor/scs/linsys/gpu/gpu.c
|
148
|
+
- vendor/scs/linsys/gpu/gpu.h
|
149
|
+
- vendor/scs/linsys/gpu/indirect/private.c
|
150
|
+
- vendor/scs/linsys/gpu/indirect/private.h
|
151
|
+
- vendor/scs/scs.mk
|
152
|
+
- vendor/scs/src/aa.c
|
153
|
+
- vendor/scs/src/aa.o
|
154
|
+
- vendor/scs/src/cones.c
|
155
|
+
- vendor/scs/src/cones.o
|
156
|
+
- vendor/scs/src/ctrlc.c
|
157
|
+
- vendor/scs/src/ctrlc.o
|
158
|
+
- vendor/scs/src/linalg.c
|
159
|
+
- vendor/scs/src/linalg.o
|
160
|
+
- vendor/scs/src/normalize.c
|
161
|
+
- vendor/scs/src/normalize.o
|
162
|
+
- vendor/scs/src/rw.c
|
163
|
+
- vendor/scs/src/rw.o
|
164
|
+
- vendor/scs/src/scs.c
|
165
|
+
- vendor/scs/src/scs.o
|
166
|
+
- vendor/scs/src/scs_version.c
|
167
|
+
- vendor/scs/src/scs_version.o
|
168
|
+
- vendor/scs/src/util.c
|
169
|
+
- vendor/scs/src/util.o
|
170
|
+
- vendor/scs/test/data/small_random_socp
|
171
|
+
- vendor/scs/test/minunit.h
|
172
|
+
- vendor/scs/test/problem_utils.h
|
173
|
+
- vendor/scs/test/problems/rob_gauss_cov_est.h
|
174
|
+
- vendor/scs/test/problems/small_lp.h
|
175
|
+
- vendor/scs/test/problems/small_random_socp.h
|
176
|
+
- vendor/scs/test/random_socp_prob.c
|
177
|
+
- vendor/scs/test/run_from_file.c
|
178
|
+
- vendor/scs/test/run_tests
|
179
|
+
- vendor/scs/test/run_tests.c
|
180
|
+
homepage: https://github.com/ankane/scs
|
181
|
+
licenses:
|
182
|
+
- MIT
|
183
|
+
metadata: {}
|
184
|
+
post_install_message:
|
185
|
+
rdoc_options: []
|
186
|
+
require_paths:
|
187
|
+
- lib
|
188
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
189
|
+
requirements:
|
190
|
+
- - ">="
|
191
|
+
- !ruby/object:Gem::Version
|
192
|
+
version: '2.4'
|
193
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
194
|
+
requirements:
|
195
|
+
- - ">="
|
196
|
+
- !ruby/object:Gem::Version
|
197
|
+
version: '0'
|
198
|
+
requirements: []
|
199
|
+
rubygems_version: 3.1.2
|
200
|
+
signing_key:
|
201
|
+
specification_version: 4
|
202
|
+
summary: SCS - the splitting conic solver - for Ruby
|
203
|
+
test_files: []
|