RsBundle  Diff

Differences From Artifact [91e00af442]:

  • File src/solver.rs — part of check-in [4cf9ac6c65] at 2016-09-28 11:27:43 on branch trunk — solver: Add validity check for parameters. (user: fifr size: 23283)

To Artifact [647352101b]:

  • File src/solver.rs — part of check-in [1f65b89c9e] at 2016-09-28 11:28:18 on branch trunk — solver: Allow larger bundle sizes when compressing bundles. (user: fifr size: 23388)

569
570
571
572
573
574
575
576
577
578





579
580
581
582
583
584
585
569
570
571
572
573
574
575



576
577
578
579
580
581
582
583
584
585
586
587







-
-
-
+
+
+
+
+







        debug!("  expected={}", self.expected_progress);
        Ok(())
    }


    /// Reduce size of bundle.
    fn compress_bundle(&mut self) {
        if self.master.num_minorants() > 1 {
            let n = self.master.num_minorants();
            self.master.aggregate(0, &(0..n).collect::<Vec<_>>());
        for i in 0..self.problem.num_subproblems() {
            let n = self.master.num_minorants(i);
            if n >= self.params.max_bundle_size {
                self.master.aggregate(0, &(self.params.max_bundle_size-2..n).collect::<Vec<_>>());
            }
        }
    }

    /// Perform a descent step.
    fn descent_step(&mut self) {
        let new_weight = self.weighter.weight(&current_state!(self, Step::Descent), &self.params);
        self.master.set_weight(new_weight);