B _O'@sddlZddlmZddlmZddlmZmZddlm Z ddl m Z m Z ddl mZmZmZmZddlmZmZdd lmZdd lmZddlZed Zd d Zedejj j!j"ejdddGdddeZ#ejdddGddde Z$dS)N)TempfileManager)DownloadFactory) SolverFactory OptSolver)ASL) ConfigBlock ConfigValue) PositiveInt PositiveFloatNonNegativeFloatIn)Varvalue)TRF)readgjhzpyomo.contrib.trustregioncCsdS)NrrrE/tmp/pip-unpacked-wheel-d4p3hk07/pyomo/contrib/trustregion/plugins.pyload!srgjh trustregionz?Trust region filter method for black box/glass box optimization)docc @s,eZdZdZedZededdddeded d dd ed ed edddeded e dddej r|dZ n ej dZ edee edddededej edddedededddedededddedededddedededddedede dddeded eddded!ed eddded"ed#eddded$eejed%dded&ed'eddded(ededdded)ed#eddded*ed+eddded,ededdded-ededdded.ed/eddded0ed1ed2dded3ed1ed2dded4ed5e ddded6ed7eddded8ed9eddded:ed;e dddeded?d>gd@dddAdBZdJdCdDZdEdFZdGdHZdIS)KTrustRegionSolvera A trust region filter method for black box / glass box optimizaiton Solves nonlinear optimization problems containing external function calls through automatic construction of reduced models (ROM), also known as surrogate models. Currently implements linear and quadratic reduced models. See Eason, Biegler (2016) AIChE Journal for more details Arguments: z Trust RegionsolverZipoptz solver to use, defaults to ipopt)default descriptionrZsolver_optionsTz(options to pass to the subproblem solver)Zimplicitrrz trust radiusg?)rdomainrrz sample regiong?g@z sample radiusz radius maxg@@zep igh㈵>zep deltazep chigMbP?z delta mingư>zdelta min <= ep deltazmax itz kappa deltag?zkappa mumug?zep compatibilityz)Suggested value: ep compatibility == ep izcompatibility penaltygzcriticality checkzgamma czgamma eg@zgamma sz kappa thetaz theta ming-C6?zgamma fg{Gz?z5gamma_f and gamma_theta in (0,1) are fixed parametersz gamma thetaz theta max2Zeta1g?Zeta2g?zprint variablesFzsample radius adjustzreduced model typerz0 = Linear, 1 = QuadraticcKs>d|ddi}|j|dd|_|jj|d<tj|f|dS)NtyperT)preserve_implicitr)popCONFIGconfigrr__init__)selfkwdsZtmp_kwdsrrrr&s zTrustRegionSolver.__init__cCsdS)zCheck if solver is available. TODO: For now, it is always available. However, sub-solvers may not always be available, and so this should reflect that possibility. Tr)r'Zexception_flagrrr available szTrustRegionSolver.availablecCstS)z/Return a 3-tuple describing the solver version.) __version__)r'rrrversionszTrustRegionSolver.versioncKs~|j|dd|_t|t||jf|_|}t||jd|jdx0t|jd|jdD]\}}| t |q`WdS)NT)r"r r) r%Z _local_configlistZcomponent_data_objectsr Z _tmp_trf_dataclonerzip set_valuer)r'modelZeflistr(instZinst_varZorig_varrrrsolves  zTrustRegionSolver.solveN)T)__name__ __module__ __qualname____doc__rr$Zdeclarerr boolZ sample_regionZdefault_sample_radiusZ trust_radiusr Zep_ir r r&r)r+r3rrrrr&s:                                 rz contrib.gjhz"Interface to the AMPL GJH "solver"csDeZdZdZfddZfddZfddZfdd ZZS) GJHSolverzLAn interface to the AMPL GJH "solver" for evaluating a model at a point.c s4d|d<d|d<tt|jf|d|j_d|_dS)Nrr!TZsymbolic_solver_labelsF)superr9r&optionsrZ _metasolver)r'r() __class__rrr&0s zGJHSolver.__init__cs"||_d|j_tt||dS)N)_model _gjh_infor:r9_initialize_callbacks)r'r1)r<rrr?9szGJHSolver._initialize_callbackscs:tt|j|||jddd|_tj|jdddS)NrF)exists)r:r9 _presolveZ _soln_file _gjh_filerZ add_tempfile)r'argsr()r<rrrB>szGJHSolver._presolvecs"t|j|j_d|_tt|S)N)rrCr=r>r:r9 _postsolve)r')r<rrrECszGJHSolver._postsolve) r4r5r6r7r&r?rBrE __classcell__rr)r<rr9+s   r9)%loggingZpyutilib.servicesrZpyomo.common.downloadrZpyomo.opt.baserrZ!pyomo.solvers.plugins.solvers.ASLrZpyutilib.misc.configrrZpyomo.common.configr r r r Z pyomo.corer rZpyomo.contrib.trustregion.TRFrZ!pyomo.contrib.trustregion.readgjhrZ pyomo.contrib.trustregion.getGJHZpyomo getLoggerloggerrregistercontribrZgetGJHZget_gjhrr9rrrr s*