示例#1
0
 std::vector<double> ContinuousVariable_Impl::incrementalValues() const {
   DoubleVector result;
   if (m_minimum && m_maximum && (m_increment || m_nSteps)) {
     // empty range
     if (*m_minimum > *m_maximum) { return result; }
     // degenerate range (single point)
     if (equal(*m_minimum,*m_maximum)) {
       result.push_back((*m_minimum + *m_maximum)/2.0);
       return result;
     }
     // otherwise get incremental values
     if (m_increment) {
       for (double value = *m_minimum; lessThanOrEqual(value,*m_maximum); value += *m_increment) {
         result.push_back(value);
       }
     }
     else {
       // m_nSteps
       double inc = (*m_maximum - *m_minimum)/static_cast<double>(*m_nSteps);
       for (double value = *m_minimum; lessThanOrEqual(value,*m_maximum); value += inc) {
         result.push_back(value);
       }
     }
   }
   return result;
 }
示例#2
0
        /*! @brief Return the relative ordering of two Values.
         @param[in] other The Value to be compared with.
         @returns The relative ordering of the two Values. */
        inline bool
        operator <=
            (const Value &  other)
        {
            bool    valid = false;
            bool    result = lessThanOrEqual(other, valid);

            return (valid && result);
        } // operator <=
示例#3
0
 bool ContinuousVariable_Impl::isFeasible(double value) const {
   bool result = true;
   if (m_minimum) { result = result && greaterThanOrEqual(value,*m_minimum); }
   if (m_maximum) { result = result && lessThanOrEqual(value,*m_maximum); }
   return result;
 }