a
    ‡ù»j8L  ã                   @   s>   d dl Zd dlmZ d dlmZ d dlmZ G dd„ dƒZ	dS )é    N)Úassert_allclose)Úraises)Únnlsc                   @   sL   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dS )ÚTestNNLSc                 C   s   t j d¡| _d S )Nl   óF_fÐr/ )ÚnpÚrandomZdefault_rngÚrng)Úself© r
   úDE:\soccer\ml_env\Lib\site-packages\scipy/optimize/tests/test_nnls.pyÚsetup_method   s    zTestNNLS.setup_methodc                 C   s^   t  d¡ dd¡}t  d¡}|| }t||ƒ\}}|dk s>J ‚t j || | ¡dk sZJ ‚d S )Ng      9@éÿÿÿÿé   g      @çH¯¼šò×z>)r   ZarangeÚreshaper   ÚlinalgÚnorm)r	   ÚaÚxÚyÚresr
   r
   r   Ú	test_nnls   s    
zTestNNLS.test_nnlsc                 C   s�   | j jddddgd�}t | j jdddgd�¡}d|d d d…< || }t||dtj |d	¡ t d
¡ d�\}}t||ddd� |dk sŒJ ‚d S )Néöÿÿÿé
   é2   ©ÚlowÚhighÚsizeéþÿÿÿé   r   éô  é   ç      ð?©Úatolç        ç»½×Ùß|Û=©Zrtolr%   çê-�™—q=©	r   Úuniformr   Úabsr   r   r   Úspacingr   ©r	   r   r   ÚbZxactÚrnormr
   r
   r   Útest_nnls_tall   s    *zTestNNLS.test_nnls_tallc                 C   s�   | j jddddgd�}t | j jdddgd�¡}d|d d d…< || }t||d	tj |d
¡ t d¡ d�\}}t||ddd� |dk sŒJ ‚d S )Nr   r   éd   éx   r   r   r    r   r!   r"   r#   r$   r&   r'   r(   r)   r*   r.   r
   r
   r   Útest_nnls_wide   s    *zTestNNLS.test_nnls_widec                 C   sV   | j jdd�}| j jdd�}ttƒ� t||dd� W d   ƒ n1 sH0    Y  d S )N)r   r   )r   r   r"   )Úmaxiter)r   r+   Úassert_raisesÚRuntimeErrorr   )r	   r   r/   r
   r
   r   Útest_maxiter'   s    
