L i(`dZddlmZmZmZmZddlmZddlZddl Z ddl Z ddl m Z mZmZmZGddZGdd Zd Zy) z# Unit test for SLSQP optimization. )assert_assert_array_almost_equalassert_allclose assert_equal)raisesN) fmin_slsqpminimizeBoundsNonlinearConstraintceZdZdZdZdZy) MyCallBackzJpass a custom callback function This makes sure it's being used. c d|_d|_y)NFr been_calledncallsselfs e/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/scipy/optimize/tests/test_slsqp.py__init__zMyCallBack.__init__s  c<d|_|xjdz c_y)NTrrxs r__call__zMyCallBack.__call__s q rN)__name__ __module__ __qualname____doc__rrrrr r srr ceZdZdZdZdC C NC N 3 CEEAq6 * +rc t|jddg|jddd|jdd|j}t |d|d t |jd d gy) NrUrHrWrVrprqr5rZrYrsr[r\r]r)r r,r5r=r%rrrrcs rtest_minimize_equality_givenz&TestSLSQP.test_minimize_equality_givensatxx$$((%G,0 ,4$6#yy * II/1v&rc t|jddgd|jdd|jd|jd|j }t |d|d t|jd d gy NrUrHrWrVrprrr,rYr5rZr5rYrsr[r\r]r r r,r5r=r@r%rrrrcs rtest_minimize_equality_given2z'TestSLSQP.test_minimize_equality_given2sotxx$W88',0+/<<,4+/+<+<$> $yy * II/1v&rc t|jddgd|jdd|jd|jd|j }t |d|d t|jd d gyry) r r,r5rCrFr%rrrrcs r(test_minimize_equality_given_cons_scalarz2TestSLSQP.test_minimize_equality_given_cons_scalarsrtxx$W88',0+/+>+>,4+/+C+C$E $yy * II/1v&rc t|jddgd|jdd|jdd|j}t |d|d t |jd d gd y)NrUrHrWrVineqrqr{r\r]r(rMbP?atol)r r,r5rIr%rrrrcs rtest_minimize_inequality_givenz(TestSLSQP.test_minimize_inequality_givensftxx$W88(,2+/==,4$6 $yy * II/1vD1rc t|jddg|jddd|j|jd|j }t |d|d t|jd d gy) NrUrHrWrVr)rrr,r5rvr\r]r(r) r r,r5rNrRr%rrrrcs r1test_minimize_inequality_given_vector_constraintsz;TestSLSQP.test_minimize_inequality_given_vector_constraintssmtxx$$((%G,2+/>>+/+>+>$@ $yy * II/1v&rcd}d}t|ddg}tjddg}tddgddg}t ||d || y) Ncd|dcxkrdkrnJ|d|dcxkr dksJ|J||ddz|dzS)Nrrrir rs rcz5TestSLSQP.test_minimize_bounded_constraint..csY!>> 7a 74a1Q4n1n 7a 74n 7a 74Q43;1% %rcd|dcxkrdkrnJ|d|dcxkr dksJ|J||ddz |ddzzSNrrr(r rs rfz5TestSLSQP.test_minimize_bounded_constraint..fs_!>> 7a 74a1Q4n1n 7a 74n 7a 74aDAI:! ) )rrg??rigrHrWrZrjrs)r r0rMr r )rrrcnsx0bnds r test_minimize_bounded_constraintz*TestSLSQP.test_minimize_bounded_constraintsU  & *#1a-. ZZc #b"XSz*BwsDrc t|jddgd|jdddgd|jd|jd|j }t |d |d t|jd d gd t d|jdcxkxrdknct d|jdcxkxr d kycy)NrUrHrWrV皙rHr?皙?rprz)rZr5rYrjrsr[r\r]rrrrrrr?r|rcs r#test_minimize_bound_equality_given2z-TestSLSQP.test_minimize_bound_equality_given2stxx$W88()95,0+/<<,4+/+<+<$> $yy* II/Sz5a%A%&ceeAh%#%&%&rct|jddgddd}|\}}}}}t|dk(|t|ddgy)NrUrHrVrr)rYiprint full_outputr()rr,rrrr`rfxitsimodesmodes rtest_unbounded_approximatedz%TestSLSQP.test_unbounded_approximatedsKD#;X"#16#& 2sE5 E"!!aV,rct|jddgd|jdd}|\}}}}}t|dk(|t |ddgy)NrUrHrVrr)rYfprimerrr()rr,r5rrrs rtest_unbounded_givenzTestSLSQP.test_unbounded_givensTD#;X"&((Q'(*$' 2sE5 E"!!aV,rct|jddgd|jgdd}|\}}}}}t|dk(|t |ddgy)NrUrHrVrr)rYeqconsrr)rr,r=rrrs rtest_equality_approximatedz$TestSLSQP.test_equality_approximatedsV4*7#'<<."#16$' 2sE5 E"!!aV,rc t|jddg|jd|jgdd}|\}}}}}t |dk(|t |ddgy)NrUrHrVrr)rrYrrr)rr,r5r=rrrs rtest_equality_givenzTestSLSQP.test_equality_givens]D#; $w#'<<.1'(*$' 2sE5 E"!!aV,rc t|jddg|jd|j|jdd}|\}}}}}t |dk(|t |ddgy)NrUrHrVrr)rrYf_eqcons fprime_eqconsrrrr,r5r=r@rrrs rtest_equality_given2zTestSLSQP.test_equality_given2seD#; $w$(LL)-):):"#'( * $' 2sE5 E"!!aV,rc t|jddg|jd|jgdd}|\}}}}}t |dk(|t |ddgd y) NrUrHrVrr)rrYieqconsrrr(decimal)rr,r5rIrrrs rtest_inequality_givenzTestSLSQP.test_inequality_given's_D#; $x$(MM?"#16$' 2sE5 E"!!aVQ7rc Lt|jddg|jdddg|j|jdd }|\}}}}}t |dk(|t |d d gd t d |dcxkxrdknct d |dcxkxr d kycy)NrUrHrVrrrr)rrYrjrrrrrrrrr?rrs rtest_bound_equality_given2z$TestSLSQP.test_bound_equality_given21sD#; $x#-y"9$(LL)-):):"#1 6 $' 2sE5 E"!!c3Z;!!!"ad!c!"!"rctddgdgd}t|dgtddgdd }t|dgy) Nc |dzSNr(r zs rz3TestSLSQP.test_scalar_constraints..A Arg@c|ddz SNrrr rs rrz3TestSLSQP.test_scalar_constraints..Bs!A$(rr)rrrHc |dzSrr rs rrz3TestSLSQP.test_scalar_constraints..Frrc|ddz gSrr rs rrz3TestSLSQP.test_scalar_constraints..GsAaD1H:r) f_ieqconsr)rrrs rtest_scalar_constraintsz!TestSLSQP.test_scalar_constraints?sM ~t 23 ! "!bT* ~t!5 ! "!bT*rc,tddgddggdy)Nc|dzdz SNr(rr rs rrz/TestSLSQP.test_integer_bounds..MsQTAXrrrrjrrrs rtest_integer_boundszTestSLSQP.test_integer_boundsKs%sQF8AFrctj tjftjdgtjdgfg}tdddg|d}t |ddgy)Nr(rc8tj|dzdz Srr0sumrs rrz-TestSLSQP.test_array_bounds..Ts1q!1rrhrr)r0infr1rr)rrjrs rtest_array_boundszTestSLSQP.test_array_boundsOs\FF7BFF#bhhsmRXXqc]%CD 1C:f !!!aV,rcjtt5tdgddddy#1swYyxYw)Nc ddgSrr rs rrz7TestSLSQP.test_obj_must_return_scalar..\s !Qrrr(r) assert_raises ValueErrorrrs rtest_obj_must_return_scalarz%TestSLSQP.test_obj_must_return_scalarXs,: & 4 ' 3 4 4 4s)2c&tdgddy)NcdgSNrr rs rrz;TestSLSQP.test_obj_returns_scalar_in_list..bsaSrrr)rrrs rtest_obj_returns_scalar_in_listz)TestSLSQP.test_obj_returns_scalar_in_list^s =)A6rct}t|jddgdd||j}t |d|dt |j t |j|dy) NrUrHrVrW)rYrZcallbackr[r\r]nit)r r r,r%rrrr)rrr`s r test_callbackzTestSLSQP.test_callbackds_<txx$8%$))MII/$$%X__c%j1rcddg}d}d}td|d|dd|dfd d }|j}t||dd t||dk\t|j|y)Nrrc|d|dzdz Srr rs rf1z5TestSLSQP.test_inconsistent_linearization..f1xQ4!A$;? "rc|ddzdz SNrr(rr rs rf2z5TestSLSQP.test_inconsistent_linearization..f2zsQ419q= rc$|ddz|ddzzSrr rs rrz;TestSLSQP.test_inconsistent_linearization..}adAg!a'rrprrr,rrNrrWrsrjrZg:0yE>rg:0yE)r rrrr\)rrrrsols rtest_inconsistent_linearizationz)TestSLSQP.test_inconsistent_linearizationms{F # ! ' !%R0!'r24'  EE1qt,1 S!rcpddg}td|ddddddfd d }t|j |y) Nrr(c$|ddz|ddzzSrr rs rrz0TestSLSQP.test_regression_5743..rrrpc|d|dzdz Srr rs rrz0TestSLSQP.test_regression_5743..sqtAaDy{rrrc|ddz S)Nrr(r rs rrz0TestSLSQP.test_regression_5743..s1arrrWr)r rr\)rrrs rtest_regression_5743zTestSLSQP.test_regression_5743sMF ' !%-BC!'/?@B'  CKK%rcnd}t|gdd}t|jjdk(y)NcT|ddz dzd|ddz dzzzd|ddz dzzzS)Nrrr(rir rs rfuncz$TestSLSQP.test_gh_6676..funcs?aD1Hq=1adQh]?2S!A$(Q5FF FrrrrrWrZ)r)r rr5rQ)rrrs r test_gh_6676zTestSLSQP.test_gh_6676s- GtYw7 %&rcdddtjdftjdffdtj fdfg}|D]5}tt5t |j ddg|d ddd7y#1swYBxYw) N)rr(r(r)rr)rrrr)rrrUrHrW)rjrZ)r0rrrr r,)r bounds_listrjs rtest_invalid_boundszTestSLSQP.test_invalid_boundss   ffa[2661+ &"&&\6 "  " OFz* OD#;vgN O O O O Os A88B cd}t|dgddg}t|jt|jddt|d gdd g}t|jt|jd dt|d gddg}t|jt|jddt|dgdd g}t|jt|jd dt|d gdd g}t|jt|jddt|dgdd g}t|jt|jddy)Nc|ddz dzSrr rs rrz)TestSLSQP.test_bounds_clipping..fsaD1Hq= r slsqprrZrjr绽|=r)r(Nr()r?rr rr\rr)rrrs rtest_bounds_clippingzTestSLSQP.test_bounds_clippings) !q2$w {C qu-q3% D qu-q3% D qu-q2$w {C qu-q4&'C qu-q2$wyA qu-rcd}dddg}dddg}ddddddg}t|dgd | }t|jt|jd d t|dgd | }t|jt|jdd t|dgd | }t|jt|jd d t|dgd | }t|jt|jdd t|dgd | }t|jt|jd d t|dgd | }t|jt|jd d y)Nc&|\}||zd|zz dzSrr rs rrz,TestSLSQP.test_infeasible_initial..fsBAQ319q= rrc d|z Srr rs rrz3TestSLSQP.test_infeasible_initial.. AErrc |dz Srr rs rrz3TestSLSQP.test_infeasible_initial..r rc d|z Srr rs rrz3TestSLSQP.test_infeasible_initial.. QUrc |dzSNrr rs rrz3TestSLSQP.test_infeasible_initial..rrrr)rZrsrrrrr(rr)rrcons_ucons_lcons_ulrs rtest_infeasible_initialz!TestSLSQP.test_infeasible_initialsP !"/:;!/:;"?;"?;=q2$wFC qu-q3%VD qu-q3%VD qu-q2$wFC qu-q4&gF qu-q2$wGD qu-rdicts)mode Compilersfortrannamez intel-llvmz7Runtime warning due to floating point issues, not logic)reasoncd}d}d}d}d}td|td|f}t||d|| }t|j y) Nc$d|dzd|dzzS)Nr?rr/rr rs rcostz6TestSLSQP.test_inconsistent_inequalities..costs!9q1Q4x' 'rc|d|dz dz SNrrr rs r ineqcons1z;TestSLSQP.test_inconsistent_inequalities..ineqcons1rrc|d|dz Srr rs r ineqcons2z;TestSLSQP.test_inconsistent_inequalities..ineqcons2sQ4!A$; r)r)r$r%rrrWr)dictr rr\)rrr!r#rrjconsr`s rtest_inconsistent_inequalitiesz(TestSLSQP.test_inconsistent_inequalitiessU  ( # #&i0$F 2RStRDQCKK rcd}tddgtjtjg}t|ddgd|}t |j t |jddgy)Nc$|ddz|ddzzSrr rs rrz)TestSLSQP.test_new_bounds_type..f sQ419qtqy( (rrrrr)r r0rr rr\rr)rrrjrs rtest_new_bounds_typezTestSLSQP.test_new_bounds_typesV )A 01q1a&@ 1v&rcFGdd}|}|jy)Nc$eZdZdZdZdZdZy)9TestSLSQP.test_nested_minimization..NestedProblemcd|_yr) F_outer_countrs rrzBTestSLSQP.test_nested_minimization..NestedProblem.__init__s %&"rc|xjdz c_|jdkDr tdt|jdd}t |j t |jddg|ddz|ddzz|ddzzS) Nriz(Nested minimization failed to terminate.)rr/rWrrr()r1 Exceptionr F_innerrr\rr)rr inner_ress rF_outerzATestSLSQP.test_nested_minimization..NestedProblem.F_outers""a'"%%,#$NOO$T\\6'J  ))* aV4tQw1q(1Q4722rc0|ddz dz|ddz dzzSrr rs rr4zATestSLSQP.test_nested_minimization..NestedProblem.F_inner s%!q1}!q1}44rct|jdd}t|jt |j gdy)N)r$r$r$rWrr)r r6rr\rr)r outer_ress rsolvez?TestSLSQP.test_nested_minimization..NestedProblem.solve#s0$T\\9WM  ))* Y7rN)rrrrr6r4r:r rr NestedProblemr/s ' 3 5 8rr;)r:)rr;problems rtest_nested_minimizationz"TestSLSQP.test_nested_minimizations 8 8, / rcd}d}d}d|d}d|d}t|ddgd||gd d g }tjj|jd tjj|j d dg|j sJy)Nc2tj|dSr)r0sqrtrs rr,z"TestSLSQP.test_gh1758..fun/s771Q4= rc$|dd|dzdzz S)r:rr(rrr rs rr=z&TestSLSQP.test_gh1758..f_eqcon2sQ41qt8/) )rc&|d|d dzdzz S)r:rrrr rs rf_eqcon2z'TestSLSQP.test_gh1758..f_eqcon26s Q4AaD519** *rrprg?rW)rr)rrD)rZrsrjg8r](k?gQUU?gc@?)r r0testingrr,rr\)rr,r=rCc1c2r`s r test_gh1758zTestSLSQP.test_gh1758+s ! * +7 +8 ,sQIg$&8Y4GI ""377O< ""355:y*AB{{{rc tjjdddddddf}d}d}gd}t||d ||d d d  }|jrJy)Nrrc |d |dz dz S)Nrrrr rs rrz'TestSLSQP.test_gh9640..Fs1Q4%!A$,2Brrc|d|dzdz S)Nrr(r rs rrz'TestSLSQP.test_gh9640..Gs!A$1+/r)r.r(rLrLcyrr rs rtargetz%TestSLSQP.test_gh9640..targetJsr)g51gУX{gP(rWFi')r$maxiter)rZrjrsr[)r0randomseedr r\)rr(bndsrNrr`s r test_gh9640zTestSLSQP.test_gh9640Dsh r(BC(ABD*  Kvr'$D',>@;;;rctjjdttjdgtjdgt j }tjj jj z tjj|zz}fd}t||d}|jsJy)Nrg?rHc|jk\jsJtjj |Sr7)lballr0linalgnorm)rrjs rrz7TestSLSQP.test_parameters_stay_within_bounds..f^s0N'') ))99>>!$ $rrWr) r0rPrQr r1lenrVubr r\)rn_inputsrrr`rjs @r"test_parameters_stay_within_boundsz,TestSLSQP.test_parameters_stay_within_boundsSs q#3%9vyy> XXfii699vyy#8ii&&x0#112 % q"WV<{{{rN)rH):rrrrr&r,r5r8r=r@rCrFrIrKrNrRrardrlrnrtrwr}rrrrrrrrrrrrrrrrrrrrrrrrpytestmarkxfailscipy show_configr)r,r=rHrSr]r rrr"r"sO $2 -4'#(6-#' +' %' +' ' ' 2 'E$'"---- -8 # +G-4 7 2"8 &' O.>!.F [[(u((g6{CINvV&'WY!Y!0'62 rr"ctjjd}|jddg}tjddd}dfd }|||y) Nl_x &C1im)sizerg@2cddgddggSrr )vweightss rmetricz?test_slsqp_segfault_wrong_workspace_computation..metricpsA1vrcfdfd}dfdddddf}tjtdtz gzgd}t||fd | }|S) Nc"|ddSr r )rirjrhs rmetric_az[test_slsqp_segfault_wrong_workspace_computation..efficient_metric..metric_at!W%a(+ +rc"||ddSrr )rirhrjs rmetric_bz[test_slsqp_segfault_wrong_workspace_computation..efficient_metric..metric_bwrnrrpc|z Sr7r )rrmrNs rrz[test_slsqp_segfault_wrong_workspace_computation..efficient_metric..zsx{V7Krrc2tj|dz Srrrs rrz[test_slsqp_segfault_wrong_workspace_computation..efficient_metric..{srvvay1}rrHrrW)rYrZrs)r0r1rZr )rhrNrprsriresultrmrjs`` @refficient_metriczItest_slsqp_segfault_wrong_workspace_computation..efficient_metricsss , ,!%-KL $-DEG ((CFBs1vI;./03(! !t!(&1 3  r)r0rP default_rnguniformlinspace)rngrrNrtrjs @r/test_slsqp_segfault_wrong_workspace_computationrygsV ))   0 1C "S "A [[c2 &F"Qr)r numpy.testingrrrrr^rrnumpyr0rascipy.optimizerr r r r r"ryr rrr}sB::*  LL  H H V r