def initialize(**kwds): obj = Bunch(**kwds) # # Set obj.available # try: opt = SolverFactory(obj.name, solver_io=obj.io) except: opt = None if opt is None or isinstance(opt, UnknownSolver): obj.available = False elif not opt.available(exception_flag=False): obj.available = False elif hasattr(opt, 'executable') and opt.executable() is None: obj.available = False elif not opt.license_is_valid() \ and obj.name not in licensed_solvers_with_demo_mode: obj.available = False else: obj.available = True # # Set the limits for the solver's "demo" (unlicensed) mode: # ( nVars, nCons, nNonZeros ) obj.demo_limits = (None, None, None) if obj.available: if obj.name == "baron" and not opt.license_is_valid(): obj.demo_limits = (10, 10, 50) # # Check capabilities, even if the solver is not available # if not (opt is None or isinstance(opt, UnknownSolver)): for _c in obj.capabilities: if not _c in opt._capabilities: raise ValueError("Solver %s does not support capability %s!" % (obj.name, _c)) # # Get version # if obj.available: obj.version = opt.version() return obj