Old

optimizeCardinalityOld(problem, param)[source]

DC programming for solving the cardinality optimization problem The l0 norm is approximated by a capped-l1 function.

\(min c'(x, y, z) + lambda_0*||k.*x||_0 + lambda_1*||x||_1 . - delta_0*||d.*y||_0 + delta_1*||y||_1\) s.t. \(A*(x, y, z) <= b\) \(l <= (x,y,z) <= u\) \(x in R^p, y in R^q, z in R^r\)

USAGE:

solution = optimizeCardinalityOld (problem, param)

INPUT:

problem – Structure containing the following fields describing the problem:

  • .p - size of vector x OR a size(A,2) x 1 boolean indicating columns of A corresponding to x (min zero norm).

  • .q - size of vector y OR a size(A,2) x 1 boolean indicating columns of A corresponding to y (max zero norm).

  • .r - size of vector z OR a `size(A,2) x 1`boolean indicating columns of A corresponding to z .

  • .A - s x size(A,2) LHS matrix

  • .b - s x 1 RHS vector

  • .csense - s x 1 Constraint senses, a string containing the constraint sense for each row in A (‘E’, equality, ‘G’ greater than, ‘L’ less than).

  • .lb - size(A,2) x 1 Lower bound vector

  • .ub - size(A,2) x 1 Upper bound vector

  • .c - size(A,2) x 1 linear objective function vector

OPTIONAL INPUTS:
  • problem – Structure containing the following fields describing the problem: * .osense - Objective sense for problem.c only (1 means minimise (default), -1 means maximise) * .k - p x 1 OR a size(A,2) x 1 strictly positive weight vector on minimise ||x||_0 * .d - q x 1 OR a size(A,2) x 1 strictly positive weight vector on maximise ||y||_0 * .lambda0 - trade-off parameter on minimise ||x||_0 * .lambda1 - trade-off parameter on minimise ||x||_1 * .delta0 - trade-off parameter on maximise ||y||_0 * .delta1 - trade-off parameter on minimise ||y||_1 * .lambda - shorthand for `.lambda0 (mutually exclusive with

    .lambda0/.lambda1); when given, .lambda0 is set to problem.lambda and .lambda1 is set to lambda0/10 (Default .lambda = 1 if none of .lambda, .lambda0, .lambda1 are given)

    • .delta - shorthand for .delta0 (mutually exclusive with .delta0/.delta1); when given, .delta0 is set to problem.delta and .delta1 is set to delta0/10 (Default .delta = 0 if none of .delta, .delta0, .delta1 are given)

    • .complementarityindk - size(A,2) x 2 matrix identifying, for each complementarity pair, the two x-indices (columns) that are linked; required together with .complementarityindd

    • .complementarityindd - size(A,2) x 1 vector identifying, for each complementarity pair, the corresponding y-index; required together with .complementarityindk

  • param – Parameters structure: * .printLevel - greater than zero to recieve more output * .nbMaxIteration - stopping criteria - number maximal of iteration (Default value = 100) * .epsilon - stopping criteria - (Default value = 1e-6) * .theta - starting parameter of the approximation (Default value = 0.5)

    For a sufficiently large parameter , the Capped-L1 approximate problem and the original cardinality optimisation problem are have the same set of optimal solutions

    • .thetaMultiplier - at each iteration: theta = theta*thetaMultiplier

    • .eta - Smallest value considered non-zero (Default value feasTol*1000)

    • .warmStartMethod - method used to compute the starting point (x,y,z) for the DCA loop; one of ‘inverseTheta’, ‘original’, ‘0’, ‘l1’, ‘l2’, ‘random’ (Default value = ‘random’)

    • .condenseW - if true, omit the auxiliary w variable for x-entries already constrained to be non-negative (Default value = 1)

    • .condenseT - if true, omit the auxiliary t variable for y-entries whose absolute value is already constrained to be less than 1/theta (Default value = 1)

    • .testFeasibility - if true, solve the initial sub-problem once before the DCA loop begins to check and report whether it is feasible (Default value = 0)

optimizeCardinality_RF(problem, params)[source]

DC programming for solving the weighted cardinality optimization problem

In general, the l0 norm is approximated by capped-l1 function. \(min c'(x, y, z) + diag(lambda)*||x||_0 - diag(delta)*||y||_0\) s.t. \(A*(x, y, z) <= b\) \(l <= (x,y,z) <= u\) \(x in R^p, y in R^q, z in R^r\)

In the particular case where the problem is sparse minimisation, then a variety of approximations to the ‘l0’ norm are available. \(min diag(lambda)*||x||_0 s.t. :math:`A*(x, y, z) <= b\) \(l <= (x,y,z) <= u\) \(x in R^p, y in R^q, z in R^r\)

USAGE:

solution = optimizeCardinality (problem, params)

INPUT:

