Skip to content

Commit 1d821bf

Browse files
committed
Properly fill row tensor when constraint have lhs and rhs
1 parent 0e1c355 commit 1d821bf

File tree

1 file changed

+7
-5
lines changed

1 file changed

+7
-5
lines changed

libecole/src/observation/nodebipartite.cpp

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -260,27 +260,29 @@ auto set_features_for_all_rows(xmatrix& out, scip::Model& model, bool const upda
260260
auto const n_lps = static_cast<value_type>(SCIPgetNLPs(scip));
261261
value_type const obj_norm = obj_l2_norm(scip);
262262

263-
auto const rows = model.lp_rows();
264-
auto const n_rows = rows.size();
265-
for (std::size_t row_idx = 0; row_idx < n_rows; ++row_idx) {
266-
auto* const row = rows[row_idx];
263+
auto feat_row_idx = std::size_t{0};
264+
for (auto* const row : model.lp_rows()) {
267265
auto const row_norm = static_cast<value_type>(row_l2_norm(row));
268-
auto features = xt::row(out, static_cast<std::ptrdiff_t>(row_idx));
269266

270267
// Rows are counted once per rhs and once per lhs
271268
if (scip::get_unshifted_lhs(scip, row).has_value()) {
269+
auto features = xt::row(out, static_cast<std::ptrdiff_t>(feat_row_idx));
272270
if (update_static) {
273271
set_static_features_for_lhs_row(features, scip, row, row_norm);
274272
}
275273
set_dynamic_features_for_lhs_row(features, scip, row, row_norm, obj_norm, n_lps);
274+
feat_row_idx++;
276275
}
277276
if (scip::get_unshifted_rhs(scip, row).has_value()) {
277+
auto features = xt::row(out, static_cast<std::ptrdiff_t>(feat_row_idx));
278278
if (update_static) {
279279
set_static_features_for_rhs_row(features, scip, row, row_norm);
280280
}
281281
set_dynamic_features_for_rhs_row(features, scip, row, row_norm, obj_norm, n_lps);
282+
feat_row_idx++;
282283
}
283284
}
285+
assert(feat_row_idx == n_ineq_rows(model));
284286
}
285287

286288
/****************************************

0 commit comments

Comments
 (0)