ó
'DáWc           @   s›   d  d l  m Z d  d l Td  d l Td  d l m Z d  d l m Z d  d l m	 Z	 d  d l
 Z d  d l Z d  d l Z d  d l Z d d	 d „  ƒ  YZ d S(
   iÿÿÿÿ(   t
   Parametres(   t   *(   t   Marche_travail(   t   Marche_biens(   t   MatriceNt	   Programmec           B   sé   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z	 d „  Z
 d	 „  Z d
 „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z RS(   c         C   sõ   g  } xâ t  | j ƒ D]Ñ } d } d } x< t  | j ƒ D]+ }	 | j | |	 d k r8 | d 7} Pq8 q8 WxB t  | j ƒ D]1 }	 t }
 | j | |	 d k rw | d 7} Pqw qw W| d k rØ | d k rØ | j | | ƒ q | d 7} d GHq W| | f S(   Ni    i   s&   Un TA elimine dans supprimer agents TA(   t   ranget   mt   nt   datat   Truet   append(   t   selft
   matrice_TEt
   matrice_AVt   liste_agents_TAt   nb_TA_eliminest   liste_agents_TA_tmpt   it   compteur_TEt   compteur_AVt   jt   visited(    (    se   C:\Users\Léa\Desktop\Stage Genève\Genève - A conserver\Simulation_120_30\Systeme_initial\programme.pyt   supprimer_agents_TA   s$    


	c         C   sP  g  } g  }	 g  }
 g  } g  } g  } xr t  t | ƒ ƒ D]^ } | | j d k  r„ |
 j | | ƒ | | | j 7} | d 7} d GHq7 | j | | ƒ q7 Wx t  t | ƒ ƒ D]{ } | | j d k  rô | j | | ƒ | | | j 7} | d 7} q¬ |	 j | | ƒ | j | | ƒ | j | | ƒ q¬ W| } | } | | |	 | | | | f S(   Ni    i   s!   Un TA elimine dans faire faillite(   R   t   lent   cashR   (   R   t   dette_totaleR   t   liste_agents_EVt   liste_salaires_effectifst   liste_prix_indicatifsR   t   nb_EV_eliminest   new_liste_agents_TAt   new_liste_agents_EVt   TA_en_faillitet   EV_en_faillitet   new_liste_salaires_effectifst   new_liste_prix_indicatifsR   R   (    (    se   C:\Users\Léa\Desktop\Stage Genève\Genève - A conserver\Simulation_120_30\Systeme_initial\programme.pyt   faire_faillite-   s0    
c         C   s  t  | ƒ } t  | ƒ } t | | ƒ } g  }	 xˆ t t  | ƒ ƒ D]t }
 | |
 | k r@ g  } xE t t  | ƒ ƒ D]1 } | | | k ro | j | j |
 | ƒ qo qo W|	 j | ƒ q@ q@ WxJ t | j ƒ D]9 } x0 t | j ƒ D] } |	 | | | j | | <qÞ WqÈ W| } | S(   N(   R   R   R   R   R	   R   R   (   R   R   R   R   R   R    R   R   t   new_matrice_TEt	   bloc_datat   at
   ligne_datat   bR   R   (    (    se   C:\Users\Léa\Desktop\Stage Genève\Genève - A conserver\Simulation_120_30\Systeme_initial\programme.pyt   reformer_matrice_TEN   s     !c         C   s  t  | ƒ } t  | ƒ } t | | ƒ } g  }	 xˆ t t  | ƒ ƒ D]t }
 | |
 | k r@ g  } xE t t  | ƒ ƒ D]1 } | | | k ro | j | j |
 | ƒ qo qo W|	 j | ƒ q@ q@ WxP t t  | ƒ ƒ D]< } x3 t t  | ƒ ƒ D] } |	 | | | j | | <qä WqË W| } | S(   N(   R   R   R   R   R	   (   R   R   R   R   R   R    R   R   t   new_matrice_AVR'   R(   R)   R*   R   R   (    (    se   C:\Users\Léa\Desktop\Stage Genève\Genève - A conserver\Simulation_120_30\Systeme_initial\programme.pyt   reformer_matrice_AVd   s     !c         C   sp   |  j  | | | | ƒ \ } } | } |  j | | | | | ƒ } |  j | | | | | ƒ } | } | | | | f S(   N(   R   R+   R-   (   R   R   R   R   R   R   R   R   (    (    se   C:\Users\Léa\Desktop\Stage Genève\Genève - A conserver\Simulation_120_30\Systeme_initial\programme.pyt   maj_matrices_initialisationz   s    c
      	   C   sµ   |  j  | | | | ƒ \ }
 } |  j | |
 | | | | |	 ƒ \ } } } } } } }	 |  j | | | | | ƒ } |  j | | | | | ƒ } | } | } | | | | | | | | |	 f	 S(   N(   R   R%   R+   R-   (   R   R   R   R   R   R   R   R   R   R   R   R   R    (    (    se   C:\Users\Léa\Desktop\Stage Genève\Genève - A conserver\Simulation_120_30\Systeme_initial\programme.pyt   maj_matrices†   s    6c         C   sf   d } x+ t  t | ƒ ƒ D] } | | | j 7} q Wx+ t  t | ƒ ƒ D] } | | | j 7} qG W| S(   Ni    (   R   R   R   (   R   R   R   t   sommeR   R   (    (    se   C:\Users\Léa\Desktop\Stage Genève\Genève - A conserver\Simulation_120_30\Systeme_initial\programme.pyt   calculer_cash_total“   s    c         C   sp   t  j t d d ƒ ƒ } g  } | j d ƒ x1 t t | ƒ ƒ D] } | j d t | ƒ ƒ q> W| j | ƒ | S(   Ns   output_heures.csvt   wbt	   Iterations   Total heures agent EV(   t   csvt   writert   openR   R   R   t   strt   writerow(   R   t   liste_agents_EV_initt   myfile_heurest   donneesR   (    (    se   C:\Users\Léa\Desktop\Stage Genève\Genève - A conserver\Simulation_120_30\Systeme_initial\programme.pyt   initialiser_fichier_heuresŸ   s    c   	      C   s†   g  } | j  | ƒ d } xY t t | ƒ ƒ D]E } | | | k rd | d 7} | j  | | d ƒ q, | j  d ƒ q, W| j | ƒ d  S(   Ni    i   iÿÿÿÿ(   R   R   R   R8   (	   R   R:   t	   iterationR9   R   t   liste_total_heuresR;   t   curseurR   (    (    se   C:\Users\Léa\Desktop\Stage Genève\Genève - A conserver\Simulation_120_30\Systeme_initial\programme.pyt   collecter_donnees_heures©   s    
c         C   s±   t  j t d d ƒ ƒ } g  } | j d ƒ x1 t t | ƒ ƒ D] } | j d t | ƒ ƒ q> Wx1 t t | ƒ ƒ D] } | j d t | ƒ ƒ qr W| j d ƒ | j | ƒ | S(   Ns   output_cash.csvR2   R3   s   Agent TAs   Agent EVs   Cash total systeme(   R4   R5   R6   R   R   R   R7   R8   (   R   t   liste_agents_TA_initR9   t   myfile_cashR;   R   R   (    (    se   C:\Users\Léa\Desktop\Stage Genève\Genève - A conserver\Simulation_120_30\Systeme_initial\programme.pyt   initialiser_fichier_cash¶   s    c
         C   sõ   g  }
 |
 j  | ƒ d } d } xY t t | ƒ ƒ D]E } | | | k rj | d 7} |
 j  | | d ƒ q2 |
 j  d ƒ q2 WxY t t | ƒ ƒ D]E } | | | k rÆ | d 7} |
 j  | | d ƒ qŽ |
 j  d ƒ qŽ W|
 j  |	 ƒ | j |
 ƒ d  S(   Ni    i   iigÿ(   R   R   R   R8   (   R   RB   R=   RA   R   R9   R   t   liste_cash_agents_TAt   liste_cash_agents_EVt   cash_total_systemeR;   t
   curseur_TAt
   curseur_EVR   R   (    (    se   C:\Users\Léa\Desktop\Stage Genève\Genève - A conserver\Simulation_120_30\Systeme_initial\programme.pyt   collecter_donnees_cashÃ   s     

c         C   sp   t  j t d d ƒ ƒ } g  } | j d ƒ x1 t t | ƒ ƒ D] } | j d t | ƒ ƒ q> W| j | ƒ | S(   Ns   output_salaires.csvR2   R3   s   Salaire effectifs agent EV(   R4   R5   R6   R   R   R   R7   R8   (   R   R9   t   myfile_salairesR;   R   (    (    se   C:\Users\Léa\Desktop\Stage Genève\Genève - A conserver\Simulation_120_30\Systeme_initial\programme.pyt   initialiser_fichier_salairesØ   s    c   	      C   s†   g  } | j  | ƒ d } xY t t | ƒ ƒ D]E } | | | k rd | d 7} | j  | | d ƒ q, | j  d ƒ q, W| j | ƒ d  S(   Ni    i   iÿÿÿÿ(   R   R   R   R8   (	   R   RJ   R=   R9   R   R   R;   R?   R   (    (    se   C:\Users\Léa\Desktop\Stage Genève\Genève - A conserver\Simulation_120_30\Systeme_initial\programme.pyt   collecter_donnees_salairesâ   s    
c         C   sp   t  j t d d ƒ ƒ } g  } | j d ƒ x1 t t | ƒ ƒ D] } | j d t | ƒ ƒ q> W| j | ƒ | S(   Ns   output_prix.csvR2   R3   s   Prix indic agent EV(   R4   R5   R6   R   R   R   R7   R8   (   R   R9   t   myfile_prixR;   R   (    (    se   C:\Users\Léa\Desktop\Stage Genève\Genève - A conserver\Simulation_120_30\Systeme_initial\programme.pyt   initialiser_fichier_prixï   s    c   	      C   s†   g  } | j  | ƒ d } xY t t | ƒ ƒ D]E } | | | k rd | d 7} | j  | | d ƒ q, | j  d ƒ q, W| j | ƒ d  S(   Ni    i   iÿÿÿÿ(   R   R   R   R8   (	   R   RM   R=   R9   R   R   R;   R?   R   (    (    se   C:\Users\Léa\Desktop\Stage Genève\Genève - A conserver\Simulation_120_30\Systeme_initial\programme.pyt   collecter_donnees_prixù   s    
c         C   s   t  j t d d ƒ ƒ } | S(   Ns   output_temps.csvR2   (   R4   R5   R6   (   R   t   myfile_temps(    (    se   C:\Users\Léa\Desktop\Stage Genève\Genève - A conserver\Simulation_120_30\Systeme_initial\programme.pyt   initialiser_fichier_temps  s    c         C   s$   g  } | j  | ƒ | j | ƒ d  S(   N(   R   R8   (   R   RP   t   tempsR;   (    (    se   C:\Users\Léa\Desktop\Stage Genève\Genève - A conserver\Simulation_120_30\Systeme_initial\programme.pyt   collecter_donnees_temps  s    c         C   sH   d } x+ t  t | ƒ ƒ D] } | | | j 7} q W| t | ƒ } | S(   Ni    (   R   R   R   (   R   R   R0   R(   t   moyenne_cash_TA(    (    se   C:\Users\Léa\Desktop\Stage Genève\Genève - A conserver\Simulation_120_30\Systeme_initial\programme.pyRT     s
    c         C   sH   d } x+ t  t | ƒ ƒ D] } | | | j 7} q W| t | ƒ } | S(   Ni    (   R   R   R   (   R   R   R0   R(   t   moyenne_cash_EV(    (    se   C:\Users\Léa\Desktop\Stage Genève\Genève - A conserver\Simulation_120_30\Systeme_initial\programme.pyRU     s
    c         C   sè  t  j t d d ƒ ƒ } g  } | j d ƒ x+ t t | ƒ ƒ D] } | j | | ƒ q> W| j | ƒ g  } | j d ƒ x+ t t | ƒ ƒ D] } | j | | ƒ qŒ W| j | ƒ g  } | j d ƒ x+ t t | ƒ ƒ D] } | j |	 | ƒ qÚ W| j | ƒ g  } | j d ƒ x+ t t | ƒ ƒ D] } | j |
 | ƒ q(W| j | ƒ g  } | j d ƒ x+ t t | ƒ ƒ D] } | j | | ƒ qvW| j | ƒ g  } | j d ƒ | j | ƒ | j | ƒ g  } | j d	 ƒ | j | ƒ | j | ƒ xs t | j ƒ D]b } g  } | j d
 t | ƒ ƒ x/ t | j	 ƒ D] } | j | j
 | | ƒ q;W| j | ƒ qWxs t | j ƒ D]b } g  } | j d t | ƒ ƒ x/ t | j	 ƒ D] } | j | j
 | | ƒ q±W| j | ƒ q~Wd  S(   Ns   input_migrants.csvR2   s   Cash agents TAs   Cash agents EVs   Salaires proposes par EVs   Prix proposes par EVs   Liste benefices entreprisess   Cash total systemes   Dette totales   Mat TE Connexions du TA s   Mat AV Connexions du TA (   R4   R5   R6   R   R   R   R8   R   R7   R   R	   (   R   R   R   R   R   RD   RE   R   RF   R   R   t   liste_benefices_entreprisest   myfile_migrantsR;   R   R   (    (    se   C:\Users\Léa\Desktop\Stage Genève\Genève - A conserver\Simulation_120_30\Systeme_initial\programme.pyt   creer_input_migrants!  s\    c         C   s4   g  } x' t  t | ƒ ƒ D] } | j d ƒ q W| S(   Ni    (   R   R   R   (   R   R   t#   liste_salaires_effectifs_precedenteR   (    (    se   C:\Users\Léa\Desktop\Stage Genève\Genève - A conserver\Simulation_120_30\Systeme_initial\programme.pyt/   initialiser_liste_salaires_effectifs_precedente\  s    c         C   s8   g  } x+ t  t | ƒ ƒ D] } | j | | ƒ q W| S(   N(   R   R   R   (   R   R   RY   R   (    (    se   C:\Users\Léa\Desktop\Stage Genève\Genève - A conserver\Simulation_120_30\Systeme_initial\programme.pyt'   maj_liste_salaires_effectifs_precedentec  s    c         C   s4   g  } x' t  t | ƒ ƒ D] } | j d ƒ q W| S(   Ni    (   R   R   R   (   R   R   t    liste_prix_indicatifs_precedenteR   (    (    se   C:\Users\Léa\Desktop\Stage Genève\Genève - A conserver\Simulation_120_30\Systeme_initial\programme.pyt,   initialiser_liste_prix_indicatifs_precedentej  s    c         C   s8   g  } x+ t  t | ƒ ƒ D] } | j | | ƒ q W| S(   N(   R   R   R   (   R   R   R\   R   (    (    se   C:\Users\Léa\Desktop\Stage Genève\Genève - A conserver\Simulation_120_30\Systeme_initial\programme.pyt$   maj_liste_prix_indicatifs_precedenteq  s    c   &      C   s´  t  j ƒ  } d GHt d ƒ } | j ƒ  t | ƒ } t | ƒ } | } | } d } d } d }	 t | ƒ }
 t | ƒ } |
 j | | ƒ } t	 j
 t j j | j d ƒ | j d d d d ƒ| j | | ƒ } t	 j
 t j j | j d	 ƒ | j d d d d ƒ|  j | | | | | ƒ \ } } } } t	 j
 t j j | j d
 ƒ | j d d d d ƒt	 j
 t j j | j d ƒ | j d d d d ƒt | ƒ } t | ƒ } |  j | | ƒ } |  j | | ƒ } |  j | ƒ } |  j | ƒ } |  j ƒ  } |  j | ƒ } |  j | d | | | | | | | ƒ	 d GH|  j | ƒ } |  j | ƒ } d t | ƒ GHd t | ƒ GHd t | ƒ GHd GH|  j | ƒ } |  j | ƒ } |
 j  | | | | | ƒ \ } } } } } } } | j! d | | | | ƒ \ } }  }! }" }# |  j" |	 | | | | | |  | | ƒ	 \	 } } } } }	 } }  } } t	 j
 t j j | j d t d ƒ ƒ | j d d d d ƒt	 j
 t j j | j d t d ƒ ƒ | j d d d d ƒt | ƒ } t | ƒ } |  j | | ƒ } |  j | d | | | | | | | ƒ	 |  j# | d | | | ƒ |  j$ | d | | |  ƒ |  j% | d | | | ƒ |  j& | ƒ } |  j' |  ƒ } d GHxlt( d | j) ƒ D]X}$ d t |$ ƒ GH|
 j* | | | | | ƒ \ } } } } } } } |  j" |	 | | | | | |  | | ƒ	 \	 } } } } }	 } }  } } | j+ |$ | | | |# | | | | ƒ	 \ } }  }! }" }# |  j" |	 | | | | | |  | | ƒ	 \	 } } } } }	 } }  } } |$ d d k s•|$ | j) d k rt	 j
 t j j | j d t |$ ƒ ƒ | j d d d d ƒt	 j
 t j j | j d t |$ ƒ ƒ | j d d d d ƒn  t | ƒ } t | ƒ } |  j | | ƒ } |  j | |$ | | | | | | | ƒ	 |  j# | |$ | | | ƒ |  j$ | |$ | | |  ƒ |  j% | |$ | | | ƒ |  j& | ƒ } |  j' |  ƒ } d GHqsW|  j, | | | | | | |	 | | |  |# ƒ d Gt- | ƒ GHd Gt- | ƒ GH|  j | ƒ } |  j | ƒ } d t | ƒ GHd t | ƒ GHd t | ƒ GHd t | ƒ GHd t | ƒ GHd t |	 ƒ GHt  j ƒ  | }% |  j. | |% ƒ d  S(   Nt   INITIALISATIONs	   input.txti    t   matrice_TE_initialet   fmts   %it	   delimiters   	t   matrice_AV_initialet   matrice_TE0t   matrice_AV0t   Initialisations   
