Skip to content

Commit 6d24b05

Browse files
author
Release Manager
committed
gh-38844: remove a spurious adding of the same constraint twice adding constraints twice impacts performance, and was just a typo (made about 10 years ago) ### 📝 Checklist <!-- Put an `x` in all the boxes that apply. --> - [x] The title is concise and informative. - [x] The description explains in detail what this PR is about. - [ ] I have linked a relevant issue or discussion. - [x] I have created tests covering the changes. - [x] I have updated the documentation and checked the documentation preview. URL: #38844 Reported by: Dima Pasechnik Reviewer(s): David Coudert, Dima Pasechnik
2 parents 6fee0a6 + a1242d5 commit 6d24b05

File tree

1 file changed

+8
-10
lines changed

1 file changed

+8
-10
lines changed

src/sage/coding/delsarte_bounds.py

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -201,9 +201,8 @@ def _delsarte_LP_building(n, d, d_star, q, isinteger, solver, maxc=0):
201201
constraint_1: 0 <= x_1 <= 0
202202
constraint_2: 0 <= x_2 <= 0
203203
constraint_3: -7 x_0 - 5 x_1 - 3 x_2 - x_3 + x_4 + 3 x_5 + 5 x_6 + 7 x_7 <= 0
204-
constraint_4: -7 x_0 - 5 x_1 - 3 x_2 - x_3 + x_4 + 3 x_5 + 5 x_6 + 7 x_7 <= 0
205204
...
206-
constraint_16: - x_0 + x_1 - x_2 + x_3 - x_4 + x_5 - x_6 + x_7 <= 0
205+
constraint_9: - x_0 + x_1 - x_2 + x_3 - x_4 + x_5 - x_6 + x_7 <= 0
207206
Variables:
208207
x_0 is a continuous variable (min=0, max=+oo)
209208
...
@@ -213,21 +212,20 @@ def _delsarte_LP_building(n, d, d_star, q, isinteger, solver, maxc=0):
213212

214213
p = MixedIntegerLinearProgram(maximization=True, solver=solver)
215214
A = p.new_variable(integer=isinteger, nonnegative=True)
216-
p.set_objective(sum([A[r] for r in range(n + 1)]))
215+
p.set_objective(p.sum([A[r] for r in range(n + 1)]))
217216
p.add_constraint(A[0] == 1)
218217
for i in range(1, d):
219218
p.add_constraint(A[i] == 0)
220219
for j in range(1, n + 1):
221-
rhs = sum([krawtchouk(n, q, j, r, check=False) * A[r]
220+
rhs = p.sum([krawtchouk(n, q, j, r, check=False) * A[r]
222221
for r in range(n + 1)])
223-
p.add_constraint(0 <= rhs)
224222
if j >= d_star:
225223
p.add_constraint(0 <= rhs)
226224
else: # rhs is proportional to j-th weight of the dual code
227225
p.add_constraint(0 == rhs)
228226

229227
if maxc > 0:
230-
p.add_constraint(sum([A[r] for r in range(n + 1)]), max=maxc)
228+
p.add_constraint(p.sum([A[r] for r in range(n + 1)]), max=maxc)
231229
return A, p
232230

233231

@@ -275,15 +273,15 @@ def _delsarte_cwc_LP_building(n, d, w, solver, isinteger):
275273

276274
p = MixedIntegerLinearProgram(maximization=True, solver=solver)
277275
A = p.new_variable(integer=isinteger, nonnegative=True)
278-
p.set_objective(sum([A[2*r] for r in range(d//2, w+1)]) + 1)
276+
p.set_objective(p.sum([A[2*r] for r in range(d//2, w+1)]) + 1)
279277

280278
def _q(k, i):
281279
mu_i = 1
282280
v_i = binomial(w, i)*binomial(n-w, i)
283281
return mu_i*eberlein(n, w, i, k)/v_i
284282

285283
for k in range(1, w+1):
286-
p.add_constraint(sum([A[2*i]*_q(k, i) for i in range(d//2, w+1)]),
284+
p.add_constraint(p.sum([A[2*i]*_q(k, i) for i in range(d//2, w+1)]),
287285
min=-1)
288286

289287
return A, p
@@ -622,7 +620,7 @@ def _delsarte_Q_LP_building(q, d, solver, isinteger):
622620

623621
p = MixedIntegerLinearProgram(maximization=True, solver=solver)
624622
A = p.new_variable(integer=isinteger, nonnegative=True)
625-
p.set_objective(sum([A[i] for i in range(n)]))
623+
p.set_objective(p.sum([A[i] for i in range(n)]))
626624

627625
p.add_constraint(A[0] == 1)
628626

@@ -634,7 +632,7 @@ def _delsarte_Q_LP_building(q, d, solver, isinteger):
634632
p.add_constraint(A[i] == 0)
635633

636634
for k in range(1, n):
637-
p.add_constraint(sum([q[k][i] * A[i] for i in range(n)]), min=0)
635+
p.add_constraint(p.sum([q[k][i] * A[i] for i in range(n)]), min=0)
638636

639637
return A, p
640638

0 commit comments

Comments
 (0)