Note that currently (as of July 27, 2013) there is an issue (a bug) with HIFOO in the latest version 3.5. It is activated when the user tries to input both a constraint on the structure of the controller by using a mask and an initial controller. The check if the initial controller meets the structure
requirements can actually never pass, since the init.a matrix is at first converted to a vector and then compared to a matrix mask. In other words, an n x n matrix is compared to the n^2 vector. The checking routine is be found at lines 132, 133 and 134 of the "processInitialController.m" file. See the following copy of the code. When these three lines are commented out, the hifoo code works again, but the check is not performed.
% check if the initial controller is the same order as the
% structure
% if (sum(size(A) ~= size(init.a)) > 0)
% error('The given initial controller doesn''t have the same
order as the given structure');
% end
Text of the error message:
HIFOO Version 3.5, using options
hifoo: "plant" is an SS object, using input partitioning in "InputGroup"
hifoo: "plant" is an SS object, using output partitioning in "OutputGroup"
Error using processInitialController (line 133)
The given initial controller doesn't have the same order as the given
structure
Error in hifoo (line 351)
[init,ssinputcont] = processInitialController(init,pars,options);
Note that currently (as of July 27, 2013) there is an issue (a bug) with HIFOO in the latest version 3.5. It is activated when the user tries to input both a constraint on the structure of the controller by using a mask and an initial controller. The check if the initial controller meets the structure
requirements can actually never pass, since the init.a matrix is at first converted to a vector and then compared to a matrix mask. In other words, an n x n matrix is compared to the n^2 vector. The checking routine is be found at lines 132, 133 and 134 of the "processInitialController.m" file. See the following copy of the code. When these three lines are commented out, the hifoo code works again, but the check is not performed.
% check if the initial controller is the same order as the
% structure
% if (sum(size(A) ~= size(init.a)) > 0)
% error('The given initial controller doesn''t have the same
order as the given structure');
% end
Text of the error message:
HIFOO Version 3.5, using options
hifoo: "plant" is an SS object, using input partitioning in "InputGroup"
hifoo: "plant" is an SS object, using output partitioning in "OutputGroup"
Error using processInitialController (line 133)
The given initial controller doesn't have the same order as the given
structure
Error in hifoo (line 351)
[init,ssinputcont] = processInitialController(init,pars,options);
Note that currently (as of July 27, 2013) there is an issue (a bug) with HIFOO in the latest version 3.5. It is activated when the user tries to input both a constraint on the structure of the controller by using a mask and an initial controller. The check if the initial controller meets the structure
requirements can actually never pass, since the init.a matrix is at first converted to a vector and then compared to a matrix mask. In other words, an n x n matrix is compared to the n^2 vector. The checking routine is be found at lines 132, 133 and 134 of the "processInitialController.m" file. See the following copy of the code. When these three lines are commented out, the hifoo code works again, but the check is not performed.
% check if the initial controller is the same order as the
% structure
% if (sum(size(A) ~= size(init.a)) > 0)
% error('The given initial controller doesn''t have the same
order as the given structure');
% end
Text of the error message:
HIFOO Version 3.5, using options
hifoo: "plant" is an SS object, using input partitioning in "InputGroup"
hifoo: "plant" is an SS object, using output partitioning in "OutputGroup"
Error using processInitialController (line 133)
The given initial controller doesn't have the same order as the given
structure
Error in hifoo (line 351)
[init,ssinputcont] = processInitialController(init,pars,options);
Error in dual_stage_realmotors_differentstruct_coupled (line 73)
[K1_hifo, F, VIOL, LOC] = hifoo(P,ordR2+ordK1+ordF,OPTIONS,INIT);
The bug has been reported to the HIFOO developers and the correction is expected soon. Till then, just comment out the three lines.
Comment only