Ë
    þÍ:j1  ã                  ó�  — d dl mZ d dlmZ d dlZd dlmZ d dlm	Z	  e«       5 Z
d dlmZ ddd«       erd dlmZ d dlmZ d dlmZ nd d	lmZ  ed
«      Ze
j)                  «       s e	e«      Zej/                  d«       	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd„Z	 	 	 	 	 	 	 	 d	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd„Zy# 1 sw Y   Œ’xY w)é    )Úannotations)ÚTYPE_CHECKINGN)Ú
try_import)Ú
get_logger)Úgreenlet)ÚCallable)ÚAny)Ú_LazyImportzscipy.optimizez}The 'greenlet' package is unavailable, falling back to sequential L-BFGS-B optimization. This may lead to slower suggestions.c
                óR  ‡‡‡‡‡‡‡‡‡	‡‡‡— ‰j                   dk(  sJ ‚t        ‰«      }
t        j                  ‰«      Št        j                  |
t
        ¬«      Št        j                  |
t        ¬«      Šdˆˆˆˆˆˆˆˆ	ˆˆˆˆfd„}t        |
«      D �cg c]  }t        |«      ‘Œ }}t        |«      D ��cg c]  \  }}|j                  |«      ‘Œ }}}t        j                  |D ��cg c]
  \  }}|€Œ	|‘Œ c}}«      }t        t        |D ��cg c]
  \  }}|€Œ	|‘Œ c}}Ž «      Š|j                  rÄ | |g‰¢­Ž \  }}t        |«      D ��cg c]  \  }}|j                  ||   ||   «      ‘Œ }}}t        j                  |D ��cg c]
  \  }}|€Œ	|‘Œ c}}«      }t        t        |D ��cg c]
  \  }}|€Œ	|‘Œ c}}Ž «      Št        ||«      D ���cg c]  \  \  }}}|€Œ|‘Œ }}}}|j                  rŒÄ‰‰‰fS c c}w c c}}w c c}}w c c}}w c c}}w c c}}w c c}}w c c}}}w )Né   ©Údtypec                ó   •‡ — dd„}t        j                  |‰‰    t        ˆ fd„‰D «       «      ‰‰	‰‰‰
‰‰¬«
      \  }}}|‰‰ <   |‰‰ <   |d   ‰‰ <   t        j                  «       j
                  j                  d d «       y )Nc                óš   — t        j                  «       j                  j                  | |«      \  }}t	        |«      |j                  «       fS ©N)r   Ú
