RsBundle  Check-in [1f65b89c9e]

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Overview
Comment:solver: Allow larger bundle sizes when compressing bundles.
Downloads: Tarball | ZIP archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA1: 1f65b89c9eb4f8be7de7d7407fea2ed371308541
User & Date: fifr 2016-09-28 11:28:18.696
Context
2016-09-28
12:23
minorant: Add `Minorant::new`. check-in: 19d05ec52f user: fifr tags: trunk
11:28
solver: Allow larger bundle sizes when compressing bundles. check-in: 1f65b89c9e user: fifr tags: trunk
11:27
solver: Add validity check for parameters. check-in: 4cf9ac6c65 user: fifr tags: trunk
Changes
Unified Diff Ignore Whitespace Patch
Changes to src/bin/test_mcf.rs.
30
31
32
33
34
35
36

37
38
39
40
41
42
43
    let mut args = env::args();
    let program = args.next().unwrap();

    if let Some(filename) = args.next() {
        info!("Reading instance: {}", filename);
        let mmcf = mcf::MMCFProblem::read_mnetgen(&filename).unwrap();
        let mut solver = Solver::new_params(mmcf, SolverParams {

            min_weight: 1e-3,
            max_weight: 100.0,
            ..Default::default()
        }).unwrap();
        solver.terminator = Box::new(StandardTerminator{
            termination_precision: 1e-6
        });







>







30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
    let mut args = env::args();
    let program = args.next().unwrap();

    if let Some(filename) = args.next() {
        info!("Reading instance: {}", filename);
        let mmcf = mcf::MMCFProblem::read_mnetgen(&filename).unwrap();
        let mut solver = Solver::new_params(mmcf, SolverParams {
            max_bundle_size: 2,
            min_weight: 1e-3,
            max_weight: 100.0,
            ..Default::default()
        }).unwrap();
        solver.terminator = Box::new(StandardTerminator{
            termination_precision: 1e-6
        });
Changes to src/solver.rs.
569
570
571
572
573
574
575
576
577

578

579
580
581
582
583
584
585
        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<_>>());

        }
    }

    /// 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);







|
|
>
|
>







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) {
        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);