Skip to content

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

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

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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