getcurrentÚparentÚswitchÚfloatÚcopy)ÚxÚargsÚfvalÚgrads       ún/home/mcse/projects/srt_converter/srt-converter-venv/lib/python3.12/site-packages/optuna/_gp/batched_lbfgsb.pyÚ_func_and_gradz4_batched_lbfgsb.<locals>.run.<locals>._func_and_grad5   s<   € Ü!×,Ñ,Ó.×5Ñ5×<Ñ<¸QÀÓE‰JˆD�$ä˜“; §	¡	£Ð+Ð+ó    c              3  ó(   •K  — | ]	  }|‰   –— Œ y ­wr   © ©Ú.0ÚargÚis     €r   ú	<genexpr>z/_batched_lbfgsb.<locals>.run.<locals>.<genexpr>=   s   øè ø€ Ò6 #�s˜1•vÑ6ùó   ƒ©
ÚfuncÚx0r   ÚboundsÚmÚfactrÚpgtolÚmaxfunÚmaxiterÚmaxlsÚnit)r   ú
np.ndarrayr   r	   Úreturnútuple[float, np.ndarray])ÚsoÚfmin_l_bfgs_bÚtupler   r   r   r   )r#   r   Úx_optÚfval_optÚinfoÚbatched_argsr)   r+   Ú	fvals_optr*   Ú	max_evalsÚ	max_itersÚmax_line_searchÚn_iterationsr,   Ú
x0_batchedÚxs_opts   `    €€€€€€€€€€€€r   Úrunz_batched_lbfgsb.<locals>.run4   sŽ   ù€ ó	,ô
 !#× 0Ñ 0ØØ˜!‰}ÜÓ6¨Ô6Ó6ØØØØØØØ!ô!
Ñˆˆx˜ð ˆˆq‰	Øˆ	�!‰Ø˜u™+ˆ�Q‰Ü×ÑÓ×$Ñ$×+Ñ+¨D°$Õ7r   )r#   Úintr2   ÚNone)ÚndimÚlenÚnpÚ
empty_likeÚemptyr   rC   Úranger   Ú	enumerater   Úarrayr6   ÚzipÚsize)Úfunc_and_gradr@   r:   r)   r*   r+   r,   r<   r=   r>   Ú
batch_sizerB   Ú_Ú	greenletsr#   ÚglÚx_and_args_listr   Ú	x_batchedr   ÚfvalsÚgradsr;   r?   rA   s    `````````            @@@r   Ú_batched_lbfgsbrX   "   sÐ  ÿû€ ð �?‰?˜aÒÐÐÜ�Z“€JÜ�]‰]˜:Ó&€FÜ—‘˜¬5Ô1€IÜ—8‘8˜J¬cÔ2€L÷8÷ 8ð 8ô. ).¨jÓ(9Ö: 1”˜#•Ð:€IÐ:Ü1:¸9Ó1E×F©¨¨2�r—y‘y •|ÐF€OÑFÜ—‘¨×I¡  1¸1¹=š!ÓIÓJ€IÜœ°?×W©¨¨4ÀdÑFVštÓWÐXÓY€LØ
�.Š.Ù$ YÐ>°Ò>‰ˆˆuÜFOÐPYÓFZ×[¹U¸QÀ˜2Ÿ9™9 U¨1¡X¨u°Q©xÕ8Ð[ˆÑ[Ü—H‘H¨O×M¡D A q¸q¹}šaÓMÓNˆ	ÜœS°×"[©G¨A¨tÈ$ÑJZ¢4Ó"[Ð\Ó]ˆÜ*-¨o¸yÓ*I×[Ð[™J™F˜Q  BÈQÉ]’RÐ[ˆ	Ò[ð �.‹.ð �9˜lÐ*Ð*ùò ;ùÛFùÛIùÛWùó \ùÛMùÛ"[ùÜ[sN   ÂG9Â4G>Ã&
H
Ã1H
Ä
H
ÄH
Å
"HÆ
H
ÆH
Æ)
HÆ4HÇH"ÇH"c
                ó  ‡ ‡— |j                   \  }
}t        |«      D ]-  \  }}t        |«      |
k(  rŒJ d|› d|
› dt        |«      › d�«       ‚ |�;t        j                   |«      |dfk(  s!J d|›dt        j                   |«      › d�«       ‚t        j                  «       r(t        |«      dkD  rt        ‰ |||||||||	¬	«
      \  }}}nÁdˆ fd
„}t        j                  |«      }t        j                  |j                   d   t        ¬«      }t        j                  |j                   d   t        ¬«      }t        |«      D ]H  \  Š}t        j                  ||t        ˆfd„|D «       «      |||||||	¬«
      \  |‰<   |‰<   }|d   |‰<   ŒJ |||fS )a·  
    Batched L-BFGS-B optimization with/without greenlet.
    - `func_and_grad` is expected to take a 2D array as the first argument and return a tuple of
      a 1D array of function values and a 2D array of gradients.
    - `x0_batched` is a 2D array where each row is an initial point for optimization.
    - `batched_args` is a tuple of additional arguments to pass to `func_and_grad`. e.g., if
      `batched_args` is `([alpha1, ..., alphaB], [beta1, ..., betaB])`, then
      `func_and_grad` is called by
      `func_and_grad(x0_batched, [alpha1, ..., alphaB], [beta1, ..., betaB])`. Note that each
      argument in `batched_args` is expected to be a list of length `B` (batch size).
    zbatched_args[z] must have length z
