The current way of representing A x is with a VectorAffineFunction, which has the following structure:
MOI.VectorAffineFunction(
[MOI.VectorAffineTerm(
row_idx,
ScalarAffineTerm(
coeff,
col_idx,
)
)],
[constants]
)
This has a lot of nested structure and imposes a fixed concrete layout:
- one cannot take advantage of specific matrix structures
- data gets moved around twice, from the matrix to a
VectorAffineTerm, then from VAT to the solver.
Could we have an abstract linear operator function, VectorLinearOperator, with possibly a bridge to VectorAffineTerm to avoid excessive burden on solvers.
It would let solvers query the information as they want, rows(vector_linear.A) or cols(vector_linear.A) or through scalar vector_linear.A[i, j]
The current way of representing
A xis with aVectorAffineFunction, which has the following structure:This has a lot of nested structure and imposes a fixed concrete layout:
VectorAffineTerm, then fromVATto the solver.Could we have an abstract linear operator function,
VectorLinearOperator, with possibly a bridge toVectorAffineTermto avoid excessive burden on solvers.It would let solvers query the information as they want,
rows(vector_linear.A)orcols(vector_linear.A)or through scalarvector_linear.A[i, j]