problem – Structure containing the following fields describing the problem:

  • .p - size of vector x

  • .q - size of vector y

  • .r - size of vector z

  • .c - (p+q+r) x 1 linear objective function vector

  • .lambda - trade-off parameter of ||x||_0
    • scalar, or size of vector x

  • .delta - trade-off parameter of ||y||_0
    • scalar, or size of vector y

  • .A - s x (p+q+r) LHS matrix

  • .b - s x 1 RHS vector

  • .csense - s x 1 Constraint senses, a string containting the constraint sense for each row in A (‘E’, equality, ‘G’ greater than, ‘L’ less than).

  • .lb - (p+q+r) x 1 Lower bound vector

  • .ub - ``(p+q+r) x 1` Upper bound vector

OPTIONAL INPUTS:

params – Parameters structure:

  • .nbMaxIteration - stopping criteria - number maximal of iteration (Default value = 1000)

  • .epsilon - stopping criteria - (Defautl value = 10e-6)

  • .theta - parameter of the approximation (Default value = 2)

OUTPUT:

solution – Structure containing the following fields:

  • .x - p x 1 solution vector

  • .y - q x 1 solution vector

  • .z - r x 1 solution vector

  • .stat - status

    • 1 = Solution found

    • 2 = Unbounded

    • 0 = Infeasible

    • -1= Invalid input

optimizeCardinality_old(problem, params)[source]

DC programming for solving the cardinality optimization problem The l0 norm is approximated by capped-l1 function. \(min c'(x, y, z) + lambda*||x||_0 - delta*||y||_0\) s.t. \(A*(x, y, z) <= b\) \(l <= (x,y,z) <= u\) \(x in R^p, y in R^q, z in R^r\)

USAGE:

solution = optimizeCardinality (problem, params)

INPUT:

problem – Structure containing the following fields describing the problem:

  • .p - size of vector x

  • .q - size of vector y

  • .r - size of vector z

  • .c - (p+q+r) x 1 linear objective function vector

  • .lambda - trade-off parameter of ||x||_0

  • .delta - trade-off parameter of ||y||_0

  • .A - s x (p+q+r) LHS matrix

  • .b - s x 1 RHS vector

  • .csense - s x 1 Constraint senses, a string containting the constraint sense for each row in A (‘E’, equality, ‘G’ greater than, ‘L’ less than).

  • .lb - (p+q+r) x 1 Lower bound vector

  • .ub - ``(p+q+r) x 1` Upper bound vector

OPTIONAL INPUTS:

params – Parameters structure:

  • .nbMaxIteration - stopping criteria - number maximal of iteration (Default value = 1000)

  • .epsilon - stopping criteria - (Defautl value = 10e-6)

  • .theta - parameter of the approximation (Default value = 2)

OUTPUT:

solution – Structure containing the following fields:

  • .x - p x 1 solution vector

  • .y - q x 1 solution vector

  • .z - r x 1 solution vector

  • .stat - status

    • 1 = Solution found

    • 2 = Unbounded

    • 0 = Infeasible

    • -1= Invalid input

optimizeCardinality_weighted_Minh(problem, params)[source]

DC programming for solving the cardinality optimization problem The l0 norm is approximated by capped-l1 function. :math:`min c’(x, y, z) + lambda_0*||k.*x||_0 - delta_0*||d.*y||_0

  • lambda_1*||x||_1 + delta_1*||y||_1`

s.t. \(A*(x, y, z) <= b\) \(l <= (x,y,z) <= u\) \(x in R^p, y in R^q, z in R^r\)

USAGE:

solution = optimizeCardinality (problem, params)

INPUT:

problem – Structure containing the following fields describing the problem:

  • .p - size of vector x

  • .q - size of vector y

  • .r - size of vector z

  • .c - (p+q+r) x 1 linear objective function vector

  • .lambda0 - trade-off parameter of ||x||_0 (Default value = 1)

  • .delta0 - trade-off parameter of ||y||_0 (Default value = 1)

  • .lambda1 - trade-off parameter of ||x||_1 (Default value = 1)

  • .delta1 - trade-off parameter of ||y||_1 (Default value = 1)

  • .k - p x 1 strictly possitive weight vector of x

  • .d - q x 1 strictly possitive weight vector of y

  • .A - s x (p+q+r) LHS matrix

  • .b - s x 1 RHS vector

  • .csense - s x 1 Constraint senses, a string containting the constraint sense for each row in A (‘E’, equality, ‘G’ greater than, ‘L’ less than).

  • .lb - (p+q+r) x 1 Lower bound vector

  • .ub - ``(p+q+r) x 1` Upper bound vector

OPTIONAL INPUTS:

params – Parameters structure:

  • .nbMaxIteration - stopping criteria - number maximal of iteration (Default value = 1000)

  • .epsilon - stopping criteria - (Defautl value = 10e-6)

  • .theta - parameter of the approximation (Default value = 2)

OUTPUT:

solution – Structure containing the following fields:

  • .x - p x 1 solution vector

  • .y - q x 1 solution vector

  • .z - r x 1 solution vector

  • .stat - status

    • 1 = Solution found

    • 2 = Unbounded

    • 0 = Infeasible

    • -1= Invalid input