, but got ú.r   z!The shape of bounds must be (dim=z, 2), but got é   )
rO   r@   r:   r)   r*   r+   r,   r<   r=   r>   c                ó¨   •— | j                   dk(  sJ ‚d„ |D «       }| d d d …f   } ‰|g|¢­Ž \  }}|j                  «       |d   j                  «       fS )Nr[   c              3  ó"   K  — | ]  }|g–— Œ	 y ­wr   r   )r!   r"   s     r   r$   zAbatched_lbfgsb.<locals>._func_and_grad_wrapper.<locals>.<genexpr>‘   s   è ø€ Ò0 ˜”uÑ0ùs   ‚r   )rE   Úitemr   )Úx_1dÚargs_1dÚargs_2dÚx_2dr   r   rO   s         €r   Ú_func_and_grad_wrapperz.batched_lbfgsb.<locals>._func_and_grad_wrapper�   sX   ø€ Ø—9‘9 ’>Ð!�>Ù0¨Ô0ˆGØ˜ša˜‘=ˆDÙ& tÐ6¨gÒ6‰JˆD�$Ø—9‘9“;  Q¡§¡£Ð.Ð.r   r   r   c              3  ó(   •K  — | ]	  }|‰   –— Œ y ­wr   r   r    s     €r   r$   z!batched_lbfgsb.<locals>.<genexpr>�   s   øè ø€ Ò: c˜3˜q�6Ñ:ùr%   r&   r0   )r_   r1   r`   r	   r2   r3   )ÚshaperK   rF   rG   Ú_greenlet_importsÚis_successfulrX   rH   rI   r   rC   r4   r5   r6   )rO   r@   r:   r)   r*   r+   r,   r<   r=   r>   rP   ÚdimÚjr"   rA   r;   r?   rc   r(   r9   r#   s   `                   @r   Úbatched_lbfgsbrj   Y   sÅ  ù€ ð. !×&Ñ&�O€J�ä˜LÓ)ò 
‰ˆˆ3Ü�3‹x˜:Ó%ð 	
Ø˜A˜3Ð1°*°¸ZÌÈCËÀzÐQRÐSó	
Ð%ð
ð ˆ>œRŸX™X fÓ-ØØ	ð2ò ð Oð 
, s f¨N¼2¿8¹8ÀFÓ;KÐ:LÈAÐNóOð ô
 ×&Ñ&Ô(¬S°«_¸qÒ-@ä*9Ø'Ø!Ø%ØØØØØØØ+ô+
Ñ'ˆ�	™<õ 	/ô —‘˜zÓ*ˆÜ—H‘H˜Z×-Ñ-¨aÑ0¼Ô>ˆ	Ü—x‘x 
× 0Ñ 0°Ñ 3¼3Ô?ˆÜ˜zÓ*ò 	*‰EˆAˆrÜ,.×,<Ñ,<Ø+ØÜÓ:¨\Ô:Ó:ØØØØØ Ø!Ø%ô-Ñ)ˆF�1‰I�y ‘| Tð # 5™kˆL˜ŠOð	*ð �9˜lÐ*Ð*r   )rO   ú,Callable[..., tuple[np.ndarray, np.ndarray]]r@   r1   r:   ztuple[Any, ...]r)   ú list[tuple[float, float]] | Noner*   rC   r+   r   r,   r   r<   rC   r=   rC   r>   rC   r2   ú)tuple[np.ndarray, np.ndarray, np.ndarray])r   Né
   g    ÐcAgñhãˆµøä>é˜:  ro   é   )rO   rk   r@   r1   r:   ztuple[list[Any], ...]r)   rl   r*   rC   r+   r   r,   r   r<   rC   r=   rC   r>   rC   r2   rm   )Ú
__future__r   Útypingr   ÚnumpyrG   Úoptuna._importsr   Úoptuna.loggingr   rf   r   Úcollections.abcr   r	   Úscipy.optimizeÚoptimizer4   Úoptunar
   rg   Ú__name__Ú_loggerÚwarningrX   rj   r   r   r   ú<module>r}      sƒ  ðÝ "å  ã å &Ý %ñ ƒ\ð "Ð&Ý!÷"ñ Ý(Ýæõ #á	Ð%Ó	&€Bð ×&Ñ&Ô(Ù˜Ó"€GØ‡O�Oð	/ôð4+Ø?ð4+àð4+ð "ð4+ð -ð	4+ð
 ð4+ð ð4+ð ð4+ð ð4+ð ð4+ð ð4+ð /ó4+ðt +-Ø/3ØØØØØØðO+Ø?ðO+àðO+ð (ðO+ð -ð	O+ð
 ðO+ð ðO+ð ðO+ð ðO+ð ðO+ð ðO+ð /ôO+÷]"ð "ús   ¤B<Â<C