Changeset 1052

Show
Ignore:
Timestamp:
06/23/08 08:38:00 (2 months ago)
Author:
dmitrey.kroshko
Message:

minor changes for ralg + (init) implementation of Function class

Files:

Legend:

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

    r1045 r1052  
    55 
    66from oo import LP, NLP, NSP, MILP, QP, NLSP, LSP, GLP, LLSP,  MMP 
     7from Kernel.Function import _f, _c, _h 
    78from info import __version__ 
    89#__all__ = filter(lambda s:not s.startswith('_'),dir()) 
  • trunk/openopt/scikits/openopt/solvers/UkrOpt/ralg_oo.py

    r1049 r1052  
    1 from numpy import diag, ones, inf, any, copy, zeros, dot, where, all, tile, sum, nan, isfinite, float64 
     1from numpy import diag, ones, inf, any, copy, zeros, dot, where, all, tile, sum, nan, isfinite, float64, isnan 
    22from numpy.linalg import norm 
    33from scikits.openopt.Kernel.BaseAlg import * 
     
    117117                break 
    118118 
    119             iterPoint = newPoint 
     119            iterPoint, optimIterPoint = newPoint, oldPoint 
    120120            x = iterPoint.x 
    121121 
     
    140140 
    141141                        if PrevPoint.betterThan(newPoint) or newPoint.f() > PrevPoint.f() or abs(newPoint.f() - iterPoint.f()) < 15 * p.ftol or p.norm(newPoint.x - iterPoint.x) < 15 * p.xtol: 
    142                             iterPoint, hs = PrevPoint, hs_prev 
     142                            iterPoint, optimIterPoint, hs = PrevPoint, p.point(PrevPoint.x), hs_prev 
    143143                            break 
    144144 
     
    151151 
    152152            x = iterPoint.x.copy() 
    153             fk,  xk,  rk = iterPoint.f(),  x.copy(),  iterPoint.mr() 
    154153 
    155154            if ls <= 0: hs *= q1 
     
    202201                #hs = max(p.norm(xPrevIter - x), hsmin) 
    203202 
    204             p.iterfcn(xk, fk, rk
     203            p.iterfcn(iterPoint
    205204 
    206205            s2 = 0 
     
    224223 
    225224            if p.istop: 
     225                p.iterfcn(optimIterPoint) 
    226226                return 
    227227 
     
    236236 
    237237    def __getRalgDirection__(self, point): 
     238        # TODO: what if df and/or dmr has some NaNs? 
    238239        maxRes = point.mr() 
    239240        if maxRes > point.p.contol: 
     
    245246        else: 
    246247            d = point.df() 
     248            if any(isnan(d)) and maxRes>0: # comparison to 0, not contol 
     249                d = point.dmr() 
    247250        return d 
    248251