Skip to content

Abstract / alternative linear operator storage #863

@matbesancon

Description

@matbesancon

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]

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions