
    Џkh$                         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y)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        rm|dk\  s
J d|        |dk\  s
J d|        t        |      dk  s
J d	|        t	        t        j
                  |
            s
J d
|        |	dkD  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   j                         }|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        k7  r|#} na||k  s||   ||   k  s||   ||   c||<   ||<   ||   ||   c||<   ||<   |dd||gf   |dd||gf<   ||dd|f<   |	 ||d|dz   f<   0 t        j&                  |      }$|j	                         rt)        |ddd|f         }t        ry|$|k  s
J d|        |j                  |dz   k(  s
J d|        |j*                  ||dz   fk(  s
J d|        t        j,                  |      j/                         s#t        j0                  |      j/                         r
J d|        |j                  |dz   k(  rJt/        |dk        s<t/        t        j,                  |            st/        t        j2                  |            r
J d|        |j                  |dz   k(  r<t/        t        j,                  |            st/        t        j2                  |            r
J d|        |j*                  ||dz   fk(  s
J d|        t        j
                  |      j	                         s
J d|        t	        t        j                  t        |ddd|f         d      dkD        s
J d|        |j*                  ||fk(  s
J d|        t        j
                  |      j	                         s
J d|        t        j4                  |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/teggl/fontify/venv/lib/python3.12/site-packages/scipy/_lib/pyprima/cobyla/initialize.pyinitxfcrS      s9    FF ggg&O".RWWT]AF&Gwwr{H !#7wvh%77#1}0x00}6{aP#Gx!PP 2;;r?#=}VH%==#z1[11z D &&8A:
&
/CC8 66(f$D !40I 88HQJ')D88HQJ')DXX
34w>F 8a<  &#8!!#6AAFAAaDFND GT4@IAvryyF+, 	V%vq&!QvN 	!UAueUFGL 	!Qq!tQ !E4GQGl"D x<DGd8n4&*8nd1g#DGT(^&*8nd1g#DGT(^'-a(A.>'?F1q(m#$ C8"7C4AaC4LM&#P 
		)	$B}}3q)8)|$% V|5}VH55|~~A-Y1PQWPX/YY- ||A>>cBZ[aZb@cc>HHV$((*bkk&.A.E.E.GvLmntmuJvvHyyHqL(#dQh-3rxxPT~CVZ]^`^i^ijn^oZp  	N  vE  FL  EM  tN  	Nq yyHqL(#bhhtn2ER[[Y]M^I_  	`  eW  X^  W_  c`  	``yyXx!|44W8Nvh6WW4{{3##%@x'@@%266#c!YhY,/0q9A=>jBabhai@jj>zzh11S5J6(3SS1{{4 $$&B/&(BB&{{3q)8)|,t3RVVH5ECVYZbefobp  	V  uH  IK  HL  LM  NT  MU  sV  	VpfdCtR==    c                 r	   | 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  j                         rJ t        j                  |      |dz   k(  r:t        |dt        j
                  |      z  t        j                  |      z  k        rJ t        j                  |      |dz   k(  r4t        t        j
                  |      t        j                  |      z        rJ t        j                  |d      |k(  rt        j                  |d      |dz   k(  sJ t        j                  |      j                         sJ t        t        j                  t        |ddd|f         d      dkD        sJ t        j                  |      |dz   k(  sJ d}t        |dz         D ]R  }||   s	||k  r|dd|f   |dd|f   z   }n	|dd|f   }t        ||   ||||   ||||	|
| dd|f   |      \  }}}	}
}T t        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  j                         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         j                         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_      ss    ll1oOyy|H%jG !###1}}!||www"o5"'''1:MQX:XXXwwu~(((wwua H,1Bg1MMMwwu~(((wwvq!_49KxZ[|9[[[HHV$r{{6'::??AAAwwt}1,SBHHTN@RUWU`U`aeUf@f9f5gggwwt}1,S$"++VZJ[9[5\\\wwsA(*rwwsA(Q,/NNN{{3##%%%266#c!YhY,/0q9A=>>>wwy!X\111 E8A: RQ<8|1IAxK 001I2:47D'SWXYSZ\]_dfkmrty  |B  CD  FG  CG  |H  JQ  3R/E5%R www"o5"'''1:MQX:XXXHHWQY/02;;wq&5&y?Q3RRWWYYYwwu~(((uVe}q288E&5M+B'BR[[QVW]X]Q^E_'__```wwua H,1Bg1MMMHHU1fuf9-.33555wwu~(((rxxfu.U6E]1KK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      s4    / . ' & %  ! % }>@ArT   