Changeset 1522
- Timestamp:
- 10/06/08 06:02:11 (2 months ago)
- Files:
-
- trunk/openopt/scikits/openopt/Kernel/BaseProblem.py (modified) (2 diffs)
- trunk/openopt/scikits/openopt/Kernel/Function.py (modified) (1 diff)
- trunk/openopt/scikits/openopt/Kernel/LLAVP.py (modified) (2 diffs)
- trunk/openopt/scikits/openopt/Kernel/LLSP.py (modified) (2 diffs)
- trunk/openopt/scikits/openopt/Kernel/LP.py (modified) (2 diffs)
- trunk/openopt/scikits/openopt/Kernel/LSP.py (modified) (2 diffs)
- trunk/openopt/scikits/openopt/Kernel/NLSP.py (modified) (3 diffs)
- trunk/openopt/scikits/openopt/Kernel/QP.py (modified) (2 diffs)
- trunk/openopt/scikits/openopt/Kernel/ooVar.py (modified) (1 diff)
- trunk/openopt/scikits/openopt/Kernel/runProbSolver.py (modified) (7 diffs)
- trunk/openopt/scikits/openopt/__init__.py (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/openopt/scikits/openopt/Kernel/BaseProblem.py
r1519 r1522 236 236 #TODO: hold it in single place 237 237 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'] 239 239 if sameConstraints: fieldsToAssert+= ['lb', 'ub', 'A', 'Aeq', 'b', 'beq'] 240 240 … … 335 335 if (self.userProvided.c and any(isnan(self.c(self.xf)))) or (self.userProvided.h and any(isnan(self.h(self.xf)))): 336 336 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 337 343 338 344 def __construct_x_from_ooVars__(self): trunk/openopt/scikits/openopt/Kernel/Function.py
r1519 r1522 228 228 229 229 230 class 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 22 22 return r 23 23 24 def llavp2nsp(self, solver ):24 def llavp2nsp(self, solver, **solver_params): 25 25 if hasattr(self,'x0'): p = NSP.NSP(ff, self.x0, df=dff) 26 26 else: p = NSP.NSP(ff, zeros(self.n), df=dff) … … 28 28 self.inspire(p) 29 29 self.iprint = -1 30 # for LLAVP plot is via NLP 31 p.show = self.show 32 p.plot, self.plot = self.plot, 0 30 33 #p.checkdf() 31 34 #p.solver.__optionalDataThatCanBeHandled__ += ['damp', 'X', 'c'] 32 r = p.solve(solver )35 r = p.solve(solver, **solver_params) 33 36 self.xf, self.ff, self.rf = r.xf, r.ff, r.rf 34 37 return r trunk/openopt/scikits/openopt/Kernel/LLSP.py
r1509 r1522 22 22 return r 23 23 24 def llsp2nlp(self, solver, ** kwargs):24 def llsp2nlp(self, solver, **solver_params): 25 25 if hasattr(self,'x0'): p = NLP.NLP(ff, self.x0, df=dff, d2f=d2ff) 26 26 else: p = NLP.NLP(ff, zeros(self.n), df=dff, d2f=d2ff) … … 28 28 self.inspire(p) 29 29 self.iprint = -1 30 # for LLSP plot is via NLP 31 p.show = self.show 32 p.plot, self.plot = self.plot, 0 30 33 #p.checkdf() 31 r = p.solve(solver, show = False)34 r = p.solve(solver, **solver_params) 32 35 self.xf, self.ff, self.rf = r.xf, r.ff, r.rf 33 36 return r trunk/openopt/scikits/openopt/Kernel/LP.py
r1509 r1522 18 18 return dot(self.f, x) 19 19 20 def lp2nlp(self, solver, ** kwargs):20 def lp2nlp(self, solver, **solver_params): 21 21 ff = lambda x: dot(x, self.f) 22 22 dff = lambda x: self.f … … 25 25 self.inspire(p) 26 26 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) 28 33 self.xf, self.ff, self.rf = r.xf, r.ff, r.rf 29 34 return r trunk/openopt/scikits/openopt/Kernel/LSP.py
r1509 r1522 35 35 # r = p.solve(solver, **kwargs) 36 36 # return r 37 def lsp2nlp(self, solver ):37 def lsp2nlp(self, solver, **solver_params): 38 38 #self.solver = getSolverFromStringName(self, solver) 39 39 #self.__prepare__() … … 97 97 p.goal = 'min' 98 98 99 p.iprint = -1 99 self.iprint = -1 100 p.show = False 100 101 101 r = p.solve(solver, show=False)102 r = p.solve(solver, **solver_params) 102 103 #r.ff = ff(r.xf) 103 104 trunk/openopt/scikits/openopt/Kernel/NLSP.py
r1509 r1522 33 33 return norm(atleast_1d(asfarray(fv)), inf) 34 34 35 def nlsp2nlp(self, solver ):35 def nlsp2nlp(self, solver, **solver_params): 36 36 #self.solver = getSolverFromStringName(self, solver) 37 37 #self.__prepare__() … … 97 97 #self.fEnough = self.ftol 98 98 99 p.iprint =-599 p.iprint = -1 100 100 101 101 Multiplier = 1e16 … … 105 105 self.gtol /= Multiplier 106 106 107 r = p.solve(solver, show=False) 107 p.show = False 108 109 r = p.solve(solver, **solver_params) 108 110 109 111 #self.ftol *= Multiplier trunk/openopt/scikits/openopt/Kernel/QP.py
r1509 r1522 25 25 return asfarray(0.5*dot(x, dot(self.H, x)) + dot(self.f, x).sum()).flatten() 26 26 27 def qp2nlp(self, solver ):27 def qp2nlp(self, solver, **solver_params): 28 28 if hasattr(self,'x0'): p = NLP.NLP(ff, self.x0, df=dff, d2f=d2ff) 29 29 else: p = NLP.NLP(ff, zeros(self.n), df=dff, d2f=d2ff) … … 31 31 self.inspire(p) 32 32 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 33 38 #p.checkdf() 34 r = p.solve(solver, show=False)39 r = p.solve(solver, **solver_params) 35 40 self.xf, self.ff, self.rf = r.xf, r.ff, r.rf 36 41 return r trunk/openopt/scikits/openopt/Kernel/ooVar.py
r1519 r1522 11 11 shape = nan 12 12 13 def __init__(self, *args, **kwargs): 13 def __init__(self, name, *args, **kwargs): 14 15 self.name = name 16 14 17 if len(args) > 1: raise OpenOptException('incorrect args number for oovar constructor') 15 18 trunk/openopt/scikits/openopt/Kernel/runProbSolver.py
r1509 r1522 1 1 __docformat__ = "restructuredtext en" 2 2 from time import time, clock 3 from numpy import asfarray, copy, inf, nan, isfinite, ones, ndim, all, atleast_1d, any, isnan, array_equiv 3 from numpy import asfarray, copy, inf, nan, isfinite, ones, ndim, all, atleast_1d, any, isnan, array_equiv, asscalar, asarray 4 4 from setDefaultIterFuncs import stopcase, SMALL_DELTA_X, SMALL_DELTA_F 5 5 from ooCheck import ooCheck … … 48 48 converter = getattr(p, converterName) 49 49 p.solver = getSolverFromStringName(p, solverName) 50 solver_params = {} 50 51 #return converter(solverName, *args, **kwargs) 51 52 else: … … 64 65 for key, value in kwargs.iteritems(): 65 66 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) 67 71 elif hasattr(p, key): 68 72 setattr(p, key, value) … … 177 181 if isConverter: 178 182 # TODO: will R be somewhere used? 179 R = converter(solverName )183 R = converter(solverName, **solver_params) 180 184 else: 181 185 nErr = ooCheck(p) … … 221 225 #p.ff = p.objFuncMultiple2Single(p.ff) 222 226 #if not hasattr(p, 'xf'): p.xf = p.xk 227 223 228 p.xf = p.xf.flatten() 229 p.rf = p.getMaxResidual(p.xf) 224 230 if p.isFeas(p.xf): 225 231 p.isFeasible = True … … 237 243 r.elapsed['solver_time'] = round(100.0*(time() - p.timeStart))/100.0 238 244 r.elapsed['solver_cputime'] = clock() - p.cpuTimeStart 239 # r.TimeElapsed = round(100.0*(time() - p.timeStart))/100.0240 # r.cpuTimeElapsed = clock() - p.cpuTimeStart241 245 242 246 for fn in ('ff', 'istop', 'duals', 'isFeasible', 'msg', 'stopcase', 'iterValues', 'special'): 243 247 if hasattr(p, fn): setattr(r, fn, getattr(p, fn)) 248 244 249 r.xf = copy(p.xf) 250 r.rf = asscalar(asarray(p.rf)) 251 r.ff = asscalar(asarray(r.ff)) 245 252 246 253 r.solverInfo = dict() … … 263 270 r.elapsed['solver_time'] -= r.elapsed['plot_time'] 264 271 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]271 272 272 273 r.evals = p.nEvals trunk/openopt/scikits/openopt/__init__.py
r1437 r1522 5 5 from info import __version__ 6 6 from oo import LP, NLP, NSP, MILP, QP, NLSP, LSP, GLP, LLSP, MMP, LLAVP 7 from Kernel.Function import oofun 7 from Kernel.Function import oofun, oolin 8 from Kernel.ooVar import oovar 8 9 from Kernel.GUI import manage 9 10
