117 lqn_box_visit_activity(lqn, aidx, mult, nH, d, vis);
132 const std::size_t nidx =
lqn.nidx, nH =
lqn.nhosts;
135 for (std::size_t t = 1; t <=
lqn.ntasks; ++t) {
136 const std::size_t tidx =
lqn.tshift + t;
137 if (
lqn.isref[tidx]) out.
refidx.push_back(tidx);
139 const std::size_t R = out.
refidx.size();
141 throw InputError(
"lqn_boxbounds: the model declares no reference task, so it has no chain");
145 std::vector<T> Nref(R, one), Zref(R, zero);
146 for (std::size_t r = 0; r < R; ++r) {
147 const std::size_t tidx = out.
refidx[r];
148 const double mult =
lqn.mult[tidx];
150 Zref[r] =
lqn.think[tidx].disabled ? zero :
lqn.think[tidx].mean;
151 std::vector<T> d(nH + 1, zero), vis(nidx + 1, zero);
152 for (std::size_t eidx :
lqn.entriesof[tidx])
153 detail::lqn_box_visit_entry(
lqn, eidx, one, nH, d, vis);
154 for (std::size_t h = 0; h <= nH; ++h) D(h, r) = d[h];
155 for (std::size_t i = 0; i <= nidx; ++i) Vis(i, r) = vis[i];
161 Matrix<T> V(nH, R, zero), S(nH, R, zero);
162 for (std::size_t h = 1; h <= nH; ++h)
163 for (std::size_t r = 0; r < R; ++r) {
164 S(h - 1, r) = D(h, r);
165 V(h - 1, r) = D(h, r) > zero ? one : zero;
167 std::vector<pfqn::MwrbbSched> sched(nH);
168 for (std::size_t h = 1; h <= nH; ++h) sched[h - 1] = detail::lqn_disc_code(
lqn.sched[h]);
169 const std::vector<int> prio(R, 0);
175 out.
TN_lo.assign(nidx + 1, zero);
176 out.
TN_up.assign(nidx + 1, zero);
177 out.
UN_lo.assign(nidx + 1, zero);
178 out.
UN_up.assign(nidx + 1, zero);
181 for (std::size_t i = 1; i <= nidx; ++i) {
182 bool visited =
false;
183 for (std::size_t r = 0; r < R; ++r)
184 if (Vis(i, r) > zero) visited =
true;
185 if (!visited)
continue;
187 for (std::size_t r = 0; r < R; ++r) {
192 for (std::size_t h = 1; h <= nH; ++h) {
194 for (std::size_t r = 0; r < R; ++r) {
200 for (std::size_t h = 1; h <= nH; ++h)
201 for (std::size_t r = 0; r < R; ++r) out.
D(h - 1, r) = D(h, r);