Changeset 1096
- Timestamp:
- 07/04/08 09:23:23 (2 months ago)
- Files:
-
- trunk/openopt/scikits/openopt/Kernel/LLSP.py (modified) (5 diffs)
- trunk/openopt/scikits/openopt/oo.py (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/openopt/scikits/openopt/Kernel/LLSP.py
r1095 r1096 6 6 7 7 class LLSP(MatrixProblem): 8 __optionalData__ = ['damp', ' xd', 'c']8 __optionalData__ = ['damp', 'X', 'c'] 9 9 def __init__(self, *args, **kwargs): 10 10 if len(args) > 2: self.err('incorrect args number for LLSP constructor, must be 0..2 + (optionaly) some kwargs') … … 17 17 def objFunc(self, x): 18 18 r = norm(dot(self.C, x) - self.d) ** 2 / 2.0 19 if not self.damp is None: r += self.damp * norm(x-self.xd)**2 / 2.0 19 if not self.damp is None: 20 r += self.damp * norm(x-self.X)**2 / 2.0 20 21 if any(isfinite(self.f)): r += dot(self.f, x) 21 22 return r … … 29 30 r = p.solve(solver, **kwargs) 30 31 return r 32 33 def __prepare__(self): 34 MatrixProblem.__prepare__(self) 35 if not self.damp is None and not any(isfinite(self.X)): 36 self.X = zeros(self.n) 37 31 38 32 39 … … 44 51 prob.ub = inf * ones(prob.n) 45 52 if not kwargs.has_key('damp'): kwargs['damp'] = None 46 if not kwargs.has_key(' xd'): kwargs['xd'] = nan*ones(prob.n)53 if not kwargs.has_key('X'): kwargs['X'] = nan*ones(prob.n) 47 54 if not kwargs.has_key('f'): kwargs['f'] = nan*ones(prob.n) 48 55 … … 57 64 def dff(x, LLSPprob): 58 65 r = dot(LLSPprob.C.T, dot(LLSPprob.C,x)) - dot(LLSPprob.C.T, LLSPprob.d) 59 if not LLSPprob.damp is None: r += LLSPprob.damp*(x - LLSPprob. xd)66 if not LLSPprob.damp is None: r += LLSPprob.damp*(x - LLSPprob.X) 60 67 if all(isfinite(LLSPprob.f)) : r += LLSPprob.f 61 68 return r trunk/openopt/scikits/openopt/oo.py
r1059 r1096 298 298 LLSP: constructor for Linear Least Squares Problem assignment 299 299 ||C * x - d|| -> min 300 0.5*||C*x-d||^2 + 0.5*damp*||x-X||^2 + <f,x> -> min 301 300 302 subjected to: 301 303 lb <= x <= ub … … 312 314 C - float m x n numpy.ndarray, numpy.matrix or Python list of lists 313 315 d - float array of length m (numpy.ndarray, numpy.matrix, Python list or tuple) 316 damp - non-negative float number 317 X - float array of length n (by default all-zeros) 318 f - float array of length n (by default all-zeros) 314 319 lb, ub - float arrays of length n (numpy.ndarray, numpy.matrix, Python list or tuple) 315 320 … … 328 333 lapack_sgelss - single precesion, requires scipy; unconstrained 329 334 bvls - requires installation from OO LLSP webpage, can handle lb, ub 335 nlp:<NLP_solver_name> - converter llsp2nlp. Example: r = p.solve('nlp:ralg', plot=1, iprint =15, <...>) 330 336 """ 331 337 return CLLSP(*args, **kwargs)
