I have a rather ugly quadratic objective function that requires a fair amount of manipulation of variables, and I suspect that one of the things that’s making this process incredibly slow is that I have lots of `GenericAffExpr`

that are carrying around lots of unnecessary variables that have `0.0`

coefficients. Is there an elegant way of dropping these?

May you post a MWE?

1 Like

Here’s the (incredibly hackish) code I wrote for doing this, I guess my question was whether there was an equivalent function already available in JuMP, which perhaps would have been better to use depending on the context

```
function _dropzeros(ex::T) where T<:JuMP.GenericAffExpr
mask = Bool[x > eps(Float32) for x ∈ ex.ceoffs]
T(ex.vars[mask], ex.coeffs[mask], ex.constant)
end
```

This seems to work quite well, by the way, and is much faster than I was expecting it to be.

I’m planning on changing `AffExpr`

and `QuadExpr`

to use a dictionary instead of a list of coefficients for JuMP 0.19 (discussion). That would resolve this issue.

1 Like

That sounds wonderful. I’ve been noticing that things start getting *really* ugly with quadratic expressions, it gets to the point that everything requires custom code to do efficiently.