@@ -171,136 +171,98 @@ initial_guess(Workspace<T>& qpwork,
171171
172172template <typename T>
173173void
174- update (optional<MatRef<T>> H_ ,
175- optional<VecRef<T>> g_ ,
176- optional<MatRef<T>> A_ ,
177- optional<VecRef<T>> b_ ,
178- optional<MatRef<T>> C_ ,
179- optional<VecRef<T>> u_ ,
180- optional<VecRef<T>> l_ ,
174+ update (optional<MatRef<T>> H ,
175+ optional<VecRef<T>> g ,
176+ optional<MatRef<T>> A ,
177+ optional<VecRef<T>> b ,
178+ optional<MatRef<T>> C ,
179+ optional<VecRef<T>> u ,
180+ optional<VecRef<T>> l ,
181181 Model<T>& model,
182182 Workspace<T>& work)
183183{
184184 // check the model is valid
185- if (g_ != nullopt ) {
186- PROXSUITE_CHECK_ARGUMENT_SIZE (g_ .value ().rows (),
185+ if (g != nullopt ) {
186+ PROXSUITE_CHECK_ARGUMENT_SIZE (g .value ().rows (),
187187 model.dim ,
188188 " the dimension wrt the primal variable x "
189189 " variable for updating g is not valid." );
190190 }
191- if (b_ != nullopt ) {
192- PROXSUITE_CHECK_ARGUMENT_SIZE (b_ .value ().rows (),
191+ if (b != nullopt ) {
192+ PROXSUITE_CHECK_ARGUMENT_SIZE (b .value ().rows (),
193193 model.n_eq ,
194194 " the dimension wrt equality constrained "
195195 " variables for updating b is not valid." );
196196 }
197- if (u_ != nullopt ) {
198- PROXSUITE_CHECK_ARGUMENT_SIZE (u_ .value ().rows (),
197+ if (u != nullopt ) {
198+ PROXSUITE_CHECK_ARGUMENT_SIZE (u .value ().rows (),
199199 model.n_in ,
200200 " the dimension wrt inequality constrained "
201201 " variables for updating u is not valid." );
202202 }
203- if (l_ != nullopt ) {
204- PROXSUITE_CHECK_ARGUMENT_SIZE (l_ .value ().rows (),
203+ if (l != nullopt ) {
204+ PROXSUITE_CHECK_ARGUMENT_SIZE (l .value ().rows (),
205205 model.n_in ,
206206 " the dimension wrt inequality constrained "
207207 " variables for updating l is not valid." );
208208 }
209- if (H_ != nullopt ) {
209+ if (H != nullopt ) {
210210 PROXSUITE_CHECK_ARGUMENT_SIZE (
211- H_ .value ().rows (),
211+ H .value ().rows (),
212212 model.dim ,
213213 " the row dimension for updating H is not valid." );
214214 PROXSUITE_CHECK_ARGUMENT_SIZE (
215- H_ .value ().cols (),
215+ H .value ().cols (),
216216 model.dim ,
217217 " the column dimension for updating H is not valid." );
218218 }
219- if (A_ != nullopt ) {
219+ if (A != nullopt ) {
220220 PROXSUITE_CHECK_ARGUMENT_SIZE (
221- A_ .value ().rows (),
221+ A .value ().rows (),
222222 model.n_eq ,
223223 " the row dimension for updating A is not valid." );
224224 PROXSUITE_CHECK_ARGUMENT_SIZE (
225- A_ .value ().cols (),
225+ A .value ().cols (),
226226 model.dim ,
227227 " the column dimension for updating A is not valid." );
228228 }
229- if (C_ != nullopt ) {
229+ if (C != nullopt ) {
230230 PROXSUITE_CHECK_ARGUMENT_SIZE (
231- C_ .value ().rows (),
231+ C .value ().rows (),
232232 model.n_in ,
233233 " the row dimension for updating C is not valid." );
234234 PROXSUITE_CHECK_ARGUMENT_SIZE (
235- C_ .value ().cols (),
235+ C .value ().cols (),
236236 model.dim ,
237237 " the column dimension for updating C is not valid." );
238238 }
239+
239240 // update the model
240- if (g_ != nullopt ) {
241- model.g = g_ .value ().eval ();
241+ if (g != nullopt ) {
242+ model.g = g .value ().eval ();
242243 }
243- if (b_ != nullopt ) {
244- model.b = b_ .value ().eval ();
244+ if (b != nullopt ) {
245+ model.b = b .value ().eval ();
245246 }
246- if (u_ != nullopt ) {
247- model.u = u_ .value ().eval ();
247+ if (u != nullopt ) {
248+ model.u = u .value ().eval ();
248249 }
249- if (l_ != nullopt ) {
250- model.l = l_ .value ().eval ();
250+ if (l != nullopt ) {
251+ model.l = l .value ().eval ();
251252 }
252- if (H_ != nullopt ) {
253- work.refactorize = true ;
254- if (A_ != nullopt ) {
255- if (C_ != nullopt ) {
256- model.H = Eigen::
257- Matrix<T, Eigen::Dynamic, Eigen::Dynamic, to_eigen_layout (rowmajor)>(
258- H_.value ());
259- model.A = Eigen::
260- Matrix<T, Eigen::Dynamic, Eigen::Dynamic, to_eigen_layout (rowmajor)>(
261- A_.value ());
262- model.C = Eigen::
263- Matrix<T, Eigen::Dynamic, Eigen::Dynamic, to_eigen_layout (rowmajor)>(
264- C_.value ());
265- } else {
266- model.H = Eigen::
267- Matrix<T, Eigen::Dynamic, Eigen::Dynamic, to_eigen_layout (rowmajor)>(
268- H_.value ());
269- model.A = Eigen::
270- Matrix<T, Eigen::Dynamic, Eigen::Dynamic, to_eigen_layout (rowmajor)>(
271- A_.value ());
272- }
273- } else if (C_ != nullopt ) {
274- model.H = Eigen::
275- Matrix<T, Eigen::Dynamic, Eigen::Dynamic, to_eigen_layout (rowmajor)>(
276- H_.value ());
277- model.C = Eigen::
278- Matrix<T, Eigen::Dynamic, Eigen::Dynamic, to_eigen_layout (rowmajor)>(
279- C_.value ());
280- } else {
281- model.H = Eigen::
282- Matrix<T, Eigen::Dynamic, Eigen::Dynamic, to_eigen_layout (rowmajor)>(
283- H_.value ());
284- }
285- } else if (A_ != nullopt ) {
286- work.refactorize = true ;
287- if (C_ != nullopt ) {
288- model.A = Eigen::
289- Matrix<T, Eigen::Dynamic, Eigen::Dynamic, to_eigen_layout (rowmajor)>(
290- A_.value ());
291- model.C = Eigen::
292- Matrix<T, Eigen::Dynamic, Eigen::Dynamic, to_eigen_layout (rowmajor)>(
293- C_.value ());
294- } else {
295- model.A = Eigen::
296- Matrix<T, Eigen::Dynamic, Eigen::Dynamic, to_eigen_layout (rowmajor)>(
297- A_.value ());
298- }
299- } else if (C_ != nullopt ) {
253+
254+ if (H != nullopt || A != nullopt || C != nullopt ) {
300255 work.refactorize = true ;
301- model.C = Eigen::
302- Matrix<T, Eigen::Dynamic, Eigen::Dynamic, to_eigen_layout (rowmajor)>(
303- C_.value ());
256+ }
257+
258+ if (H != nullopt ) {
259+ model.H = H.value ();
260+ }
261+ if (A != nullopt ) {
262+ model.A = A.value ();
263+ }
264+ if (C != nullopt ) {
265+ model.C = C.value ();
304266 }
305267}
306268/* !
0 commit comments