RsBundle  Diff

Differences From Artifact [e18c9059e9]:

  • File src/solver.rs — part of check-in [5e794600f2] at 2017-03-03 15:41:16 on branch trunk — solver: set center value of newly separated variables correctly. The former implementation only worked with new variables being centered at 0. (user: fifr size: 33324)

To Artifact [2240c2056b]:

  • File src/solver.rs — part of check-in [705a1cf52f] at 2017-03-03 15:46:03 on branch trunk — solver: fix adding new variables to master. (user: fifr size: 33324)

620
621
622
623
624
625
626
627

628
629
630
631
632
633
634
620
621
622
623
624
625
626

627
628
629
630
631
632
633
634







-
+







                }
            }
        }

        if !newvars.is_empty() {
            let mut problem = &mut self.problem;
            let minorants = &self.minorants;
            self.master.add_vars(&newvars.iter().map(|v| (v.1, v.2)).collect::<Vec<_>>(),
            self.master.add_vars(&newvars.iter().map(|v| (v.0, v.1)).collect::<Vec<_>>(),
                                 &mut move |fidx, minidx, vars| {
                                     problem.extend_subgradient(minorants[fidx][minidx].primal.as_ref().unwrap(), vars)
                                         .map(DVector)
                                         .unwrap()
                                 });
            let newn = self.cur_y.len() + newvars.len();
            self.cur_y.extend(newvars.iter().map(|v| v.2));