Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
| Comment: | parallel: add subproblem index to `SubgradientExtender` |
|---|---|
| Downloads: | Tarball | ZIP archive |
| Timelines: | family | ancestors | descendants | both | problem-update |
| Files: | files | file ages | folders |
| SHA1: |
6ca92bc9a1ca5dd53077052ed9b00e11 |
| User & Date: | fifr 2019-07-25 14:07:47.132 |
Context
|
2019-07-25
| ||
| 14:08 | parallel: reexport problem update types check-in: 6d924d1242 user: fifr tags: problem-update | |
| 14:07 | parallel: add subproblem index to `SubgradientExtender` check-in: 6ca92bc9a1 user: fifr tags: problem-update | |
| 13:54 | Merge async check-in: 5f2a3800b8 user: fifr tags: problem-update | |
Changes
Changes to src/master/primalmaster.rs.
| ︙ | ︙ | |||
53 54 55 56 57 58 59 |
sgext: Box<SubgradientExtender<P, E>>,
) -> Result<(), M::Err>
where
E: Into<Box<dyn std::error::Error + Send + Sync>>,
{
let primals = &self.primals;
let mut sgext = sgext;
| | < > > | 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 |
sgext: Box<SubgradientExtender<P, E>>,
) -> Result<(), M::Err>
where
E: Into<Box<dyn std::error::Error + Send + Sync>>,
{
let primals = &self.primals;
let mut sgext = sgext;
self.master.add_vars(&vars, &mut |fidx, minidx, vars| {
sgext(
fidx,
primals[minidx]
.as_ref()
.expect("Extension for non-existing primal requested"),
vars,
)
.map_err(|err| err.into())
})
}
pub fn add_minorant(&mut self, fidx: usize, minorant: Minorant, primal: P) -> Result<(), M::Err> {
let index = self.master.add_minorant(fidx, minorant)?;
|
| ︙ | ︙ |
Changes to src/parallel/problem.rs.
| ︙ | ︙ | |||
55 56 57 58 59 60 61 |
bounds: Vec<(Real, Real)>,
sgext: Box<SubgradientExtender<P, E>>,
},
}
/// The subgradient extender is a callback used to update existing minorants
/// given their associated primal data.
| | | 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 |
bounds: Vec<(Real, Real)>,
sgext: Box<SubgradientExtender<P, E>>,
},
}
/// The subgradient extender is a callback used to update existing minorants
/// given their associated primal data.
pub type SubgradientExtender<P, E> = FnMut(usize, &P, &[usize]) -> Result<DVector, E> + Send;
/// This trait provides information available in the
/// [`FirstOrderProblem::update`] method.
pub trait UpdateState<P> {
/// Whether the last step was a descent step.
fn was_descent(&self) -> bool;
|
| ︙ | ︙ |