
    Ti$                         d Z ddlmZ ddlmZmZ ddlmZ ddlm	Z	 ddl
mZ ddlmZ ddlmZ dd	lmZ d
dlZd Zd ZdS )z
This module contains subroutines for initialization.

Translated from Zaikun Zhang's modern-Fortran reference implementation in PRIMA.

Dedicated to late Professor M. J. D. Powell FRS (1936--2015).

Python translation by Nickolai Belakovski.
   )checkbreak_con)	DEBUGGINGREALMAX)INFO_DEFAULT)evaluate)savehist)inv)fmsg)savefilt    Nc                     d}d}t          j        |          }|t          j        |          nd}||z
  }t          j        |
          }t          r|dk    sJ d|             |dk    sJ d|             t          |          dk    sJ d	|             t	          t          j        |
                    sJ d
|             |	dk    sJ d|             t          }t          j        ||dz             |	z  }|
|dd|f<   t          j        |          |	z  }t          j        |dz   t                    }t          j        |dz             t          z   }t          j        |dz             t          z   }t          j        ||dz   f          t          z   }t          |dz             D ]]}|dd|f                                         }|dk    r|}|} |}!n+|dz
  }||xx         |	z  cc<   t          | ||||          \  } }!t          j        t          j        d|!                    }"t!          |d|||	| ||"|!	  	         t#          |||| ||"||!|	  	         d||<   | ||<   |!|dd|f<   |"||<   t%          |||"|| ||          }#|#t          k    r|#} nu||k     rm||         ||         k     r[||         ||         c||<   ||<   ||         ||         c||<   ||<   |dd||gf         |dd||gf<   ||dd|f<   |	 ||d|dz   f<   _t          j        |          }$|                                rt)          |ddd|f                   }t          r|$|k    sJ d|             |j        |dz   k    sJ d|             |j        ||dz   fk    sJ d|             t          j        |                                          s&t          j        |                                          rJ d|             |j        |dz   k    rUt/          |dk               sBt/          t          j        |                    s!t/          t          j        |                    rJ d|             |j        |dz   k    rBt/          t          j        |                    s!t/          t          j        |                    rJ d|             |j        ||dz   fk    sJ d|             t          j        |                                          sJ d|             t	          t          j        t          |ddd|f                   d          dk              sJ d|             |j        ||fk    sJ d|             t          j        |                                          sJ d|             t          j        |ddd|f         |z  t          j        |          dd          st	          |          rJ dd d|             |||||||$|fS ) ze
    This subroutine does the initialization concerning X, function values, and
    constraints.
    COBYLA
INITIALIZENr   zM >= 0    zN >= 1    z$IPRINT is 0, 1, -1, 2, -2, 3, or -3 zX0 is finite zRHOBEG > 0 )dtypeInitializationTzNF <= MAXFUN zEVALUATED.size == Num_vars + 1 zCONMAT.shape = [M, N+1] z!CONMAT does not contain NaN/-Inf zOCVAL.shape == Num_vars+1 and CVAL does not contain negative values or NaN/+Inf z2FVAL.shape == Num_vars+1 and FVAL is not NaN/+Inf zSIM.shape == [N, N+1] zSIM is finite axiszSIM(:, 1:N) has no zero column zSIMI.shape == [N, N] zSIMI is finite g?)rtolatolzSIMI = SIM(:, 1:N)^ )npsizer   absallisfiniter   eyezerosboolr   rangecopyr   maxappendr
   r   r   count_nonzeror	   shapeisnananyisneginfisposinfallclose)%calcfciprintmaxfunconstr0amatbvecctolf0ftargetrhobegx0xhistfhistchistconhistmaxhistsolversrnamenum_constraintsm_lconm_nlconnum_varsinfosimsimi	evaluatedfvalcvalconmatkxjfconstrcstrvsubinfonfs%                                        |/var/www/development/aibuddy-work/election-extract/venv/lib/python3.11/site-packages/scipy/_lib/pyprima/cobyla/initialize.pyinitxfcrS      sU    FF gg&&O".RWT]]]AF&Gwr{{H  2!###%7v%7%7###1}}}000}}}6{{a!P!P!P 2;r??##==%=V%=%====zzz111zzz D &8A:
&
&
/CC8 6(f$D !4000I 8HQJ')D8HQJ')DX
344w>F 8a<   &# &#8!!##66AAFFAAaDDDFNDDD GT4@@IAvryF++,, 	V%vq&!QvNNN 	!UAueUFGLLL 	!Qqqq!tQ !E4GQGGl""DE x<<DGd8n44&*8nd1g#DGT(^&*8nd1g#DGT(^'-aaa(A.>'?F111q(m#$ C8"7C4AaC4L		)	$	$B}} &3qqq)8)|$%%  VV|||5V55|||~A---/YQW/Y/Y--- |A>>>>@c[a@c@c>>>HV$$((**vbk&.A.A.E.E.G.GvvJvntJvJvvvvyHqL((#dQh--(3rxPT~~CVCV(Z]^`^ijn^o^oZpZp((  tN  FL  tN  tN((( yHqL((#bhtnn2E2E(R[Y]M^M^I_I_((  c`  X^  c`  c`(((yXx!|44446Wv6W6W444{3##%%@@'@'@'@@@@26#c!!!YhY,/00q999A=>>jj@jbh@j@jjjjzh11113S63S3S111{4  $$&&BB(B&(B(BBBB{3qqq)8)|,t3RVH5E5ECVYZZZ  	Vbefobpbp  	V  	V  sV  IK  sV  sV  NT  sV  sV  	V  	V  	VfdCtR==    c                 6
   | j         d         }|j         d         }t          |	          }t          r|dk    sJ |dk    sJ |dk    sJ t          j        |d          |k    rt          j        |d          |k    sJ t          j        |          |k    sJ t          j        |
d          |k    rt          j        |
d          |k    sJ t          j        |	          |k    sJ t          j        | d          |k    rt          j        | d          |dz   k    sJ t          j        |           t          j        |           z                                  rJ t          j        |          |dz   k    r=t          |dt          j        |          z  t          j        |          z  k               rJ t          j        |          |dz   k    r6t          t          j        |          t          j        |          z            rJ t          j        |d          |k    rt          j        |d          |dz   k    sJ t          j	        |          
                                sJ t          t          j        t          |ddd|f                   d          dk              sJ t          j        |          |dz   k    sJ d}t          |dz             D ]k}||         ra||k     r|dd|f         |dd|f         z   }n|dd|f         }t          ||         ||||         ||||	|
| dd|f         |          \  }}}	}
}lt          r||k    sJ t          j        |d          |k    rt          j        |d          |k    sJ t          j        |ddd|f                   t          j        |ddd|f                   z                                  rJ t          j        |          |k    sJ t          |d|         dt          j        |d|                   z  t          j        |d|                   z  k               rJ t          j        |
d          |k    rt          j        |
d          |k    sJ t          j        |
ddd|f                                                   rJ t          j        |	          |k    sJ t          t          j        |	d|                   t          j        |	d|                   z            rJ |S )ak  
    This function initializes the filter (XFILT, etc) that will be used when selecting
    x at the end of the solver.
    N.B.:
    1. Why not initialize the filters using XHIST, etc? Because the history is empty if
    the user chooses not to output it.
    2. We decouple INITXFC and INITFILT so that it is easier to parallelize the former
    if needed.
    r   r   Nr   )r'   lenr   r   r   r(   r*   r)   r+   r   r   r$   r   r"   r   )rI   r3   cweightrH   rG   rD   rF   cfiltconfiltffiltxfiltr?   rB   maxfiltnfiltirK   s                    rR   initfiltr_      sY    l1oOy|H%jjG  2!####1}}}}!||||ww""o55"''1:M:MQX:X:X:X:Xwu~~((((wua  H,,1B1Bg1M1M1M1Mwu~~((((wvq!!_449K9KxZ[|9[9[9[9[HV$$r{6':'::??AAAAAwt}}1,,SBHTNN@RUWU`aeUfUf@f9f5g5g,,,wt}}1,,S$"+VZJ[J[9[5\5\,,,wsA(**rwsA(Q,/N/N/N/N{3##%%%%%26#c!!!YhY,/00q999A=>>>>>wy!!X\1111 E8A: R RQ< 	R8||1IAAAxK 001I2:47D'SWXYSZ\]_dfkmrty  |B  CD  CD  CD  FG  CG  |H  JQ  3R  3R/E5%  
Mww""o55"''1:M:MQX:X:X:X:XHWQQQY/002;wqqq&5&y?Q3R3RRWWYYYYYwu~~((((uVeV}q28E&5&M+B+B'BR[QVW]X]W]Q^E_E_'__`````wua  H,,1B1Bg1M1M1M1MHU111fuf9-..3355555wu~~((((rxfuf..U6E6]1K1KKLLLLLLrT   )__doc__common.checkbreakr   common.constsr   r   common.infosr   common.evaluater   common.historyr   common.linalgr	   common.messager
   common.selectxr   numpyr   rS   r_    rT   rR   <module>rk      s     / . . . . . . . . . . . . . ' ' ' ' ' ' & & & & & & % % % % % %       ! ! ! ! ! ! % % % % % %    }> }> }>@A A A A ArT   