RsBundle  Diff

Differences From Artifact [ead0953468]:

  • File src/mcf/problem.rs — part of check-in [d7ed56f9b3] at 2017-02-22 16:32:29 on branch trunk — Remove `DVector` from external API. The use of `[Real]` or `Vec<Real>` is sufficient in most cases. (user: fifr size: 10905)

To Artifact [025037c2ac]:

  • File src/mcf/problem.rs — part of check-in [02dee82532] at 2017-11-01 16:10:57 on branch trunk — Add some missing type annotation when calling `sum` (user: fifr size: 10921)

288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
            } else {
                subg = dvec![0.0; self.rhs.len()];
                objective = -try!(self.nets[fidx].objective());
            }

            let sol = try!(self.nets[fidx].get_solution());
            for (i,lhs) in self.lhs.iter().enumerate() {
                subg[i] -= lhs[fidx].iter().map(|elem| elem.val * sol[elem.ind]).sum();
            }

            Ok(SimpleEvaluation {
                objective: objective,
                minorants: vec![(Minorant {
                                    constant: objective,
                                    linear: subg,







|







288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
            } else {
                subg = dvec![0.0; self.rhs.len()];
                objective = -try!(self.nets[fidx].objective());
            }

            let sol = try!(self.nets[fidx].get_solution());
            for (i,lhs) in self.lhs.iter().enumerate() {
                subg[i] -= lhs[fidx].iter().map(|elem| elem.val * sol[elem.ind]).sum::<Real>();
            }

            Ok(SimpleEvaluation {
                objective: objective,
                minorants: vec![(Minorant {
                                    constant: objective,
                                    linear: subg,
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
                objective -= try!(self.nets[i].objective());
                sols.push(try!(self.nets[i].get_solution()));
            }

            let mut subg = self.rhs.clone();
            for (i, lhs) in self.lhs.iter().enumerate() {
                for (fidx, flhs) in lhs.iter().enumerate() {
                    subg[i] -= flhs.iter().map(|elem| elem.val * sols[fidx][elem.ind]).sum();
                }
            }

            Ok(SimpleEvaluation {
                objective: objective,
                minorants: vec![(Minorant {
                                    constant: objective,







|







310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
                objective -= try!(self.nets[i].objective());
                sols.push(try!(self.nets[i].get_solution()));
            }

            let mut subg = self.rhs.clone();
            for (i, lhs) in self.lhs.iter().enumerate() {
                for (fidx, flhs) in lhs.iter().enumerate() {
                    subg[i] -= flhs.iter().map(|elem| elem.val * sols[fidx][elem.ind]).sum::<Real>();
                }
            }

            Ok(SimpleEvaluation {
                objective: objective,
                minorants: vec![(Minorant {
                                    constant: objective,