RsBundle  Diff

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];