Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Changes In Branch result-sender Through [43abfc4c67] Excluding Merge-Ins
This is equivalent to a diff from 9c4fe5cd4e to 43abfc4c67
|
2019-11-22
| ||
| 12:00 | Merge trunk check-in: 9198cc93a8 user: fifr tags: result-sender | |
| 11:52 | Merge error check-in: e0832fff42 user: fifr tags: trunk | |
| 11:22 | Use concrete error types propagating through the master problem layers check-in: 7176bf2280 user: fifr tags: error | |
| 09:24 | problem: make `ResultSender` a trait with implementation `ChannelSender` check-in: 43abfc4c67 user: fifr tags: result-sender | |
| 09:01 | problem: hide result channel in opaque type `ResultSender` check-in: 4d0fdfb346 user: fifr tags: result-sender | |
|
2019-11-20
| ||
| 10:27 | Merge trunk check-in: 021afa4a12 user: fifr tags: async | |
| 10:27 | mcf: use logfile only in debug mode check-in: 9c4fe5cd4e user: fifr tags: trunk | |
|
2019-11-19
| ||
| 08:10 | asyn: remove `cnt_updates` parameter from `show_info` check-in: 985706379b user: fifr tags: trunk | |
Changes to examples/cflp.rs.
| ︙ | |||
27 28 29 30 31 32 33 | 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | - + |
use std::io::Write as _;
use std::sync::Arc;
use env_logger::{self, fmt::Color};
use ordered_float::NotNan;
use threadpool::ThreadPool;
|
| ︙ | |||
141 142 143 144 145 146 147 | 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 | - - - - - - - + - + - + - - - - + - - - - - + |
self.pool = Some(pool)
}
fn stop(&mut self) {
self.pool.take();
}
|
| ︙ |
Changes to examples/quadratic.rs.
| ︙ | |||
23 24 25 26 27 28 29 | 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | - + |
use env_logger::fmt::Color;
use log::{debug, Level};
use rustop::opts;
use std::io::Write;
use std::sync::Arc;
use std::thread;
|
| ︙ | |||
60 61 62 63 64 65 66 | 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 | - - - - - - - + - + - - - - - - + + - - + - + - + |
1
}
fn start(&mut self) {}
fn stop(&mut self) {}
|
| ︙ |
Changes to src/mcf/problem.rs.
| ︙ | |||
12 13 14 15 16 17 18 | 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | - + |
//
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>
//
use crate::mcf;
use crate::problem::{
|
| ︙ | |||
439 440 441 442 443 444 445 | 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 | - + - - - - - - - + - - - - - - + + - - + - + - + |
self.pool = Some(pool);
}
fn stop(&mut self) {
self.pool.take();
}
|
| ︙ |
Changes to src/problem.rs.
| ︙ | |||
17 18 19 20 21 22 23 | 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | - + - - - + + - - - - - - - - - - - - + + + + + + + + + + + + + - - |
//! An asynchronous first-order oracle.
use crate::{Aggregatable, DVector, Minorant, Real};
use crossbeam::channel::Sender;
use std::sync::Arc;
|
| ︙ | |||
156 157 158 159 160 161 162 | 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 | - - - - - - - + - + + |
/// Start the evaluation of the i^th subproblem at the given point.
///
/// The results of the evaluation should be passed to the provided channel.
/// In order to work correctly, the results must contain (an upper bound on)
/// the objective value at $y$ as well as at least one subgradient centered
/// at $y$ eventually.
|
| ︙ |
Changes to src/solver.rs.
| ︙ | |||
19 20 21 22 23 24 25 | 19 20 21 22 23 24 25 26 27 | + + |
pub mod sync;
pub use sync::{DefaultSolver, NoBundleSolver};
pub mod asyn;
mod masterprocess;
mod channels;
|
Changes to src/solver/asyn.rs.
| ︙ | |||
24 25 26 27 28 29 30 31 32 | 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | + - + |
use std::iter::repeat;
use std::sync::Arc;
use std::time::Instant;
use threadpool::ThreadPool;
use crate::{DVector, Real};
use super::channels::{ChannelSender, EvalResult};
use super::masterprocess::{self, MasterConfig, MasterProcess, MasterResponse};
use crate::master::{Builder as MasterBuilder, MasterProblem};
|
| ︙ | |||
438 439 440 441 442 443 444 | 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 | - + |
/// This is actually the time of the last call to `Solver::init`.
start_time: Instant,
}
impl<P, T, W, M> Solver<P, T, W, M>
where
P: FirstOrderProblem,
|
| ︙ | |||
558 559 560 561 562 563 564 | 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 | - + |
));
debug!("Initial problem evaluation");
// We need an initial evaluation of all oracles for the first center.
let y = Arc::new(self.data.cur_y.clone());
for i in 0..m {
self.problem
|
| ︙ | |||
876 877 878 879 880 881 882 | 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 | - + |
.resize(self.problem.num_subproblems(), -Real::infinity());
self.data.cnt_remaining_mins = self.problem.num_subproblems();
// Start evaluation of all subproblems at the new candidate.
let client_tx = self.client_tx.as_ref().ok_or(Error::NotInitialized)?;
for i in 0..self.problem.num_subproblems() {
self.problem
|
| ︙ |
Added src/solver/channels.rs.
|
Changes to src/solver/sync.rs.
| ︙ | |||
23 24 25 26 27 28 29 30 31 | 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | + - + |
use num_traits::Float;
use std::sync::Arc;
use std::time::Instant;
use threadpool::ThreadPool;
use crate::{DVector, Real};
use super::channels::{ChannelSender, EvalResult};
use super::masterprocess::{self, MasterConfig, MasterProcess, MasterResponse};
use crate::master::{Builder as MasterBuilder, MasterProblem};
|
| ︙ | |||
416 417 418 419 420 421 422 | 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 | - + |
/// This is actually the time of the last call to `Solver::init`.
start_time: Instant,
}
impl<P, T, W, M> Solver<P, T, W, M>
where
P: FirstOrderProblem,
|
| ︙ | |||
536 537 538 539 540 541 542 | 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 | - + |
));
debug!("Initial problem evaluation");
// We need an initial evaluation of all oracles for the first center.
let y = Arc::new(self.data.cur_y.clone());
for i in 0..m {
self.problem
|
| ︙ | |||
769 770 771 772 773 774 775 | 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 | - + |
.resize(self.problem.num_subproblems(), -Real::infinity());
self.data.cnt_remaining_mins = self.problem.num_subproblems();
// Start evaluation of all subproblems at the new candidate.
let client_tx = self.client_tx.as_ref().ok_or(Error::NotInitialized)?;
for i in 0..self.problem.num_subproblems() {
self.problem
|
| ︙ |