Changeset 1522

Show
Ignore:
Timestamp:
10/06/08 06:02:11 (2 months ago)
Author:
dmitrey.kroshko
Message:

some changes for converters + some more code for oovar + (init) oolin implementation

Files:

Legend:

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

    r1519 r1522  
    236236        #TODO: hold it in single place 
    237237 
    238         fieldsToAssert = ['userProvided', 'contol', 'xtol', 'ftol', 'gtol', 'iprint', 'plot', 'maxIter', 'maxTime', 'maxCPUTime','fEnough', 'goal', 'color', 'debug', 'maxFunEvals', 'xlabel'] 
     238        fieldsToAssert = ['userProvided', 'contol', 'xtol', 'ftol', 'gtol', 'iprint', 'maxIter', 'maxTime', 'maxCPUTime','fEnough', 'goal', 'color', 'debug', 'maxFunEvals', 'xlabel'] 
    239239        if sameConstraints: fieldsToAssert+= ['lb', 'ub', 'A', 'Aeq', 'b', 'beq'] 
    240240 
     
    335335        if (self.userProvided.c and any(isnan(self.c(self.xf)))) or (self.userProvided.h and any(isnan(self.h(self.xf)))): 
    336336            if self.iprint >= -1: self.warn('some non-linear constraints are equal to NaN') 
     337        if hasattr(self, 'oovars') and len(self.oovars)>0: 
     338            xf, k = {}, 0 
     339            for var in self.oovars: 
     340                xf[var.name] = self.xf[k:k+var.size] 
     341                k += var.size 
     342            self.xf = xf 
    337343 
    338344    def __construct_x_from_ooVars__(self): 
  • trunk/openopt/scikits/openopt/Kernel/Function.py

    r1519 r1522  
    228228 
    229229 
     230class oolin(oofun): 
     231    def __init__(self, vector_like, *args, **kwargs): 
     232        # TODO: handle FIXED variables here 
     233        vector = array(vector_like, float) 
     234        oofun.__init__(self, lambda *x: dot(vector, asfarray(x)), *args, **kwargs) 
     235        self.d = lambda *x: vector.copy() 
     236 
  • trunk/openopt/scikits/openopt/Kernel/LLAVP.py

    r1509 r1522  
    2222        return r 
    2323 
    24     def llavp2nsp(self, solver): 
     24    def llavp2nsp(self, solver, **solver_params): 
    2525        if hasattr(self,'x0'): p = NSP.NSP(ff, self.x0, df=dff) 
    2626        else: p = NSP.NSP(ff, zeros(self.n), df=dff) 
     
    2828        self.inspire(p) 
    2929        self.iprint = -1 
     30        # for LLAVP plot is via NLP 
     31        p.show = self.show 
     32        p.plot, self.plot = self.plot, 0 
    3033        #p.checkdf() 
    3134        #p.solver.__optionalDataThatCanBeHandled__ += ['damp', 'X', 'c'] 
    32         r = p.solve(solver
     35        r = p.solve(solver, **solver_params
    3336        self.xf, self.ff, self.rf = r.xf, r.ff, r.rf 
    3437        return r 
  • trunk/openopt/scikits/openopt/Kernel/LLSP.py

    r1509 r1522  
    2222        return r 
    2323 
    24     def llsp2nlp(self, solver, **kwargs): 
     24    def llsp2nlp(self, solver, **solver_params): 
    2525        if hasattr(self,'x0'): p = NLP.NLP(ff, self.x0, df=dff, d2f=d2ff) 
    2626        else: p = NLP.NLP(ff, zeros(self.n), df=dff, d2f=d2ff) 
     
    2828        self.inspire(p) 
    2929        self.iprint = -1 
     30        # for LLSP plot is via NLP 
     31        p.show = self.show 
     32        p.plot, self.plot = self.plot, 0 
    3033        #p.checkdf() 
    31         r = p.solve(solver, show = False
     34        r = p.solve(solver, **solver_params
    3235        self.xf, self.ff, self.rf = r.xf, r.ff, r.rf 
    3336        return r 
  • trunk/openopt/scikits/openopt/Kernel/LP.py

    r1509 r1522  
    1818        return dot(self.f, x) 
    1919 
    20     def lp2nlp(self, solver, **kwargs): 
     20    def lp2nlp(self, solver, **solver_params): 
    2121        ff = lambda x: dot(x, self.f) 
    2222        dff = lambda x: self.f 
     
    2525        self.inspire(p) 
    2626        self.iprint = -1 
    27         r = p.solve(solver, show=False) 
     27 
     28        # for LP plot is via NLP 
     29        p.show = self.show 
     30        p.plot, self.plot = self.plot, 0 
     31 
     32        r = p.solve(solver, **solver_params) 
    2833        self.xf, self.ff, self.rf = r.xf, r.ff, r.rf 
    2934        return r 
  • trunk/openopt/scikits/openopt/Kernel/LSP.py

    r1509 r1522  
    3535#        r = p.solve(solver, **kwargs) 
    3636#        return r 
    37     def lsp2nlp(self, solver): 
     37    def lsp2nlp(self, solver, **solver_params): 
    3838        #self.solver = getSolverFromStringName(self, solver) 
    3939        #self.__prepare__() 
     
    9797        p.goal = 'min' 
    9898 
    99         p.iprint = -1 
     99        self.iprint = -1 
     100        p.show = False 
    100101 
    101         r = p.solve(solver, show=False
     102        r = p.solve(solver, **solver_params
    102103        #r.ff = ff(r.xf) 
    103104 
  • trunk/openopt/scikits/openopt/Kernel/NLSP.py

    r1509 r1522  
    3333        return norm(atleast_1d(asfarray(fv)), inf) 
    3434 
    35     def nlsp2nlp(self, solver): 
     35    def nlsp2nlp(self, solver, **solver_params): 
    3636        #self.solver = getSolverFromStringName(self, solver) 
    3737        #self.__prepare__() 
     
    9797        #self.fEnough = self.ftol 
    9898 
    99         p.iprint=-5 
     99        p.iprint = -1 
    100100 
    101101        Multiplier = 1e16 
     
    105105        self.gtol /= Multiplier 
    106106 
    107         r = p.solve(solver, show=False) 
     107        p.show = False 
     108 
     109        r = p.solve(solver, **solver_params) 
    108110 
    109111        #self.ftol *= Multiplier 
  • trunk/openopt/scikits/openopt/Kernel/QP.py

    r1509 r1522  
    2525        return asfarray(0.5*dot(x, dot(self.H, x)) + dot(self.f, x).sum()).flatten() 
    2626 
    27     def qp2nlp(self, solver): 
     27    def qp2nlp(self, solver, **solver_params): 
    2828        if hasattr(self,'x0'): p = NLP.NLP(ff, self.x0, df=dff, d2f=d2ff) 
    2929        else: p = NLP.NLP(ff, zeros(self.n), df=dff, d2f=d2ff) 
     
    3131        self.inspire(p) 
    3232        self.iprint = -1 
     33 
     34        # for QP plot is via NLP 
     35        p.show = self.show 
     36        p.plot, self.plot = self.plot, 0 
     37 
    3338        #p.checkdf() 
    34         r = p.solve(solver, show=False
     39        r = p.solve(solver, **solver_params
    3540        self.xf, self.ff, self.rf = r.xf, r.ff, r.rf 
    3641        return r 
  • trunk/openopt/scikits/openopt/Kernel/ooVar.py

    r1519 r1522  
    1111    shape = nan 
    1212 
    13     def __init__(self, *args, **kwargs): 
     13    def __init__(self, name, *args, **kwargs): 
     14 
     15        self.name = name 
     16 
    1417        if len(args) > 1: raise OpenOptException('incorrect args number for oovar constructor') 
    1518 
  • trunk/openopt/scikits/openopt/Kernel/runProbSolver.py

    r1509 r1522  
    11__docformat__ = "restructuredtext en" 
    22from time import time, clock 
    3 from numpy import asfarray, copy, inf, nan, isfinite, ones, ndim, all, atleast_1d, any, isnan, array_equiv 
     3from numpy import asfarray, copy, inf, nan, isfinite, ones, ndim, all, atleast_1d, any, isnan, array_equiv, asscalar, asarray 
    44from setDefaultIterFuncs import stopcase,  SMALL_DELTA_X,  SMALL_DELTA_F 
    55from ooCheck import ooCheck 
     
    4848        converter = getattr(p, converterName) 
    4949        p.solver = getSolverFromStringName(p, solverName) 
     50        solver_params = {} 
    5051        #return converter(solverName, *args, **kwargs) 
    5152    else: 
     
    6465    for key, value in kwargs.iteritems(): 
    6566        if hasattr(p.solver, key): 
    66             setattr(p.solver, key, value) 
     67            if isConverter: 
     68                solver_params[key] = value 
     69            else: 
     70                setattr(p.solver, key, value) 
    6771        elif hasattr(p, key): 
    6872            setattr(p, key, value) 
     
    177181        if isConverter: 
    178182            # TODO: will R be somewhere used? 
    179             R = converter(solverName
     183            R = converter(solverName, **solver_params
    180184        else: 
    181185            nErr = ooCheck(p) 
     
    221225    #p.ff = p.objFuncMultiple2Single(p.ff) 
    222226    #if not hasattr(p, 'xf'): p.xf = p.xk 
     227 
    223228    p.xf = p.xf.flatten() 
     229    p.rf = p.getMaxResidual(p.xf) 
    224230    if p.isFeas(p.xf): 
    225231        p.isFeasible = True 
     
    237243    r.elapsed['solver_time'] = round(100.0*(time() - p.timeStart))/100.0 
    238244    r.elapsed['solver_cputime'] = clock() - p.cpuTimeStart 
    239 #    r.TimeElapsed = round(100.0*(time() - p.timeStart))/100.0 
    240 #    r.cpuTimeElapsed = clock() - p.cpuTimeStart 
    241245 
    242246    for fn in ('ff', 'istop', 'duals', 'isFeasible', 'msg', 'stopcase', 'iterValues',  'special'): 
    243247        if hasattr(p, fn):  setattr(r, fn, getattr(p, fn)) 
     248 
    244249    r.xf = copy(p.xf) 
     250    r.rf = asscalar(asarray(p.rf)) 
     251    r.ff = asscalar(asarray(r.ff)) 
    245252 
    246253    r.solverInfo = dict() 
     
    263270    r.elapsed['solver_time'] -= r.elapsed['plot_time'] 
    264271    r.elapsed['solver_cputime'] -= r.elapsed['plot_cputime'] 
    265  
    266  
    267     r.rf = p.getMaxResidual(p.xf) 
    268  
    269     r.ff = asfarray(r.ff).flatten()[0] 
    270     r.rf = asfarray(r.rf).flatten()[0] 
    271272 
    272273    r.evals = p.nEvals 
  • trunk/openopt/scikits/openopt/__init__.py

    r1437 r1522  
    55from info import __version__ 
    66from oo import LP, NLP, NSP, MILP, QP, NLSP, LSP, GLP, LLSP,  MMP, LLAVP 
    7 from Kernel.Function import oofun 
     7from Kernel.Function import oofun, oolin 
     8from Kernel.ooVar import oovar 
    89from Kernel.GUI import manage 
    910