Clp 1.17.6

- Main Page
- Related Pages
- Modules
- Namespaces
- Classes
- Files

- File List
- File Members

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
OsiChooseVariable.hpp
Go to the documentation of this file.
1 // Copyright (C) 2006, International Business Machines
2 // Corporation and others. All Rights Reserved.
3 // This code is licensed under the terms of the Eclipse Public License (EPL).
4
5 #ifndef OsiChooseVariable_H
6 #define OsiChooseVariable_H
7
8 #include <string>
9 #include <vector>
10
11 #include "CoinWarmStartBasis.hpp"
12 #include "OsiBranchingObject.hpp"
13
14 class OsiSolverInterface;
15 class OsiHotInfo;
16
33 class OsiChooseVariable {
34
35 public:
37 OsiChooseVariable();
38
40 OsiChooseVariable(const OsiSolverInterface *solver);
41
43 OsiChooseVariable(const OsiChooseVariable &);
44
46 OsiChooseVariable &operator=(const OsiChooseVariable &rhs);
47
49 virtual OsiChooseVariable *clone() const;
50
52 virtual ~OsiChooseVariable();
53
58 virtual int setupList(OsiBranchingInformation *info, bool initialize);
72 virtual int chooseVariable(OsiSolverInterface *solver, OsiBranchingInformation *info, bool fixVariables);
74 virtual bool feasibleSolution(const OsiBranchingInformation *info,
75 const double *solution,
76 int numberObjects,
77 const OsiObject **objects);
79 void saveSolution(const OsiSolverInterface *solver);
81 void clearGoodSolution();
83 virtual void updateInformation(const OsiBranchingInformation *info,
84 int branch, OsiHotInfo *hotInfo);
85 #if 1
86 virtual void updateInformation(int whichObject, int branch,
88 double changeInObjective, double changeInValue,
89 int status);
90 #endif
91 inline double goodObjectiveValue() const
93 {
94 return goodObjectiveValue_;
95 }
97 inline double upChange() const
98 {
99 return upChange_;
100 }
102 inline double downChange() const
103 {
104 return downChange_;
105 }
107 inline const double *goodSolution() const
108 {
109 return goodSolution_;
110 }
112 inline int bestObjectIndex() const
113 {
114 return bestObjectIndex_;
115 }
117 inline void setBestObjectIndex(int value)
118 {
119 bestObjectIndex_ = value;
120 }
122 inline int bestWhichWay() const
123 {
124 return bestWhichWay_;
125 }
127 inline void setBestWhichWay(int value)
128 {
129 bestWhichWay_ = value;
130 }
132 inline int firstForcedObjectIndex() const
133 {
134 return firstForcedObjectIndex_;
135 }
137 inline void setFirstForcedObjectIndex(int value)
138 {
139 firstForcedObjectIndex_ = value;
140 }
142 inline int firstForcedWhichWay() const
143 {
144 return firstForcedWhichWay_;
145 }
147 inline void setFirstForcedWhichWay(int value)
148 {
149 firstForcedWhichWay_ = value;
150 }
152 inline int numberUnsatisfied() const
153 {
154 return numberUnsatisfied_;
155 }
157 inline int numberStrong() const
158 {
159 return numberStrong_;
160 }
162 inline void setNumberStrong(int value)
163 {
164 numberStrong_ = value;
165 }
167 inline int numberOnList() const
168 {
169 return numberOnList_;
170 }
172 inline int numberStrongDone() const
173 {
174 return numberStrongDone_;
175 }
177 inline int numberStrongIterations() const
178 {
179 return numberStrongIterations_;
180 }
182 inline int numberStrongFixed() const
183 {
184 return numberStrongFixed_;
185 }
187 inline const int *candidates() const
188 {
189 return list_;
190 }
192 inline bool trustStrongForBound() const
193 {
194 return trustStrongForBound_;
195 }
197 inline void setTrustStrongForBound(bool yesNo)
198 {
199 trustStrongForBound_ = yesNo;
200 }
202 inline bool trustStrongForSolution() const
203 {
204 return trustStrongForSolution_;
205 }
207 inline void setTrustStrongForSolution(bool yesNo)
208 {
209 trustStrongForSolution_ = yesNo;
210 }
212 void setSolver(const OsiSolverInterface *solver);
224 inline int status() const
225 {
226 return status_;
227 }
228 inline void setStatus(int value)
229 {
230 status_ = value;
231 }
232
233 protected:
234 // Data
236 double goodObjectiveValue_;
238 double upChange_;
240 double downChange_;
242 double *goodSolution_;
244 int *list_;
246 double *useful_;
248 const OsiSolverInterface *solver_;
249 /* Status -
250 -1 Node is infeasible
251 0 Normal termination - we have a candidate
252 1 All looks satisfied - no candidate
253 2 We can change the bound on a variable - but we also have a strong branching candidate
254 3 We can change the bound on a variable - but we have a non-strong branching candidate
255 4 We can change the bound on a variable - no other candidates
256 */
257 int status_;
259 int bestObjectIndex_;
261 int bestWhichWay_;
263 int firstForcedObjectIndex_;
265 int firstForcedWhichWay_;
267 int numberUnsatisfied_;
269 int numberStrong_;
271 int numberOnList_;
273 int numberStrongDone_;
275 int numberStrongIterations_;
277 int numberStrongFixed_;
280 bool trustStrongForBound_;
282 bool trustStrongForSolution_;
283 };
284
290 class OsiPseudoCosts {
291 protected:
292 // Data
294 double *upTotalChange_;
296 double *downTotalChange_;
298 int *upNumber_;
300 int *downNumber_;
302 int numberObjects_;
304 int numberBeforeTrusted_;
305
306 private:
307 void gutsOfDelete();
308 void gutsOfCopy(const OsiPseudoCosts &rhs);
309
310 public:
311 OsiPseudoCosts();
312 virtual ~OsiPseudoCosts();
313 OsiPseudoCosts(const OsiPseudoCosts &rhs);
314 OsiPseudoCosts &operator=(const OsiPseudoCosts &rhs);
315
317 inline int numberBeforeTrusted() const
318 {
319 return numberBeforeTrusted_;
320 }
322 inline void setNumberBeforeTrusted(int value)
323 {
324 numberBeforeTrusted_ = value;
325 }
327 void initialize(int n);
329 inline int numberObjects() const
330 {
331 return numberObjects_;
332 }
333
336 inline double *upTotalChange() { return upTotalChange_; }
337 inline const double *upTotalChange() const { return upTotalChange_; }
338
339 inline double *downTotalChange() { return downTotalChange_; }
340 inline const double *downTotalChange() const { return downTotalChange_; }
341
342 inline int *upNumber() { return upNumber_; }
343 inline const int *upNumber() const { return upNumber_; }
344
345 inline int *downNumber() { return downNumber_; }
346 inline const int *downNumber() const { return downNumber_; }
348
350 virtual void updateInformation(const OsiBranchingInformation *info,
351 int branch, OsiHotInfo *hotInfo);
352 #if 1
353 virtual void updateInformation(int whichObject, int branch,
355 double changeInObjective, double changeInValue,
356 int status);
357 #endif
358 };
359
374 class OsiChooseStrong : public OsiChooseVariable {
375
376 public:
378 OsiChooseStrong();
379
381 OsiChooseStrong(const OsiSolverInterface *solver);
382
384 OsiChooseStrong(const OsiChooseStrong &);
385
387 OsiChooseStrong &operator=(const OsiChooseStrong &rhs);
388
390 virtual OsiChooseVariable *clone() const;
391
393 virtual ~OsiChooseStrong();
394
399 virtual int setupList(OsiBranchingInformation *info, bool initialize);
413 virtual int chooseVariable(OsiSolverInterface *solver, OsiBranchingInformation *info, bool fixVariables);
414
421 inline int shadowPriceMode() const
422 {
423 return shadowPriceMode_;
424 }
426 inline void setShadowPriceMode(int value)
427 {
428 shadowPriceMode_ = value;
429 }
430
432 const OsiPseudoCosts &pseudoCosts() const
433 {
434 return pseudoCosts_;
435 }
436
438 OsiPseudoCosts &pseudoCosts()
439 {
440 return pseudoCosts_;
441 }
442
445 inline int numberBeforeTrusted() const
446 {
447 return pseudoCosts_.numberBeforeTrusted();
448 }
449 inline void setNumberBeforeTrusted(int value)
450 {
451 pseudoCosts_.setNumberBeforeTrusted(value);
452 }
453 inline int numberObjects() const
454 {
455 return pseudoCosts_.numberObjects();
456 }
457
458 protected:
471 int doStrongBranching(OsiSolverInterface *solver,
472 OsiBranchingInformation *info,
473 int numberToDo, int returnCriterion);
474
476 void resetResults(int num);
477
478 protected:
484 int shadowPriceMode_;
485
487 OsiPseudoCosts pseudoCosts_;
488
491 OsiHotInfo *results_;
493 int numResults_;
494 };
495
500 class OsiHotInfo {
501
502 public:
504 OsiHotInfo();
505
507 OsiHotInfo(OsiSolverInterface *solver,
508 const OsiBranchingInformation *info,
509 const OsiObject *const *objects,
510 int whichObject);
511
513 OsiHotInfo(const OsiHotInfo &);
514
516 OsiHotInfo &operator=(const OsiHotInfo &rhs);
517
519 virtual OsiHotInfo *clone() const;
520
522 virtual ~OsiHotInfo();
523
527 int updateInformation(const OsiSolverInterface *solver, const OsiBranchingInformation *info,
528 OsiChooseVariable *choose);
530 inline double originalObjectiveValue() const
531 {
532 return originalObjectiveValue_;
533 }
535 inline double upChange() const
536 {
537 assert(branchingObject_->numberBranches() == 2);
538 return changes_[1];
539 }
541 inline double downChange() const
542 {
543 assert(branchingObject_->numberBranches() == 2);
544 return changes_[0];
545 }
547 inline void setUpChange(double value)
548 {
549 assert(branchingObject_->numberBranches() == 2);
550 changes_[1] = value;
551 }
553 inline void setDownChange(double value)
554 {
555 assert(branchingObject_->numberBranches() == 2);
556 changes_[0] = value;
557 }
559 inline double change(int k) const
560 {
561 return changes_[k];
562 }
563
565 inline int upIterationCount() const
566 {
567 assert(branchingObject_->numberBranches() == 2);
568 return iterationCounts_[1];
569 }
571 inline int downIterationCount() const
572 {
573 assert(branchingObject_->numberBranches() == 2);
574 return iterationCounts_[0];
575 }
577 inline int iterationCount(int k) const
578 {
579 return iterationCounts_[k];
580 }
581
583 inline int upStatus() const
584 {
585 assert(branchingObject_->numberBranches() == 2);
586 return statuses_[1];
587 }
589 inline int downStatus() const
590 {
591 assert(branchingObject_->numberBranches() == 2);
592 return statuses_[0];
593 }
595 inline void setUpStatus(int value)
596 {
597 assert(branchingObject_->numberBranches() == 2);
598 statuses_[1] = value;
599 }
601 inline void setDownStatus(int value)
602 {
603 assert(branchingObject_->numberBranches() == 2);
604 statuses_[0] = value;
605 }
607 inline int status(int k) const
608 {
609 return statuses_[k];
610 }
612 inline OsiBranchingObject *branchingObject() const
613 {
614 return branchingObject_;
615 }
616 inline int whichObject() const
617 {
618 return whichObject_;
619 }
620
621 protected:
622 // Data
624 double originalObjectiveValue_;
626 double *changes_;
628 int *iterationCounts_;
635 int *statuses_;
637 OsiBranchingObject *branchingObject_;
639 int whichObject_;
640 };
641
642 #endif
643
644 /* vi: softtabstop=2 shiftwidth=2 expandtab tabstop=2
645 */
OsiChooseStrong::resetResults
void resetResults(int num)
Clear out the results array.
OsiChooseVariable::setupList
virtual int setupList(OsiBranchingInformation *info, bool initialize)
Sets up strong list and clears all if initialize is true.
OsiHotInfo::downIterationCount
int downIterationCount() const
Down iteration count - invalid if n-way.
Definition: OsiChooseVariable.hpp:571
OsiChooseVariable::upChange_
double upChange_
Estimate of up change or change on chosen if n-way.
Definition: OsiChooseVariable.hpp:238
OsiPseudoCosts::setNumberBeforeTrusted
void setNumberBeforeTrusted(int value)
Set number of times before trusted.
Definition: OsiChooseVariable.hpp:322
OsiChooseVariable::setSolver
void setSolver(const OsiSolverInterface *solver)
Set solver and redo arrays.
OsiChooseVariable::goodObjectiveValue_
double goodObjectiveValue_
Objective value for feasible solution.
Definition: OsiChooseVariable.hpp:236
OsiPseudoCosts::numberObjects
int numberObjects() const
Give the number of objects for which pseudo costs are stored.
Definition: OsiChooseVariable.hpp:329
OsiChooseVariable::useful_
double * useful_
Useful array (for sorting etc)
Definition: OsiChooseVariable.hpp:246
OsiChooseVariable::goodSolution_
double * goodSolution_
Good solution - deleted by finalize.
Definition: OsiChooseVariable.hpp:242
OsiPseudoCosts::OsiPseudoCosts
OsiPseudoCosts()
OsiChooseVariable::setTrustStrongForSolution
void setTrustStrongForSolution(bool yesNo)
Set trust results from strong branching for valid solution.
Definition: OsiChooseVariable.hpp:207
OsiChooseVariable::numberStrongFixed
int numberStrongFixed() const
Number of strong branches which changed bounds.
Definition: OsiChooseVariable.hpp:182
OsiChooseVariable::firstForcedObjectIndex
int firstForcedObjectIndex() const
Index of forced object.
Definition: OsiChooseVariable.hpp:132
OsiChooseVariable::firstForcedWhichWay_
int firstForcedWhichWay_
Preferred way of forced object.
Definition: OsiChooseVariable.hpp:265
OsiChooseStrong::chooseVariable
virtual int chooseVariable(OsiSolverInterface *solver, OsiBranchingInformation *info, bool fixVariables)
Choose a variable Returns - -1 Node is infeasible 0 Normal termination - we have a candidate 1 All lo...
OsiPseudoCosts::updateInformation
virtual void updateInformation(const OsiBranchingInformation *info, int branch, OsiHotInfo *hotInfo)
Given a candidate fill in useful information e.g. estimates.
OsiHotInfo::clone
virtual OsiHotInfo * clone() const
Clone.
OsiChooseVariable::numberStrong
int numberStrong() const
Number of objects to choose for strong branching.
Definition: OsiChooseVariable.hpp:157
OsiHotInfo::whichObject_
int whichObject_
Which object on list.
Definition: OsiChooseVariable.hpp:639
OsiPseudoCosts::downTotalChange
const double * downTotalChange() const
Definition: OsiChooseVariable.hpp:340
OsiChooseVariable::numberStrongIterations
int numberStrongIterations() const
Number of strong iterations actually done.
Definition: OsiChooseVariable.hpp:177
OsiChooseStrong::operator=
OsiChooseStrong & operator=(const OsiChooseStrong &rhs)
Assignment operator.
OsiHotInfo::whichObject
int whichObject() const
Definition: OsiChooseVariable.hpp:616
OsiBranchingInformation
Definition: OsiBranchingObject.hpp:414
OsiChooseVariable::setBestObjectIndex
void setBestObjectIndex(int value)
Set index of chosen object.
Definition: OsiChooseVariable.hpp:117
OsiChooseStrong::pseudoCosts
OsiPseudoCosts & pseudoCosts()
Accessor method to pseudo cost object.
Definition: OsiChooseVariable.hpp:438
OsiPseudoCosts::operator=
OsiPseudoCosts & operator=(const OsiPseudoCosts &rhs)
OsiChooseVariable::setNumberStrong
void setNumberStrong(int value)
Set number of objects to choose for strong branching.
Definition: OsiChooseVariable.hpp:162
OsiChooseVariable::candidates
const int * candidates() const
List of candidates.
Definition: OsiChooseVariable.hpp:187
OsiChooseVariable::bestObjectIndex_
int bestObjectIndex_
Index of chosen object.
Definition: OsiChooseVariable.hpp:259
OsiChooseVariable::numberStrongFixed_
int numberStrongFixed_
Number of bound changes due to strong branching.
Definition: OsiChooseVariable.hpp:277
OsiChooseVariable::setStatus
void setStatus(int value)
Definition: OsiChooseVariable.hpp:228
OsiChooseStrong::setNumberBeforeTrusted
void setNumberBeforeTrusted(int value)
Definition: OsiChooseVariable.hpp:449
OsiChooseVariable::numberStrong_
int numberStrong_
Number of objects to choose for strong branching.
Definition: OsiChooseVariable.hpp:269
OsiChooseStrong::results_
OsiHotInfo * results_
The results of the strong branching done on the candidates where the pseudocosts were not sufficient...
Definition: OsiChooseVariable.hpp:491
OsiChooseVariable::list_
int * list_
List of candidates.
Definition: OsiChooseVariable.hpp:244
OsiChooseVariable::downChange_
double downChange_
Estimate of down change or max change on other possibilities if n-way.
Definition: OsiChooseVariable.hpp:240
OsiBranchingObject
Abstract branching object base class.
Definition: OsiBranchingObject.hpp:282
OsiHotInfo::setDownChange
void setDownChange(double value)
Set down change - invalid if n-way.
Definition: OsiChooseVariable.hpp:553
OsiHotInfo::upChange
double upChange() const
Up change - invalid if n-way.
Definition: OsiChooseVariable.hpp:535
OsiChooseVariable::bestWhichWay
int bestWhichWay() const
Preferred way of chosen object.
Definition: OsiChooseVariable.hpp:122
OsiChooseVariable::status
int status() const
Return status - -1 Node is infeasible 0 Normal termination - we have a candidate 1 All looks satisfie...
Definition: OsiChooseVariable.hpp:224
OsiHotInfo::downChange
double downChange() const
Down change - invalid if n-way.
Definition: OsiChooseVariable.hpp:541
OsiHotInfo
This class contains the result of strong branching on a variable When created it stores enough inform...
Definition: OsiChooseVariable.hpp:500
OsiHotInfo::branchingObject
OsiBranchingObject * branchingObject() const
Branching object.
Definition: OsiChooseVariable.hpp:612
OsiChooseVariable::setTrustStrongForBound
void setTrustStrongForBound(bool yesNo)
Set trust results from strong branching for changing bounds.
Definition: OsiChooseVariable.hpp:197
OsiChooseVariable::goodSolution
const double * goodSolution() const
Good solution - deleted by finalize.
Definition: OsiChooseVariable.hpp:107
OsiChooseVariable::trustStrongForSolution_
bool trustStrongForSolution_
Trust results from strong branching for valid solution.
Definition: OsiChooseVariable.hpp:282
OsiChooseVariable::solver_
const OsiSolverInterface * solver_
Pointer to solver.
Definition: OsiChooseVariable.hpp:248
OsiPseudoCosts::upNumber_
int * upNumber_
Number of times up.
Definition: OsiChooseVariable.hpp:298
OsiChooseVariable::setBestWhichWay
void setBestWhichWay(int value)
Set preferred way of chosen object.
Definition: OsiChooseVariable.hpp:127
OsiChooseVariable::feasibleSolution
virtual bool feasibleSolution(const OsiBranchingInformation *info, const double *solution, int numberObjects, const OsiObject **objects)
Returns true if solution looks feasible against given objects.
OsiChooseVariable::clearGoodSolution
void clearGoodSolution()
Clears out good solution after use.
OsiSolverInterface
Abstract Base Class for describing an interface to a solver.
Definition: OsiSolverInterface.hpp:61
OsiChooseVariable::numberUnsatisfied
int numberUnsatisfied() const
Get the number of objects unsatisfied at this node - accurate on first pass.
Definition: OsiChooseVariable.hpp:152
OsiChooseStrong::OsiChooseStrong
OsiChooseStrong()
Default Constructor.
OsiHotInfo::upIterationCount
int upIterationCount() const
Up iteration count - invalid if n-way.
Definition: OsiChooseVariable.hpp:565
OsiHotInfo::setDownStatus
void setDownStatus(int value)
Set down status - invalid if n-way.
Definition: OsiChooseVariable.hpp:601
OsiChooseStrong::setShadowPriceMode
void setShadowPriceMode(int value)
Set Shadow price mode.
Definition: OsiChooseVariable.hpp:426
OsiChooseVariable::firstForcedWhichWay
int firstForcedWhichWay() const
Preferred way of forced object.
Definition: OsiChooseVariable.hpp:142
OsiPseudoCosts::initialize
void initialize(int n)
Initialize the pseudocosts with n entries.
OsiHotInfo::~OsiHotInfo
virtual ~OsiHotInfo()
Destructor.
OsiHotInfo::branchingObject_
OsiBranchingObject * branchingObject_
Branching object.
Definition: OsiChooseVariable.hpp:637
OsiPseudoCosts::gutsOfCopy
void gutsOfCopy(const OsiPseudoCosts &rhs)
OsiChooseVariable::numberStrongDone_
int numberStrongDone_
Number of strong branches actually done.
Definition: OsiChooseVariable.hpp:273
OsiChooseVariable::~OsiChooseVariable
virtual ~OsiChooseVariable()
Destructor.
OsiPseudoCosts::downTotalChange_
double * downTotalChange_
Total of all changes down.
Definition: OsiChooseVariable.hpp:296
OsiPseudoCosts::upTotalChange_
double * upTotalChange_
Total of all changes up.
Definition: OsiChooseVariable.hpp:294
OsiChooseVariable::upChange
double upChange() const
Estimate of up change or change on chosen if n-way.
Definition: OsiChooseVariable.hpp:97
OsiChooseStrong::doStrongBranching
int doStrongBranching(OsiSolverInterface *solver, OsiBranchingInformation *info, int numberToDo, int returnCriterion)
This is a utility function which does strong branching on a list of objects and stores the results in...
OsiChooseVariable::status_
int status_
Definition: OsiChooseVariable.hpp:257
OsiChooseStrong::clone
virtual OsiChooseVariable * clone() const
Clone.
OsiChooseVariable::setFirstForcedObjectIndex
void setFirstForcedObjectIndex(int value)
Set index of forced object.
Definition: OsiChooseVariable.hpp:137
OsiChooseVariable::chooseVariable
virtual int chooseVariable(OsiSolverInterface *solver, OsiBranchingInformation *info, bool fixVariables)
Choose a variable Returns - -1 Node is infeasible 0 Normal termination - we have a candidate 1 All lo...
OsiChooseStrong::shadowPriceMode_
int shadowPriceMode_
Pseudo Shadow Price mode 0 - off 1 - use and multiply by strong info 2 - use.
Definition: OsiChooseVariable.hpp:484
OsiHotInfo::originalObjectiveValue
double originalObjectiveValue() const
Original objective value.
Definition: OsiChooseVariable.hpp:530
OsiHotInfo::setUpStatus
void setUpStatus(int value)
Set up status - invalid if n-way.
Definition: OsiChooseVariable.hpp:595
OsiPseudoCosts::numberBeforeTrusted_
int numberBeforeTrusted_
Number before we trust.
Definition: OsiChooseVariable.hpp:304
OsiChooseVariable::OsiChooseVariable
OsiChooseVariable()
Default Constructor.
OsiPseudoCosts::numberObjects_
int numberObjects_
Number of objects (could be found from solver)
Definition: OsiChooseVariable.hpp:302
OsiPseudoCosts
This class is the placeholder for the pseudocosts used by OsiChooseStrong.
Definition: OsiChooseVariable.hpp:290
OsiHotInfo::originalObjectiveValue_
double originalObjectiveValue_
Original objective value.
Definition: OsiChooseVariable.hpp:624
OsiHotInfo::change
double change(int k) const
Change on way k.
Definition: OsiChooseVariable.hpp:559
OsiChooseStrong::numberBeforeTrusted
int numberBeforeTrusted() const
A feww pass-through methods to access members of pseudoCosts_ as if they were members of OsiChooseStr...
Definition: OsiChooseVariable.hpp:445
OsiPseudoCosts::downNumber
const int * downNumber() const
Definition: OsiChooseVariable.hpp:346
OsiChooseStrong::pseudoCosts_
OsiPseudoCosts pseudoCosts_
The pseudo costs for the chooser.
Definition: OsiChooseVariable.hpp:487
OsiChooseVariable::operator=
OsiChooseVariable & operator=(const OsiChooseVariable &rhs)
Assignment operator.
OsiPseudoCosts::upNumber
const int * upNumber() const
Definition: OsiChooseVariable.hpp:343
OsiPseudoCosts::~OsiPseudoCosts
virtual ~OsiPseudoCosts()
OsiPseudoCosts::downNumber_
int * downNumber_
Number of times down.
Definition: OsiChooseVariable.hpp:300
OsiChooseStrong::numberObjects
int numberObjects() const
Definition: OsiChooseVariable.hpp:453
OsiChooseVariable::updateInformation
virtual void updateInformation(const OsiBranchingInformation *info, int branch, OsiHotInfo *hotInfo)
Given a candidate fill in useful information e.g. estimates.
OsiChooseVariable::trustStrongForBound_
bool trustStrongForBound_
List of unsatisfied objects - first numberOnList_ for strong branching Trust results from strong bran...
Definition: OsiChooseVariable.hpp:280
OsiPseudoCosts::downTotalChange
double * downTotalChange()
Definition: OsiChooseVariable.hpp:339
OsiChooseVariable::numberStrongIterations_
int numberStrongIterations_
Number of strong iterations actually done.
Definition: OsiChooseVariable.hpp:275
OsiHotInfo::statuses_
int * statuses_
Status -1 - not done 0 - feasible and finished 1 - infeasible 2 - not finished.
Definition: OsiChooseVariable.hpp:635
OsiHotInfo::iterationCounts_
int * iterationCounts_
Iteration counts.
Definition: OsiChooseVariable.hpp:628
OsiHotInfo::changes_
double * changes_
Objective changes.
Definition: OsiChooseVariable.hpp:626
OsiPseudoCosts::upTotalChange
double * upTotalChange()
Definition: OsiChooseVariable.hpp:336
OsiHotInfo::status
int status(int k) const
Status on way k.
Definition: OsiChooseVariable.hpp:607
OsiChooseVariable::numberStrongDone
int numberStrongDone() const
Number of strong branches actually done.
Definition: OsiChooseVariable.hpp:172
OsiHotInfo::downStatus
int downStatus() const
Down status - invalid if n-way.
Definition: OsiChooseVariable.hpp:589
OsiPseudoCosts::numberBeforeTrusted
int numberBeforeTrusted() const
Number of times before trusted.
Definition: OsiChooseVariable.hpp:317
OsiChooseVariable::clone
virtual OsiChooseVariable * clone() const
Clone.
OsiChooseStrong::pseudoCosts
const OsiPseudoCosts & pseudoCosts() const
Accessor method to pseudo cost object.
Definition: OsiChooseVariable.hpp:432
OsiChooseVariable::trustStrongForSolution
bool trustStrongForSolution() const
Trust results from strong branching for valid solution.
Definition: OsiChooseVariable.hpp:202
OsiChooseVariable::bestWhichWay_
int bestWhichWay_
Preferred way of chosen object.
Definition: OsiChooseVariable.hpp:261
OsiHotInfo::operator=
OsiHotInfo & operator=(const OsiHotInfo &rhs)
Assignment operator.
OsiChooseStrong::numResults_
int numResults_
The number of OsiHotInfo objetcs that contain information.
Definition: OsiChooseVariable.hpp:493
OsiChooseStrong::setupList
virtual int setupList(OsiBranchingInformation *info, bool initialize)
Sets up strong list and clears all if initialize is true.
OsiChooseVariable::numberUnsatisfied_
int numberUnsatisfied_
The number of objects unsatisfied at this node.
Definition: OsiChooseVariable.hpp:267
OsiPseudoCosts::gutsOfDelete
void gutsOfDelete()
CoinWarmStartBasis.hpp
OsiChooseVariable
This class chooses a variable to branch on.
Definition: OsiChooseVariable.hpp:33
OsiBranchingObject.hpp
OsiChooseVariable::numberOnList
int numberOnList() const
Number left on strong list.
Definition: OsiChooseVariable.hpp:167
OsiChooseVariable::numberOnList_
int numberOnList_
Number left on strong list.
Definition: OsiChooseVariable.hpp:271
OsiHotInfo::OsiHotInfo
OsiHotInfo()
Default Constructor.
OsiChooseVariable::bestObjectIndex
int bestObjectIndex() const
Index of chosen object.
Definition: OsiChooseVariable.hpp:112
OsiPseudoCosts::upNumber
int * upNumber()
Definition: OsiChooseVariable.hpp:342
OsiHotInfo::updateInformation
int updateInformation(const OsiSolverInterface *solver, const OsiBranchingInformation *info, OsiChooseVariable *choose)
Fill in useful information after strong branch.
OsiObject
Abstract base class for `objects&#39;.
Definition: OsiBranchingObject.hpp:56
OsiChooseVariable::firstForcedObjectIndex_
int firstForcedObjectIndex_
Index of forced object.
Definition: OsiChooseVariable.hpp:263
OsiHotInfo::upStatus
int upStatus() const
Up status - invalid if n-way.
Definition: OsiChooseVariable.hpp:583
OsiBranchingObject::numberBranches
int numberBranches() const
The number of branch arms created for this branching object.
Definition: OsiBranchingObject.hpp:304
OsiChooseStrong::shadowPriceMode
int shadowPriceMode() const
Pseudo Shadow Price mode 0 - off 1 - use if no strong info 2 - use if strong not trusted 3 - use even...
Definition: OsiChooseVariable.hpp:421
OsiChooseVariable::goodObjectiveValue
double goodObjectiveValue() const
Objective value for feasible solution.
Definition: OsiChooseVariable.hpp:92
OsiHotInfo::iterationCount
int iterationCount(int k) const
Iteration count on way k.
Definition: OsiChooseVariable.hpp:577
OsiHotInfo::setUpChange
void setUpChange(double value)
Set up change - invalid if n-way.
Definition: OsiChooseVariable.hpp:547
OsiChooseVariable::downChange
double downChange() const
Estimate of down change or max change on other possibilities if n-way.
Definition: OsiChooseVariable.hpp:102
OsiChooseVariable::saveSolution
void saveSolution(const OsiSolverInterface *solver)
Saves a good solution.
OsiChooseStrong
This class chooses a variable to branch on.
Definition: OsiChooseVariable.hpp:374
OsiPseudoCosts::downNumber
int * downNumber()
Definition: OsiChooseVariable.hpp:345
OsiChooseVariable::setFirstForcedWhichWay
void setFirstForcedWhichWay(int value)
Set preferred way of forced object.
Definition: OsiChooseVariable.hpp:147
OsiPseudoCosts::upTotalChange
const double * upTotalChange() const
Definition: OsiChooseVariable.hpp:337
OsiChooseStrong::~OsiChooseStrong
virtual ~OsiChooseStrong()
Destructor.
OsiChooseVariable::trustStrongForBound
bool trustStrongForBound() const
Trust results from strong branching for changing bounds.
Definition: OsiChooseVariable.hpp:192