Changeset 1096

Show
Ignore:
Timestamp:
07/04/08 09:23:23 (2 months ago)
Author:
dmitrey.kroshko
Message:

new fileds for LLSP class

Files:

Legend:

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

    r1095 r1096  
    66 
    77class LLSP(MatrixProblem): 
    8     __optionalData__ = ['damp', 'xd', 'c'] 
     8    __optionalData__ = ['damp', 'X', 'c'] 
    99    def __init__(self, *args, **kwargs): 
    1010        if len(args) > 2: self.err('incorrect args number for LLSP constructor, must be 0..2 + (optionaly) some kwargs') 
     
    1717    def objFunc(self, x): 
    1818        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 
    2021        if any(isfinite(self.f)): r += dot(self.f, x) 
    2122        return r 
     
    2930        r = p.solve(solver, **kwargs) 
    3031        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 
    3138 
    3239 
     
    4451    prob.ub =  inf * ones(prob.n) 
    4552    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) 
    4754    if not kwargs.has_key('f'): kwargs['f'] = nan*ones(prob.n) 
    4855 
     
    5764def dff(x, LLSPprob): 
    5865    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
    6067    if all(isfinite(LLSPprob.f)) : r += LLSPprob.f 
    6168    return r 
  • trunk/openopt/scikits/openopt/oo.py

    r1059 r1096  
    298298    LLSP: constructor for Linear Least Squares Problem assignment 
    299299    ||C * x - d|| -> min 
     300    0.5*||C*x-d||^2 + 0.5*damp*||x-X||^2 + <f,x> -> min 
     301 
    300302    subjected to: 
    301303    lb <= x <= ub 
     
    312314    C - float m x n numpy.ndarray, numpy.matrix or Python list of lists 
    313315    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) 
    314319    lb, ub - float arrays of length n (numpy.ndarray, numpy.matrix, Python list or tuple) 
    315320 
     
    328333    lapack_sgelss - single precesion, requires scipy; unconstrained 
    329334    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, <...>) 
    330336    """ 
    331337    return CLLSP(*args, **kwargs)