Description of graphsp_IP_res.m

Matlab syntax
>> out = graphsp_IP_res(Lp,E,Q,R,gamma,opts);

Matlab function graphsp_IP_res.m takes the problem data { L_p, E, Q, R, gamma } and the input opts and returns the solution to the sparsity-promoting optimal control problem {rm (P1)} for growing connected resistive networks. Input opts allows users to specify the following parameters

  1. opts.eps_dg – tolerance on duality gap;

  2. opts.eps_res – tolerance on dual residual;

  3. opts.maxit – maximum number of IP iterations;

  4. opts.maxit_pcg – maximum number of PCG iterations;

  5. opts.delta_pcg_aff – algorithm parameter for pcg method;

  6. opts.delta_pcg – algorithm parameter for pcg method;

  7. opts.method – method used for computing search directions.

opts.method specifies method used for computing search directions

  1. opts.method = 'chol’ – Cholesky factorization;

  2. opts.method = 'pcg1’ – PCG method with diagonal preconditioner; Hessian stored;

  3. opts.method = 'pcg2’ – PCG method with diagonal preconditioner; Hessian not stored.

If opts argument is omitted, the default values are set to:

  1. opts.eps_dg = 10^{-6};

  2. opts.eps_res = 10^{-3};

  3. opts.maxit = 100;

  4. opts.maxit_pcg = 1000;

  5. opts.delta_pcg_aff = 0.3;

  6. opts.delta_pcg = 0.3;

  7. opts.method = 'pcg2’;

The output out is a structure that contains

  1. out.x – optimal vector of the controller edge weights;

  2. out.z – optimal dual vector;

  3. out.dg – duality gap;

  4. out.res – dual residual;

  5. out.s – number of IP iterations;

  6. out.ind1 – number of PCG iterations for affine search direction;

  7. out.ind2 – number of PCG iterations for Mehrotra search direction.

Description of graphsp_proxN_res.m

Matlab syntax
>> out = graphsp_proxN_res(Lp,Ec,R,gamma,opts);

Matlab function graphsp_proxN_res.m takes the problem data { L_p, E, Q, R, gamma } and the input opts and returns the solution to the sparsity-promoting optimal control problem {rm (P1)} for growing connected resistive networks. Input opts allows users to specify the following parameters

  1. opts.eps_dg – tolerance on duality gap;

  2. opts.eps_res – tolerance on dual residual;

  3. opts.maxit – maximum number of proxN iterations.

If opts argument is omitted, the default values are set to:

  1. opts.eps_dg = 10^{-4};

  2. opts.eps_res = 10^{-3};

  3. opts.maxit = 200.

The output out is a structure that contains

  1. out.x – optimal vector of edge weights;

  2. out.s – number of proxN iterations;

  3. out.dg – duality gap;

  4. out.res – dual residual;

  5. out.js – number of iterations for line-search;

  6. out.ss – step-size;

  7. out.iter_time – time of an inner iteration.

Description of graphsp_proxBB_res.m

Matlab syntax
>> out = graphsp_proxBB_res(Lp,Ec,R,gamma,opts);

Matlab function graphsp_proxBB_res.m takes the problem data { L_p, E, Q, R, gamma } and the input opts and returns the solution to the sparsity-promoting optimal control problem {rm (P1)} for growing connected resistive networks. Input opts allows users to specify the following parameters

  1. opts.eps_dg – tolerance on duality gap;

  2. opts.eps_res – tolerance on dual residual;

  3. opts.maxit – maximum number of proxN iterations;

  4. opts.flagBB – flag for BB step-size initialization.

If opts argument is omitted, the default values are set to:

  1. opts.eps_dg = 10^{-4};

  2. opts.eps_res = 10^{-3};

  3. opts.maxit = 1000;

  4. opts.flagBB = 1.

The output out is a structure that contains

  1. out.x – optimal vector of edge weights;

  2. out.s – number of proxBB iterations;

  3. out.dg – duality gap;

  4. out.res – dual residual;

  5. out.js – number of iterations for line-search;

  6. out.ss – step-size;

  7. out.iter_time – time of an inner iteration.

Description of run_graphsp_res.m

Matlab syntax
>> run_graphsp_res;

Matlab script run_graphsp_IP_res.m allows users to:

  • call graphsp_IP_res.m, graphsp_proxN_res.m, and graphsp_proxBB_res.m.

Please set flag_p to:

  • 1 – for Erdos-Renyi plant network;

  • 2 – for path plant network.

We set the sparsity-promoting parameter to gamma = 0.8 ,gamma_{rm max}, where gamma_{max} identifies the value of gamma for which all edge weights in the controller graph are equal to zero. You can specify other values of gamma in the code.

run_graphsp_IP_res.m gives:

  1. rm out1 (output of graphsp_IP_res.m for opts.method = 'chol’) and rm t1 (total running time);

  2. rm out2 (output of graphsp_IP_res.m for opts.method = 'pcg1’) and rm t2 (total running time);

  3. rm out3 (output of graphsp_IP_res.m for opts.method = 'pcg2’) and rm t3 (total running time);

  4. rm out4 (output of graphsp_proxN_res.m) and rm t4 (total running time);

  5. rm out5 (output of graphsp_proxBB_res.m) and rm t5 (total running time).

Description of run_proxBB_proxN_res

Matlab syntax
>> run_proxBB_proxN_res;

Matlab script run_proxBB_proxN_res allows users to:

  • call graphsp_proxN_res.m and graphsp_proxBB_res.m.

Please set flag_p to:

  • 1 – for Erdos-Renyi plant network;

  • 2 – for path plant network.

We set the sparsity-promoting parameter to gamma = 0.8 ,gamma_{rm max}, where gamma_{max} identifies the value of gamma for which all edge weights in the controller graph are equal to zero. You can specify other values of gamma in the code.

run_graphsp_IP_res.m gives:

  1. rm out1 (output of graphsp_proxN_res.m) and rm t1 (total running time);

  2. rm out2 (output of graphsp_proxBB_res.m) and rm t2 (total running time).

Description of run_graphsp_IP_res.m

Matlab syntax
>> run_graphsp_IP_res;

Matlab script run_graphsp_IP_res.m allows users to:

  • call graphsp_IP_res.m.

Please set flag_p to:

  • 1 – for Erdos-Renyi plant network;

  • 2 – for path plant network.

We set the sparsity-promoting parameter to gamma = 0.5 ,gamma_{rm max}, where gamma_{max} identifies the value of gamma for which all edge weights in the controller graph are equal to zero. You can specify other values of gamma in the code.

run_graphsp_IP_res.m gives:

  1. rm out1 (output of graphsp_IP_res.m for opts.method = 'chol’) and rm t1 (total running time);

  2. rm out2 (output of graphsp_IP_res.m for opts.method = 'pcg1’) and rm t2 (total running time);

  3. rm out3 (output of graphsp_IP_res.m for opts.method = 'pcg2’) and rm t3 (total running time).