clar.solver

clar.solver(X, all_epochs, alpha, alpha_max, sigma_min, B0=None, n_iter=10000, tol=0.0001, gap_freq=10, active_set_freq=5, S_freq=10, pb_name='CLAR', use_accel=False, n_nncvx_iter=10, verbose=True, heur_stop=False, alpha_Sigma_inv=0.0001)
Parameters
X: np.array, shape (n_sensors, n_sources)

gain matrix

all_epochs: np.array, shape (n_epochs, n_sensors, n_times)

observations

alpha: float

positiv number, coefficient multiplying the penalization

alpha_max: float

positiv number, if alpha is bigger than alpha max, B=0

sigma_min: float

positiv number, value to which to eigenvalue smaller than sigma_min are put to when computing the inverse of ZZT

B0: np.array, shape (n_sources, n_time)

initial value of B

n_iter: int

nuber of iterations of the algorithm

tolfloat

The tolerance for the optimization: if the updates are smaller than tol, the optimization code checks the dual gap for optimality and continues until it is smaller than tol

gap_freq: int

Compute the duality gap every gap_freq iterations.

active_set_freq: int

When updating B, while B_{j, :} != 0, B_{j, :} keeps to be updated, at most active_set_freq times.

S_freq: int

S is updated every S times.

pb_name: str

choose the problem you want to solve between “MTL”, “MTLME”, “SGCL”, “CLAR” and “mrce”

use_accel: bool

States if you want to use accelratio while computing the dual.

n_nncvx_iter: int

An approach to solve such non-convex problems is to solve a succesion of convex problem. n_nncvx_iter is number of iteration in the outter loop.

heur_stop: bool

States if you want to use an heuristic stoppping criterion ot stop the algo. Here the heuristic stopping criterion is primal[i] - primal[i+1] < primal[0] * tol / 10.

Fork me on GitHub