zTestNNLS.test_maxiterc                 C   sÔ   t  g d¢¡}t  g d¢¡}t  g d¢¡}t|ƒ}t  |¡t  t  ||f¡¡ }|d }|dk ¡ d }d|||f< d||t  |d |d ¡f< d||< d||< t  |¡}t|| || ƒ\}	}
t	|	|dd	d
� d S )N)Cé   r    r   r"   r"   r"   r9   é   é   é   é   é   é)   é/   é5   é9   éC   éL   ég   éY   éa   é^   éU   é_   éN   rK   rK   éM   éI   r   r   é8   éD   éb   rJ   ép   é†   é‘   éž   é¬   éÕ   éê   éÞ   é×   éØ   rZ   éÎ   é·   é‡   éœ   én   é\   é?   é<   é4   r=   é   r<   é   r   r   r   r"   r    r9   r   r    )Cr&   r&   r&   r&   r&   r&   r&   r&   r&   r&   r&   r&   r&   r&   r&   r&   r&   r&   r&   r&   ç¥ oN ç?r&   g¥ oN ÷?rf   ç¥ oN @ç¥ oN @rh   g¯šVSð(@gÙ‚òf°C.@g�¬¡D -4@gÄŽ$]Ða;@g-ÜR´#H@gªãPxÇG@g:Ù6:"Q@g¯šVSðX@gAÐê[”[@gùù™9ï`@g^¿;m�a@g¥ oN g@gYÇëHòoe@çØERW³«i@gºÑÝgÝˆn@g_�ÿZgÀj@gì9 a“�l@gh¨bÞ m@ri   g›¦ˆIže@gëüQ–õg@g1ðD/Dd@g©àBA{/c@gGM^^¾[@gxµ WÂÂY@g›¦ˆIžU@gÙ‚òf°CN@g›¦ˆIžE@gªãPxÇ7@g¯šVSð8@g|¸Ó:@K1@g¥ oN '@rh   g�¬¡D -@gÎˆbÀÒ@r&   rg   r&   r&   r&   )Cr&   r&   r&   r&   r&   r&   r&   r&   r&   r&   r&   r&   r&   r&   r&   r&   r&   r&   r&   r&   g]<ôTÜo?r&   gTT®À'?r&   gª#ÛIš?g‚'ø|ë¢?r&   g¿…—Îµ?g’ï	kÑ­¨?güõ<h:É?g4 &¥frÂ?gûwÕpèÅ?r&   r&   g£ù™Äc@Ñ?r&   r&   r&   gÛqå2O†?r&   r&   r&   r&   r&   r&   r&   r&   gËšHZ©¨?gæ«ØT‡?r&   r&   gjµœÓE>¬?r&   r&   r&   r&   güö_kœ?r&   r&   r&   r&   r&   r&   r&   r&   r&   r&   ç      à?r   r"   r   r&   r'   r(   )
r   ÚarrayÚlenÚdiagÚtrilÚonesÚnonzeroÚminimumr   r   )r	   ÚnÚkÚdÚNÚAÚwÚnzÚWÚdactÚ_r
   r
   r   Útest_nnls_inner_loop_case1.   s(    ÿÿÿ
z#TestNNLS.test_nnls_inner_loop_case1c                 C   s  t  g d¢¡}t  g d¢¡}t  g d¢¡}t|ƒ}t  |¡t  t  ||f¡¡ }|d }|dk ¡ d }d|||f< d||t  |d |d ¡f< d||< d||< t  |¡}t|| || dd	�\}	}
t  	|	¡}t  
|	dk¡sàJ ‚t jj|||  t jd
�dk �sJ ‚t|	|ddd� d S )N)Dr"   r   r"   r    r    r    r9   r9   r   é   r;   r;   é   é   é$   é*   r€   é@   r‚   r‚   éQ   rI   rI   rJ   rJ   rJ   éK   rD   éE   rƒ   é>   é;   rO   r‚   éG   rC   éJ   rK   év   r]   é™   éŸ   éÒ   éÃ   éÚ   éó   éì   rY   éÄ   é¯   é¹   é•   é�   rE   éh   r„   rN   é(   é    r   é   é	   re   r:   r    r"   r"   r"   )Dr&   r&   r&   r&   r&   r&   r&   r&   r&   r&   r&   r&   r&   r&   r&   r&   r&   r&   r&   r&   r&   r&   ç„±£¢›æ?r&   r&   g#ÅúùVô @rœ   r&   gå�LKæA@gå�LKæA@g„±£¢›&@ç#ÅúùVô0@çàXdÃ“|4@rž   g�¯^u¸B@gÂÐyçK@gðó	‘„šS@g{¶‚ñîÈY@gÔ—æÇ}Z@gÜ¢+š¶o_@gPë@Ú¡b@g[ÛÓê{f@gwf@c£h@gÔ—æÇ}j@go=´¸›i@g†¦Iœ�:m@g
$Út¨£k@gû%Øuh@g(
ã�©¹h@gëH+n5îg@gsþÔ-}g@guqšiœb@gúî*B´l`@gÔ§}õ#]@gÏ¸—÷OW@g¾"(²@V@gÍb"a4ØJ@g„±£¢›F@g¡J?@g(
ã�©¹8@r�   çT;OÎºÇ#@rŸ   ç„±£¢›@r    ç„±£¢›ö?rœ   r¡   )Dr&   r&   r&   r&   r&   r&   r&   r&   r&   r&   r&   r&   r&   r&   r&   r&   r&   r&   r&   r&   r&   r&   g�"í%&ôa?r&   r&   gY¾ÍM­‡?r&   r&   gR.�†S£?g“Çh¾¤q¢?gwLB›íW¸?gÓQåº?gðò´F
}Œ?g�ÑÇ™H“?gšL'%²†Ê?gô…*òO�Ó?gÞ°acªÁ?r&   r&   r&   r&   r&   r&   r&   r&   r&   r&   r&   g ÏK’u¦?g bb,M‡n?r&   r&   r&   r&   r&   gðêwÕ¬D¸?r&   r&   r&   r&   r&   r&   r&   r&   gL›gÎ?r&   r&   g '¶²²?rj   r   r"   r   r   r$   )Úordé   r&   r'   r(   )r   rk   rl   rm   rn   ro   rp   rq   r   ZcumsumÚallr   r   Úinfr   )r	   rr   rs   rt   ru   rv   rw   rx   ry   rz   r{   Úpr
   r
   r   Útest_nnls_inner_loop_case2h   s.    ÿÿÿ

$z#TestNNLS.test_nnls_inner_loop_case2c                 C   sV   t  g d¢¡ dd¡}t jdt jd�}t||ƒ\}}t|t  g d¢¡ƒ t|dƒ d S )N(½  gÄ\˜ó¨aÕ?g°{ š6‚¼?g'Ý¯�û(©?gÊ§¼y£?g°{ š6‚¬?gîÂz„MÅ?g=YZM[g¼?g×<NÒG¹?gÓ�‘3’ïÂ?g=YZM[gÜ?çèo½‰+j¼?r¨   gê|\˜ÒÎÂ?gîN§ OÕ?glÖ7¼”ù÷?gâx7Oµ?g.¡TŸei¼?gÿy�ÊÉ?gsk8jîðâ?g.¡TŸei@gÍ›ÎJÛ±?g YX'i¼?g�ý†„WÏ?g²¦Ó#˜í?gêFl–¡¾@gZIÝÑ\g¬?gZIÝÑ\g¼?gÄ9ãÞöÌÒ?g÷e�…Mõ?gåµQ6÷'@gùÒ¥¸R¨?gÍmÊ‚`¼?g‘1øÔéÕ?gm¥î!Ú÷ü?g�œD&§3@g5åÆs@¥?gGÜ³»îU¼?g,Õ&.çÙ?gÚ’"}ôã@gGÜ³»îU<@g³E¨&.Û¢?g�hü9ÅH¼?g›7ó Ü?g7øìhfÝ@goñ‡hÎ"D@g"Xz”(ô ?gä’v÷˜A¼?g»…”ò+ß?g­ƒWÿn@grË©a˜K@go“síÍž?g{œTD<¼?gê|•!á?gò§º(Ë@g2}èE�YR@gá°œ7š?gô?|2>¼?güŠÙÃ†@ä?gq†pÜ@gÚ+‰è8L^@g7€ã^œ–?gâD`œvC¼?gŽØÕÂ€bç?g\h ‡� @gÂ’y‹ÖIg@g Ö‘^ˆ6•?gVmÓµH¼?g¤i%Û;öè?g9¾Hâ#Û"@gVmÓµHl@gÌ¢'úÈß’?g2t;w­O¼?gZ�:>îì?g*š\:ã'@gy">¹'t@gQ“S7:1�?gÎAÒà%V¼?g€z¦_ið?gÉ»ÀwE0@gÚXáa€@gyÖ™rõ‘�?g3~8‹V¼?g»‡ÓlÁùñ?g«Ú>åñ„3@gÁÃ'ËT…@gŸZ­¢Q"Š?g×Ì;pØO¼?gY)o.Mô?g÷¢t-�ë8@g�&f�'_Ž@gÕÅ‹°Tg‡?g�SU†G¼?g]¢‹‚3žö?gO€¨÷>@g6¾AT•@gÌÐØÊZŒ„?gêÖü@¼?gE”mæ¶ù?gý^BD@goïªÊ}üž@gŽÂeëhT‚?gFá<À!B¼?gC"1¶þÕü?gsí€¿›/I@géÍI×¥@g:H¤Ü‘‡€?g¦˜ƒî<¼?gŸ�®+îÿ?g»9Z²YçN@gz³b1P²­@gœlÊ½Wt}?gÀR7k):¼?g‚ <‡Àç@gU/2eqS@gxÉAö´@g¸8”Ú°z?gÇ’ B*B¼?gtN$_C@g1Š‡’ßX@gt10•zP¾@gˆ@Žv	w?g¸tÙ÷P¼?g1‰~¶	@g,t´ù	`@g¤ˆKËC/Æ@gúÎ( t?gÃ—Ø	\¼?g¯…Ï	@g™E¸ú@d@g¨Õƒ(Ï@g"‡aì]nr?gªÁ!&j¼?g}ó{Ôþ@gá3ÀQFSi@gý¬äú6öÕ@g2šl{p?g’Ëáq¼?g§J�ŠýN@g6±v¥ôo@g]rð0dß@g¢Î‚m?g¶Ü7©·–¼?gTeM—ìT@g©keUt@gÏž‡&îå@g¶h+â	:j?gˆz_Ïz¯¼?gƒ„ÄcÄ@g?úî±¼y@gëkh.«ï@gKòÌßÈtg?g|”“áÔ¼?gÉfoù	u@gëµMÇU€@g�u™�–ö@gÈÑÐ;ûe?gs ?ryð¼?gÁ»VK�V@g�Á~„„@gTŸýó¼ÿ@g¹êÍŽöÕb?g4(Ü	½?g÷M(Î¡@g%mŸá‰@g¦.¯ä§qAg9ÀÍÔ¨À`?g¸ë…{$½?g]§ÛÍ'Ç @g°pS©‰�@gÅ%0œ'.AgN}>%ì ^?gµÜðþå8½?gíÅ•GµÖ"@g›‡–AÊ”@g�oÝœÇAgGG�GÏZ?g÷ÍIB¶R½?gJH�;�:%@gú—™æ%Oš@g_Ñ±/ Agö–ÜëW?g94ÉOf½?gYÞ>\ë'@gÁZ‘É,¨ @gÿºî�'Ag\O¨‡gFU?gGƒFŠy½?gßœ¶Âb+@gcC!>7¥@gìjìbˆ0AgÙ¼“Á’S?gÇ÷Çq‰½?g5ÄØ-ÄW.@gSg.Id®ª@g5ä�@K7AgFÍÂkôP?g~ã¯By”½?gÔ”_¯1@gKY“iâ°@g8*Ý6’@AgbðÚ?1AN?g´`†ŽÕŸ½?gÚ.áb633@g´ çzYMµ@gšb‘4wGAgÁK×ÆàöJ?gr)	›ó³½?gð¢›?H¨5@g‹OY44»@gêÖïXõ¿PAg"4H?gÒ'6ÀÍ½?g5“pëøf8@gå‹¦ÕçÁ@g-ßLÌWAgDáÒÚÌ¢E?gBAMàd¾?g·pMÇ±;@gAF�k±ÑÅ@g4ßWGaAg6
+JsC?gD#ÿÜV¾?gÎ;y�TS?@g×ÏÅ¯Ë@gŠÔð;‚JhAg*$JüfA?g¶ð
Ó¾?g	YÒWÆ°A@gõbÉ¥À�Ñ@gîhpëQqAg{<˜cŒõ>?g‰Û	2¶y¾?gäæ…QÛC@gø�åÜ%Ö@gn)$9í†xAgêòÔqÃi;?g.ZüOW¾?gºx¯û9F@gmk “¤ßÛ@gâN[Z�AgÂwE¼‚u8?gìar‘j¾?g±‡¥«ŽI@g}Oq\È¢á@gTRŠØ«ˆAgtrl�º5?gmºàfeT¾?g�ÿ/��L@gàÆ_–é(æ@g&3gf‘Agúâ[èM3?g!‰‘‘çI¾?gì.5ÍºtO@gyÐ)G1öë@gmw¾˜­˜Agâ@s›¸<1?gNÜ9ù]¾?gk)†)—´Q@gWÕw]ò«ñ@g:°ÿ¼ƒ¡AgËW;×!õ.?gà¨'”¢¾?g¾U½‘ûT@gÂ“50€ö@g¥«‰©Ag¨$¥„¾+?g<‡ixÄÔ¾?gpµø¦â­V@g`²ùŽü@g�8'@Ú±Ag"í/†–(?gÆ-�£]³¾?gãúþ—ï_Y@g:‚óAgoá¡³7¹AgK3êPÔ%?gím¯2¼œ¾?gX9n˜8j\@g)f\M“Ag¦¾&ÖÑÎÁAg²S-fZJ#?gÝiûlzd¾?gkÛˆÛ±_@g9)i¶tJAgir(/|ÉAgú›lóÝ ?gÅÖf�Û½?g9¶@™ö}a@gÿá;åŠAgÙ(QµwÑAgñ«ÛmXm?goâ6i4A½?g/^Ð@c@gâß÷E¯Ag¥£Ôï–@ØAg›T#æ?g¢òªêªê¼?gª¹Õçã^e@g‚]el	Ag£AˆãûàAgxéÖ?gF'Ö;I§¼?gÅ¹8Ëg@gtN6�jé Ag™õ}!pÞçAg6óÔð?gÒy ¼P¼?gš§¹=:ij@gÐW“7ë%Ag±Î»¶ðAg"dÑ §?gÁ7nÏñ»?g¢t´ÕÉGm@g˜‡ãÐ�B*AgÚL÷b÷Agcrý¿�?gðº­®²–»?gº¯0sí;p@gò
ì	SZ0AgRZ„ÜÕZ Bg7xõ40?gc&9,
'»?gqÊ5óòq@g<™U_¶O4AgJŒÜFÒBgwÔñÏcœ?g?–%?}º?g“6pè½«s@gbHÛŒ9AgP Ùå¯�BgÝ8	Îx?g*'¨¾Ì¹?g2ÐÏí{…u@g~«Ž|p»>Ag>;¬Û+ÉBg
gîk+?g·B«5¸¹?g(�x@g„M VSCAgñ8ëyÆBgÏ9W×,‚ ?g-ôÂxU@º?g0Á4r¡{@g`³1|äHAgõe„†ÿC&Bg*Éä”å<ÿ>gì–6"iæ»?g‚d¯_t~€@gÉÐù1±PAgîmQ«Å0BgÍ	©À˜+þ>gª–I½D¾?g¨Eax£„@g¼ò€sÙVAgîjÌÊ9Bg“ãª¢9Oý>g„|‚b2„À?g‚ºW|f¤ˆ@gÕ
Àx_AgŸ€o,óCBg{¹Á™ü%ü>g!D)�ÑÁ?g]ÿâ€	Ý�@gà<ª‚keAg ³$‚NBgºs£¥n5ú>gba7UÎ¢Â?gÑþÏŠ‘@gàËY¶pDlAgøºÎ�»œVBg‘Wòí_‚ø>gæ!?ê¢“Ã?g4hØcC³”@g›­1Ò¼rAgê×îW¼Õ`Bgs‹—Õtõ>g,Lð™ äÂ?g±9u:ôp–@g «¾ÐvAgkÍÛ5»gBg/Ë¦]˜ò>gÒû%#¾Â?gUÝ=™@guX3]ß�|AgìÞ"�1pBgåÉèæð>gÃÒ0›#+Â?gÛ;~;›@g:PsŸúw�AgŒ–vI@vBgUŒ“ë>g¤�kW‰Á?gƒOM†�@g\#õ=F…Ag_Ÿ‚xlp~Bg	N˜nžè>gÞîß@-–Á?gg�ÁÕ–¡ @gX!òÐnìŠAg„V³^£…BgÏc¨5–å>góÁ�RÁ?gXÏæ¾f¢@g£�%ñ;»�Ag‡£Ö«m5ŽBgCŒ?'Lä>g›#*¸KÂ?gà3ÀKÕ¥@ga2G}‰L–Agâýpïœ–Bg*ÌºôSŸè¾g¾á9 0LÂ?gøu�ö†¨@g‰-ª $œAg²økMÃ†—Âg¬?�®7ö¾gÖ&>0èÂ?gNç:x¬@g+s?É¨X¢Ag%˜p�‘Âg»Õ"ê•¿g‹X„	‡Ä?gØV–ùb\±@g`Ëo‚"©Agîf�ü!´yÂgµýQ¼û
?g¤	Û~bŒÄ?g~­ÂéŽ…³@g zó@ª¿¯AgÍ…}s ŒBgué£fó>gò"~(#ÆÃ?gëºÀ4Jµ@g`Æ%T¯F³AgÑºDbì¦Bg$€•›uœ¿gz#â(g Â?gY ¢”µ@g ®ýqÖ$¶Ag6a¤ãJŽÂgI]qÛ7iý>gw»–8ñßÀ?gŠSfv¹¶@g6v_Ôn1ºAg~†j3è BrF   r   )Zdtype)gÀídËM�ã?gÆmÑUüq @r&   r&   r&   g|³%íãð?)r   rk   r   ro   Zfloat64r   r   )r	   rv   r/   Zsolr0   r
   r
   r   Útest_nnls_gh20302£   s    ÿ € ë zTestNNLS.test_nnls_gh20302N)Ú__name__Ú
__module__Ú__qualname__r   r   r1   r4   r8   r|   r§   r©   r
   r
   r
   r   r      s   	:;r   )
Únumpyr   Znumpy.testingr   Zpytestr   r6   Zscipy.optimizer   r   r
   r
   r
   r   Ú<module>   s   