s   moyenne cash TA init : s   moyenne cash EV init : s   cash total systeme : s   ITERATION 0R   R   i   s
   ITERATION i
   s   len liste_agents_TAs   len liste agents_EV : s   moyenne cash TA final : s   moyenne cash EV final : s   cash_total_systeme : s   nb_TA_elimines : s   nb_EV_elimines : s   La dette totale s'eleve a : (/   t   timet   clockR    t   parset   obtenir_liste_agents_TAt   obtenir_liste_agents_EVR   R   t   creer_matrice_TEt   npt   savetxtt   ost   patht   joint   dossierR	   t   creer_matrice_AVR.   t   obtenir_liste_cash_agents_TAt   obtenir_liste_cash_agents_EVR1   RC   RK   RN   RQ   R<   RI   RT   RU   R7   RZ   R]   t   initialiser_marche_travailt   initialiser_marche_biensR/   RL   RO   R@   R[   R^   R   t   itt
   travaillert   faire_tourner_marches_biensRX   R   RS   (&   R   t   t0t
   parametresR   R   RA   R9   R   R   R   t   marche_travailt   marche_biensR   R   RD   RE   RF   RB   RJ   RM   RP   R:   RT   RU   RY   R\   t   liste_salaires_indicatifst   repartition_heures_travailleursR>   t   liste_production_entreprisesR   t   liste_payes_totales_employesR   t   repartition_cash_acheteurst    somme_repartition_cash_acheteursRV   R=   RR   (    (    se   C:\Users\Léa\Desktop\Stage Genève\Genève - A conserver\Simulation_120_30\Systeme_initial\programme.pyt   run|  sª    
11'11%0*B;;%0B6B#;>%	+(   t   __name__t
   __module__R   R%   R+   R-   R.   R/   R1   R<   R@   RC   RI   RK   RL   RN   RO   RQ   RS   RT   RU   RX   RZ   R[   R]   R^   R…   (    (    (    se   C:\Users\Léa\Desktop\Stage Genève\Genève - A conserver\Simulation_120_30\Systeme_initial\programme.pyR      s2   		!						
				
		
							;				(    (   R|   R    t   agenttat   agentevt   marchetravailR   t   marchebiensR   t   matriceR   t   numpyRm   Ro   R4   Rg   R   (    (    (    se   C:\Users\Léa\Desktop\Stage Genève\Genève - A conserver\Simulation_120_30\Systeme_initial\programme.pyt   <module>   s   

