RsBundle  Diff

Differences From Artifact [b94b2f5d16]:

  • File src/solver.rs — part of check-in [80cbe311ac] at 2018-12-12 15:30:58 on branch trunk — Update to 2018 edition (user: fifr size: 36948)

To Artifact [ba7a4b93d6]:

  • File src/solver.rs — part of check-in [32372fda04] at 2018-12-12 15:38:03 on branch trunk — Replace `extern crate` with `use` (user: fifr size: 36996)

18
19
20
21
22
23
24


25
26
27
28
29
30
31
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33







+
+








use crate::{DVector, Real};
use crate::{Evaluation, FirstOrderProblem, HKWeighter, Update};

use crate::master::{BoxedMasterProblem, Error as MasterProblemError, MasterProblem, UnconstrainedMasterProblem};
use crate::master::{CplexMaster, MinimalMaster};

use log::{debug, info, warn};

use std::error::Error;
use std::f64::{INFINITY, NEG_INFINITY};
use std::fmt;
use std::mem::swap;
use std::result::Result;
use std::time::Instant;

690
691
692
693
694
695
696

697

698
699
700
701
702
703
704
692
693
694
695
696
697
698
699

700
701
702
703
704
705
706
707







+
-
+







                    &newvars.iter().map(|v| (v.0, v.1, v.2)).collect::<Vec<_>>(),
                    &mut |fidx, minidx, vars| {
                        problem
                            .extend_subgradient(minorants[fidx][minidx].primal.as_ref().unwrap(), vars)
                            .map(DVector)
                            .map_err(|e| e.into())
                    },
                )
                ).map_err(SolverError::Master)?;
                .map_err(SolverError::Master)?;
            // modify moved variables
            for (index, val) in newvars.iter().filter_map(|v| v.0.map(|i| (i, v.3))) {
                self.cur_y[index] = val;
                self.nxt_y[index] = val;
                self.nxt_d[index] = 0.0;
            }
            // add new variables