Changeset 1158

Show
Ignore:
Timestamp:
07/23/08 15:18:03 (4 months ago)
Author:
dmitrey.kroshko
Message:

some changes related to handling NaNs? (especially by ralg)

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/openopt/scikits/openopt/Kernel/Point.py

    r1110 r1158  
    11# created by Dmitrey 
    2 from numpy import copy, isnan, array, argmax, abs, zeros, any 
     2from numpy import copy, isnan, array, argmax, abs, zeros, any, isfinite 
    33__docformat__ = "restructuredtext en" 
    44empty_arr = array(()) 
     
    168168            selfF_is_NaN = isnan(self.f()) 
    169169 
    170             if not oldPointF_is_NaN: # f defined in oldPoint 
    171                 if not selfF_is_NaN: return self.f() < oldPoint.f() 
    172                 else: return False 
    173             else: # f is NOT defined in oldPoint 
    174                 if selfF_is_NaN: return self.mr() < oldPointResidual 
    175                 else: return True 
     170            if not oldPointF_is_NaN: # f(oldPoint) is not NaN 
     171                if not selfF_is_NaN: # f(newPoint) is not NaN 
     172                    return self.f() < oldPoint.f() 
     173                else: # f(newPoint) is NaN 
     174                    return False 
     175            else: # f(oldPoint) is NaN 
     176                if selfF_is_NaN: # f(newPoint) is NaN 
     177                    return self.mr() < oldPointResidual 
     178                else: # f(newPoint) is not NaN 
     179                    return True 
  • trunk/openopt/scikits/openopt/Kernel/setDefaultIterFuncs.py

    r1091 r1158  
    6666    if p.iter == 0: return False 
    6767    #r = False if p.norm(p.fk - p.f_prev) > p.ftol else True 
    68     if  p.norm(p.iterValues.f[-1] - p.iterValues.f[-2]) >= p.ftol: # or (p.iterValues.r[-1] > p.contol and p.iterValues.r[-1] - p.iterValues.r[-2] < p.contol): 
     68    if  isnan(p.iterValues.f[-1]) or isnan(p.iterValues.f[-2]) or p.norm(p.iterValues.f[-1] - p.iterValues.f[-2]) >= p.ftol: # or (p.iterValues.r[-1] > p.contol and p.iterValues.r[-1] - p.iterValues.r[-2] < p.contol): 
    6969            return False 
    7070    else: return (True, '|| F[k] - F[k-1] || < ftol') 
  • trunk/openopt/scikits/openopt/solvers/UkrOpt/ralg_oo.py

    r1115 r1158  
    240240        # TODO: what if df and/or dmr has some NaNs? 
    241241        maxRes = point.mr() 
    242         if maxRes > point.p.contol: 
     242 
     243        if maxRes > point.p.contol or not isfinite(point.f()): 
    243244            dmr = point.dmr() 
    244245            if self.S == 0: