Skip to content

Adding and dropping columns to active-set matrix S inefficient #12

@mpf

Description

@mpf

As discussed, adding and dropping columns from the active-set matrix S is especially inefficient. Because S is only used through products with vectors, it seems plausible that we could replace the explicit matrix S with an implicit linear map.

Roughly, if active is the vector of indices pointing to active variables, the linear map would compute the product S*x via the method

    # product S*x
    function Sprod(A, x, active)
        xx = zeros(size(A,2))
        xx[active] .= x
        return A*xx
    end

(and a corresponding method for the product S'*y).

So instead of copying and deleting individual columns of A into S, we would just keep track of the active indices and use the linear map Sprod to compute the products. The tradeoff is additional products with A. (Currently, there is only one product with A at each iteration used to pull a column from A into S, ie, this line.)

To do:

  • Implement Sprod and SprodT
  • Wrap into a linear map
  • Verify that QRupdate works with linear operators
  • Create a benchmark problem and profile against current version

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions