Differences From Artifact [3605d4b83e]:
- File src/solver.rs — part of check-in [3d746e5739] at 2017-03-06 16:58:42 on branch trunk — master: allow moving of existing variables. This changes the master problem API, but the implementation of `boxed` does not yet implement this feature. (user: fifr size: 34724)
To Artifact [ebedc1def0]:
- File src/solver.rs — part of check-in [34ecdf278f] at 2017-03-07 16:52:25 on branch trunk — solver: fix updating of `self.bounds` when adding new variables. (user: fifr size: 34832)
| ︙ | |||
616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 | 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 | + + |
let value = if lower > 0.0 {
lower
} else if upper < 0.0 {
upper
} else {
0.0
};
self.bounds.push((lower, upper));
newvars.push((None, lower - value, upper - value, value));
}
Update::AddVariableValue { lower, upper, value } => {
if lower > upper {
return Err(Error::InvalidBounds(lower, upper));
}
if value < lower || value > upper {
return Err(Error::ViolatedBounds(lower, upper, value));
}
self.bounds.push((lower, upper));
newvars.push((None, lower - value, upper - value, value));
}
Update::MoveVariable { index, value } => {
if index >= self.bounds.len() {
return Err(Error::InvalidVariable(index, self.bounds.len()));
}
let (lower, upper) = self.bounds[index];
|
| ︙ |