181 const std::vector<int>& F, std::size_t N,
182 const std::vector<int>& K) {
186 std::vector<T>& ceq = out.
eq;
187 std::vector<T>& c = out.
ineq;
188 auto Ki = [&K](std::size_t i) {
return static_cast<std::size_t
>(K[i]); };
189 auto Fi = [&F](std::size_t i) {
return static_cast<std::size_t
>(F[i]); };
192 for (std::size_t j = 0; j < M; ++j) {
194 for (std::size_t nj = 0; nj <= N; ++nj)
195 for (std::size_t k = 0; k < Ki(j); ++k)
196 for (std::size_t m = 0; m < MR; ++m) val += V.
p(j, nj, k, j, nj, k, m);
201 for (std::size_t j = 0; j < M; ++j)
202 for (std::size_t k = 0; k < Ki(j); ++k)
203 for (std::size_t nj = 0; nj <= N; ++nj)
204 for (std::size_t i = 0; i < M; ++i)
205 for (std::size_t h = 0; h < Ki(i); ++h)
206 for (std::size_t ni = 0; ni <= N; ++ni)
207 for (std::size_t m = 0; m < MR; ++m) {
208 if (i == j && nj == ni && h != k)
209 ceq.push_back(V.
p(j, nj, k, i, ni, h, m));
210 if (i == j && nj != ni)
211 ceq.push_back(V.
p(j, nj, k, i, ni, h, m));
212 if (i != j && nj + ni > N)
213 ceq.push_back(V.
p(j, nj, k, i, ni, h, m));
217 for (std::size_t j = 0; j < M; ++j)
218 for (std::size_t k = 0; k < Ki(j); ++k)
219 for (std::size_t i = 0; i < M; ++i)
220 for (std::size_t h = 0; h < Ki(i); ++h)
221 for (std::size_t ni = 0; ni <= Fi(i); ++ni)
222 for (std::size_t m = 1; m < MR; ++m)
223 if (BB(m, j) == 1) ceq.push_back(V.
p(j, 0, k, i, ni, h, m));
226 for (std::size_t j = 0; j < M; ++j)
227 for (std::size_t k = 0; k < Ki(j); ++k)
228 for (std::size_t nj = Fi(j) + 1; nj <= N; ++nj)
229 for (std::size_t i = 0; i < M; ++i)
230 for (std::size_t h = 0; h < Ki(i); ++h)
231 for (std::size_t ni = 0; ni <= N; ++ni)
232 for (std::size_t m = 0; m < MR; ++m)
233 ceq.push_back(V.
p(j, nj, k, i, ni, h, m));
239 for (std::size_t j = 0; j < M; ++j)
240 for (std::size_t nj = 0; nj <= N; ++nj)
241 for (std::size_t k = 0; k < Ki(j); ++k)
242 for (std::size_t i = 0; i < M; ++i)
243 for (std::size_t ni = 0; ni <= N; ++ni)
244 for (std::size_t h = 0; h < Ki(i); ++h)
245 for (std::size_t m = 0; m < MR; ++m)
246 ceq.push_back(V.
p(i, ni, h, j, nj, k, m) -
247 V.
p(j, nj, k, i, ni, h, m));
252 for (std::size_t j = 0; j < M; ++j)
253 for (std::size_t k = 0; k < Ki(j); ++k)
254 for (std::size_t nj = 0; nj <= N; ++nj)
255 for (std::size_t i = 0; i < M; ++i)
256 for (std::size_t m = 0; m < MR; ++m) {
257 if (i == j)
continue;
258 T val = V.
p(j, nj, k, j, nj, k, m);
259 for (std::size_t ni = 0; ni <= N; ++ni)
260 for (std::size_t h = 0; h < Ki(i); ++h)
261 val -= V.
p(j, nj, k, i, ni, h, m);
266 for (std::size_t j = 0; j < M; ++j)
267 for (std::size_t i = 0; i < M; ++i)
268 for (std::size_t ki = 0; ki < Ki(i); ++ki) {
269 T val = V.
e[i * V.
Kmax + ki];
270 for (std::size_t nj = 0; nj <= N; ++nj)
271 for (std::size_t kj = 0; kj < Ki(j); ++kj)
272 for (std::size_t m = 0; m < MR; ++m)
273 for (std::size_t ni = 1; ni <= N; ++ni)
274 if (BB(m, i) == 0) val -= V.
p(j, nj, kj, i, ni, ki, m);
281 for (std::size_t i = 0; i < M; ++i)
282 for (std::size_t k = 0; k < Ki(i); ++k) {
285 for (std::size_t ni = 1; ni <= Fi(i); ++ni)
286 for (std::size_t m = 0; m < MR; ++m)
287 for (std::size_t j = 0; j < M; ++j)
288 for (std::size_t h = 0; h < Ki(i); ++h) {
289 val += q.
at(i, j, k, h, ni) * V.
p(i, ni, k, i, ni, k, m);
290 val -= q.
at(i, j, h, k, ni) * V.
p(i, ni, h, i, ni, h, m);
293 for (std::size_t j = 0; j < M; ++j)
294 for (std::size_t h = 0; h < Ki(i); ++h) {
295 val += q.
at4(i, j, k, h) * V.
e[i * V.
Kmax + k];
296 val -= q.
at4(i, j, h, k) * V.
e[i * V.
Kmax + h];
303 for (std::size_t j = 0; j < M; ++j)
304 for (std::size_t k = 0; k < Ki(j); ++k)
305 for (std::size_t nj = 0; nj <= Fi(j); ++nj)
306 for (std::size_t m = 0; m < MR; ++m) {
308 for (std::size_t i = 0; i < M; ++i)
309 for (std::size_t ni = 1; ni <= Fi(i); ++ni)
310 for (std::size_t ki = 0; ki < Ki(i); ++ki)
312 V.
p(j, nj, k, i, ni, ki, m);
314 V.
p(j, nj, k, j, nj, k, m);
321 for (std::size_t m = 0; m < MR; ++m)
322 for (std::size_t i = 0; i < M; ++i)
323 for (std::size_t j = 0; j < M; ++j)
324 for (std::size_t nj = 1; nj <= Fi(j); ++nj)
325 for (std::size_t ni = 1; ni <= Fi(i); ++ni)
326 for (std::size_t ki = 0; ki < Ki(i); ++ki)
327 for (std::size_t kj = 0; kj < Ki(j); ++kj)
329 static_cast<long>(ni * nj)) *
330 V.
p(j, nj, kj, i, ni, ki, m);
336 for (std::size_t i = 0; i < M; ++i)
337 for (std::size_t u = 0; u < Ki(i); ++u) {
339 for (std::size_t j = 0; j < M; ++j) {
340 if (j == i)
continue;
341 for (std::size_t nj = 1; nj <= Fi(j); ++nj)
342 for (std::size_t k = 0; k < Ki(j); ++k) {
344 for (std::size_t h = 0; h < Ki(j); ++h) coef += q.
at(j, i, k, h, nj);
345 if (coef == zero)
continue;
346 for (std::size_t m = 0; m < MR; ++m)
347 val += coef * V.
p(j, nj, k, i, 0, u, m);
350 for (std::size_t j = 0; j < M; ++j) {
351 if (j == i)
continue;
352 for (std::size_t nj = 0; nj <= Fi(j); ++nj)
353 for (std::size_t k = 0; k < Ki(i); ++k) {
356 const T coef = q.
at(i, j, k, u, 1);
357 if (coef == zero)
continue;
358 for (std::size_t h = 0; h < Ki(j); ++h)
359 for (std::size_t m = 0; m < MR; ++m)
360 val -= coef * V.
p(j, nj, h, i, 1, k, m);
367 for (std::size_t i = 0; i < M; ++i)
368 for (std::size_t ni = 0; ni + 1 <= Fi(i); ++ni) {
370 for (std::size_t j = 0; j < M; ++j) {
371 if (j == i)
continue;
372 for (std::size_t nj = 1; nj <= Fi(j); ++nj)
373 for (std::size_t k = 0; k < Ki(j); ++k) {
375 for (std::size_t h = 0; h < Ki(j); ++h) coef += q.
at(j, i, k, h, nj);
376 if (coef == zero)
continue;
377 for (std::size_t u = 0; u < Ki(i); ++u)
378 for (std::size_t m = 0; m < MR; ++m)
379 val += coef * V.
p(j, nj, k, i, ni, u, m);
382 for (std::size_t j = 0; j < M; ++j) {
383 if (j == i)
continue;
384 for (std::size_t nj = 0; nj <= Fi(j); ++nj)
385 for (std::size_t k = 0; k < Ki(i); ++k) {
387 for (std::size_t h = 0; h < Ki(i); ++h)
388 coef += q.
at(i, j, k, h, ni + 1);
389 if (coef == zero)
continue;
390 for (std::size_t u = 0; u < Ki(j); ++u)
391 for (std::size_t m = 0; m < MR; ++m)
392 val -= coef * V.
p(j, nj, u, i, ni + 1, k, m);
400 for (std::size_t j = 0; j < M; ++j)
401 for (std::size_t k = 0; k < Ki(j); ++k)
402 for (std::size_t i = 0; i < M; ++i)
403 for (std::size_t m = 0; m < MR; ++m) {
405 for (std::size_t t = 0; t < M; ++t)
406 for (std::size_t h = 0; h < Ki(t); ++h)
407 for (std::size_t njx = 0; njx <= N; ++njx)
408 for (std::size_t nt = 0; nt <= N; ++nt)
410 V.
p(j, njx, k, t, nt, h, m);
411 for (std::size_t h = 0; h < Ki(i); ++h)
412 for (std::size_t njx = 0; njx <= N; ++njx)
413 for (std::size_t ni = 1; ni <= N; ++ni)
415 V.
p(j, njx, k, i, ni, h, m);