RsBundle  Diff

Differences From Artifact [d7e36dbc14]:

  • File src/solver.rs — part of check-in [58f8ffe7a1] at 2018-06-26 21:39:59 on branch error-handling — Implement `MasterProblemError` as more specific enum (user: fifr size: 36946)

To Artifact [1f983703ce]:

  • File src/solver.rs — part of check-in [f410ce94ba] at 2018-06-27 07:05:32 on branch error-handling — solver: remove unnecessary `move` from extend subgradient closure (user: fifr size: 36937)

679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
                    }
                    newvars.push((Some(index), lower - value, upper - value, value));
                }
            }
        }

        if !newvars.is_empty() {
            let mut problem = &mut self.problem;
            let minorants = &self.minorants;
            self.master
                .add_vars(
                    &newvars.iter().map(|v| (v.0, v.1, v.2)).collect::<Vec<_>>(),
                    &mut move |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)?;







|




|







679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
                    }
                    newvars.push((Some(index), lower - value, upper - value, value));
                }
            }
        }

        if !newvars.is_empty() {
            let problem = &mut self.problem;
            let minorants = &self.minorants;
            self.master
                .add_vars(
                    &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)?;