Changeset 1020

Show
Ignore:
Timestamp:
06/14/08 04:42:20 (4 years ago)
Author:
dmitrey.kroshko
Message:

some changes

Location:
trunk/openopt/scikits/openopt/Kernel
Files:
2 modified

Legend:

Unmodified
Added
Removed
  • trunk/openopt/scikits/openopt/Kernel/ooMisc.py

    r1006 r1020  
    11from numpy import zeros, ones, copy, isfinite, where, asarray, inf, array 
    22__docformat__ = "restructuredtext en" 
     3 
     4__solverPaths__ = None 
    35 
    46def Len(arg): 
  • trunk/openopt/scikits/openopt/Kernel/runProbSolver.py

    r1015 r1020  
    55from ooCheck import ooCheck 
    66#import copy 
     7import os, string 
    78from ooMisc import isSolved 
    89from string import capitalize 
    910from BaseProblem import ProbDefaults 
     11from scikits.openopt.Kernel.ooMisc import __solverPaths__ 
    1012ConTolMultiplier = 0.9999 
    1113 
    12 available_solvers = { 
    13     'ALGENCAN' : "scikits.openopt.solvers.BrasilOpt.ALGENCAN_oo", 
    14     'ipopt' : "scikits.openopt.solvers.CoinOr.ipopt_oo", 
    15     'cvxopt_glpk' : "scikits.openopt.solvers.CVXOPT.cvxopt_glpk_oo", 
    16     'cvxopt_lp' : "scikits.openopt.solvers.CVXOPT.cvxopt_lp_oo", 
    17     'cvxopt_qp' : "scikits.openopt.solvers.CVXOPT.cvxopt_qp_oo", 
    18     'nlpSolver1' : "scikits.openopt.solvers.GenericOpt.nlpSolver1", 
    19     'lpSolve' : "scikits.openopt.solvers.lp_solve.lpSolve_oo", 
    20     'scipy_tnc' : "scikits.openopt.solvers.scipy_optim.scipy_tnc_oo", 
    21     'lapack_dgelss' : "scikits.openopt.solvers.scipy_optim.lapack_dgelss_oo", 
    22     'lapack_sgelss' : "scikits.openopt.solvers.scipy_optim.lapack_sgelss_oo", 
    23     'scipy_anderson2' : "scikits.openopt.solvers.scipy_optim.scipy_anderson2_oo", 
    24     'scipy_anderson' : "scikits.openopt.solvers.scipy_optim.scipy_anderson_oo", 
    25     'scipy_bfgs' : "scikits.openopt.solvers.scipy_optim.scipy_bfgs_oo", 
    26     'scipy_broyden1' : "scikits.openopt.solvers.scipy_optim.scipy_broyden1_oo", 
    27     'scipy_broyden2' : "scikits.openopt.solvers.scipy_optim.scipy_broyden2_oo", 
    28     'scipy_broyden3' : "scikits.openopt.solvers.scipy_optim.scipy_broyden3_oo", 
    29     'scipy_broyden_generalized' : "scikits.openopt.solvers.scipy_optim.scipy_broyden_generalized_oo", 
    30     'scipy_cg' : "scikits.openopt.solvers.scipy_optim.scipy_cg_oo", 
    31     'scipy_cobyla' : "scikits.openopt.solvers.scipy_optim.scipy_cobyla_oo", 
    32     'scipy_fminbound' : "scikits.openopt.solvers.scipy_optim.scipy_fminbound_oo", 
    33     'scipy_fsolve' : "scikits.openopt.solvers.scipy_optim.scipy_fsolve_oo", 
    34     'scipy_lbfgsb' : "scikits.openopt.solvers.scipy_optim.scipy_lbfgsb_oo", 
    35     'scipy_leastsq' : "scikits.openopt.solvers.scipy_optim.scipy_leastsq_oo", 
    36     'scipy_ncg' : "scikits.openopt.solvers.scipy_optim.scipy_ncg_oo", 
    37     'scipy_powell' : "scikits.openopt.solvers.scipy_optim.scipy_powell_oo", 
    38     'scipy_slsqp' : "scikits.openopt.solvers.scipy_optim.scipy_slsqp_oo", 
    39     'scipy_leastsq' : "scikits.openopt.solvers.scipy_optim.scipy_leastsq_oo", 
    40     'goldenSection' : "scikits.openopt.solvers.UkrOpt.goldenSection_oo", 
    41     'lincher' : "scikits.openopt.solvers.UkrOpt.lincher_oo", 
    42     'nsmm' : "scikits.openopt.solvers.UkrOpt.nsmm_oo", 
    43     'nssolve' : "scikits.openopt.solvers.UkrOpt.nssolve_oo", 
    44     'ralg' : "scikits.openopt.solvers.UkrOpt.ralg_oo", 
    45     'ShorEllipsoid' : "scikits.openopt.solvers.UkrOpt.ShorEllipsoid_oo", 
    46     'bvls' : "scikits.openopt.solvers.Standalone.bvls_oo", 
    47     'galileo' : "scikits.openopt.solvers.Standalone.galileo_oo", 
    48     'toms587' : "scikits.openopt.solvers.Standalone.toms587_oo", 
    49     'glpk' : "scikits.openopt.solvers.CVXOPT.glpk_oo", 
    50     'ralg15' : "scikits.openopt.solvers.UkrOpt.ralg15_oo", 
    51     'ralg2' : "scikits.openopt.solvers.UkrOpt.ralg2_oo", 
    52     'ralg3' : "scikits.openopt.solvers.UkrOpt.ralg3_oo", 
    53     'ralg4' : "scikits.openopt.solvers.UkrOpt.ralg4_oo", 
    54     'ralgClassic' : "scikits.openopt.solvers.UkrOpt.ralgClassic_oo", 
    55 } 
     14if __solverPaths__ is None: 
     15    __solverPaths__ = {} 
     16    file = string.join(__file__.split(os.sep)[:-1], os.sep) 
     17    for root, dirs, files in os.walk(os.path.dirname(file)+os.sep+'solvers'): 
     18        rd = root.split(os.sep) 
     19        if '.svn' in rd: continue 
     20        rd = rd[rd.index('solvers')+1:] 
     21        for file in files: 
     22            if len(file)>6 and file[-6:] == '_oo.py': 
     23                __solverPaths__[file[:-6]] = 'scikits.openopt.solvers.' + string.join(rd,'.') + '.'+file[:-3] 
     24 
    5625 
    5726def my_import(name): 
     
    7645 
    7746    if p.debug: 
    78         solverClass =  getattr(my_import(available_solvers[solver_str]), solver_str) 
     47        solverClass =  getattr(my_import(__solverPaths__[solver_str]), solver_str) 
    7948    else: 
    8049        try: 
    81             solverClass = getattr(my_import(available_solvers[solver_str]), solver_str) 
     50            solverClass = getattr(my_import(__solverPaths__[solver_str]), solver_str) 
    8251        except: 
    8352            p.err('incorrect solver is called, maybe the solver "' + solver_str +'" is not installed. Maybe setting p.debug=1 could specify the matter more precisely')