Can I lump my constraints so as to avoid adding unnecessary optimization variables

1 view (last 30 days)
I have an optimization problem with numerous decision variables. Among them, a small portion of them participates in objective functions and some constraints. Other optimization variables participate in other constraints (most of them). As performance of fmincon may depends on number of decision variables, Can I lump some constraint in order to avoid adding unnecessary decision variables? For example: I have the following constraints (it's part of them). pgn,pdn,v_mt,Delta,pg,pd are optimization variables.
% First we define the new variables for the sake of
%readability of the scrips (I write only some of them here...):
pgn = X( 145:183 )';
pdn = X( 184:222 )';
pg = X( 301:310 )';
pd = X( 321:339 )';
...
pbal_eq = -(pgn-pdn)+v_mt.*((Ybus_m.*cos(Delta))*v_mt);% pgn:39/pdn:39/v_m:39/v_a=39 (39 eq)
pgn_eq = - pgn + [zeros(29,1);pg]; (39 eq)
pdn_eq= -pdn+[0;0;pd(1);pd(2);0;0;pd(3);pd(4);0;0;0;pd(5);0;0;pd(6);pd(7);0;pd(8);0;pd(9);...
pd(10);0;pd(11);pd(12);pd(13);pd(14);pd(15);pd(16);pd(17);0;pd(18);0;0;0;0;0;0;0;pd(19)];%(39eq)
Ceq=[pbal_eq;pgn_eq;pdn_eq]
Can I lump it this way and avoid having unnecessary optimization variables? So decision variables , pgn,pdn are neglected and only v_mt,Delta,pg,pd are kept.
pgn=[zeros(29,1);pg]; %
pdn= [0;0;pd(1);pd(2);0;0;pd(3);pd(4);0;0;0;pd(5);0;0;pd(6);pd(7);0;pd(8);0;pd(9);...
pd(10);0;pd(11);pd(12);pd(13);pd(14);pd(15);pd(16);pd(17);0;pd(18);0;0;0;0;0;0;0;pd(19)];%(39eq)
pbal_eq = -(pgn-pdn)+v_mt.*((Ybus_m.*cos(Delta))*v_mt);% pgn:39/pdn:39/v_m:39/v_a=39 (39 eq)
Ceq=[pbal_eq];
I know that constraints pgn_eq and pdn_eq are linear, so I should apply them with Aeq , Beq matrices. But I am writing it this way to get the gist of lumping the constraints. How ever, it doesnt change the fact, because I can still lump them in Aeq , Beq too if the idea of lumping the constraints is correct. Moreover, if lumping is possible, so I dont need to define linear constraints in Aeq,Beq for pgn , pdn. In that case, I only have one nonlinear equality constraint (pbal_eq). (if we assume these as the whole constraints I have)

Accepted Answer

Matt J
Matt J on 26 Apr 2015
Edited: Matt J on 9 May 2015
I'm not sure I understand the "lumping" procedure. However, the bottom line is that by changing the constraints, you change the feasible region, and therefore you also change the solution to the problem. The only way I can see that being useful is if the lumped problem is a decent heuristic approximation to the original problem for some reason. By solving the lumped problem, you could then maybe obtain a better initial guess, which could be used to solve the original problem in fewer iterations. There is no way to predict in advance how effective this will be, but it is is something you can always try yourself.
However, given that this is likely a spin-off of your earlier post, I really wonder if you're barking up the wrong tree by trying to eliminate variables. Do you know yet whether the slow performance is because fmincon is iterating endlessly, or is it just because each iteration itself is costly?
Six hundred unknowns is not a small problem size, but not really a huge one either, and shouldn't take too many iterations to converge. It's a size that can usually be dealt with pretty well, as long as you take care to implement the objective, constraints, and their derivatives efficiently. Part of doing so means not relying on MATLAB's default finite difference derivative approximations. You have to start getting into the Optimization Toolbox's options for implementing your own analytical derivative calculations. Where a Hessian calculation is required, you also might want to take advantage of options like HessMult, HessFcn, or HessPattern.
  1 Comment
Jamais avenir
Jamais avenir on 6 May 2015
Dear Matt J. Sorry for my delay in responding your comment. I was trying to implement all of the linear constraints as A,B matrices. Now They are completely vectorized with A,B,X matrices. I also checked them by testing them with expanded version of the linear constraints, and it was okay. But still I have some problems for solving this optimization. I updated my earlier question here . Please check it if you have time. Best wishes.

Sign in to comment.

More Answers (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!