* \brief Which variable to select for branching * * \ingroup TaskModelFloatBranch */
| 1679 | * \ingroup TaskModelFloatBranch |
| 1680 | */ |
| 1681 | class FloatVarBranch : public VarBranch<FloatVar> { |
| 1682 | public: |
| 1683 | /// Which variable selection |
| 1684 | enum Select { |
| 1685 | SEL_NONE = 0, ///< First unassigned |
| 1686 | SEL_RND, ///< Random (uniform, for tie breaking) |
| 1687 | SEL_MERIT_MIN, ///< With least merit |
| 1688 | SEL_MERIT_MAX, ///< With highest merit |
| 1689 | SEL_DEGREE_MIN, ///< With smallest degree |
| 1690 | SEL_DEGREE_MAX, ///< With largest degree |
| 1691 | SEL_AFC_MIN, ///< With smallest accumulated failure count |
| 1692 | SEL_AFC_MAX, ///< With largest accumulated failure count |
| 1693 | SEL_ACTION_MIN, ///< With lowest action |
| 1694 | SEL_ACTION_MAX, ///< With highest action |
| 1695 | SEL_CHB_MIN, ///< With lowest CHB Q-score |
| 1696 | SEL_CHB_MAX, ///< With highest CHB Q-score |
| 1697 | SEL_MIN_MIN, ///< With smallest min |
| 1698 | SEL_MIN_MAX, ///< With largest min |
| 1699 | SEL_MAX_MIN, ///< With smallest max |
| 1700 | SEL_MAX_MAX, ///< With largest max |
| 1701 | SEL_SIZE_MIN, ///< With smallest domain size |
| 1702 | SEL_SIZE_MAX, ///< With largest domain size |
| 1703 | SEL_DEGREE_SIZE_MIN, ///< With smallest degree divided by domain size |
| 1704 | SEL_DEGREE_SIZE_MAX, ///< With largest degree divided by domain size |
| 1705 | SEL_AFC_SIZE_MIN, ///< With smallest accumulated failure count divided by domain size |
| 1706 | SEL_AFC_SIZE_MAX, ///< With largest accumulated failure count divided by domain size |
| 1707 | SEL_ACTION_SIZE_MIN, ///< With smallest action divided by domain size |
| 1708 | SEL_ACTION_SIZE_MAX, ///< With largest action divided by domain size |
| 1709 | SEL_CHB_SIZE_MIN, ///< With smallest CHB Q-score divided by domain size |
| 1710 | SEL_CHB_SIZE_MAX ///< With largest CHB Q-score divided by domain size |
| 1711 | }; |
| 1712 | protected: |
| 1713 | /// Which variable to select |
| 1714 | Select s; |
| 1715 | public: |
| 1716 | /// Initialize with strategy SEL_NONE |
| 1717 | FloatVarBranch(void); |
| 1718 | /// Initialize with random number generator \a r |
| 1719 | FloatVarBranch(Rnd r); |
| 1720 | /// Initialize with selection strategy \a s and tie-break limit function \a t |
| 1721 | FloatVarBranch(Select s, BranchTbl t); |
| 1722 | /// Initialize with selection strategy \a s, decay factor \a d, and tie-break limit function \a t |
| 1723 | FloatVarBranch(Select s, double, BranchTbl t); |
| 1724 | /// Initialize with selection strategy \a s, AFC \a a, and tie-break limit function \a t |
| 1725 | FloatVarBranch(Select s, FloatAFC a, BranchTbl t); |
| 1726 | /// Initialize with selection strategy \a s, action \a a, and tie-break limit function \a t |
| 1727 | FloatVarBranch(Select s, FloatAction a, BranchTbl t); |
| 1728 | /// Initialize with selection strategy \a s, CHB \a c, and tie-break limit function \a t |
| 1729 | FloatVarBranch(Select s, FloatCHB c, BranchTbl t); |
| 1730 | /// Initialize with selection strategy \a s, branch merit function \a mf, and tie-break limit function \a t |
| 1731 | FloatVarBranch(Select s, FloatBranchMerit mf, BranchTbl t); |
| 1732 | /// Return selection strategy |
| 1733 | Select select(void) const; |
| 1734 | /// Expand AFC, action, and CHB |
| 1735 | void expand(Home home, const FloatVarArgs& x); |
| 1736 | }; |
| 1737 | |
| 1738 |
no outgoing calls
no test coverage detected