Ë
    œÐVhö
  ã                   ód   — d dl mZ d dlmZmZmZ  G d„ d«      Z G d„ de«      Z G d„ de«      Zy	)
é    )ÚOptional)Ú	AHContextÚ
AHMetadataÚChoicec                   ó€   — e Zd ZdZdd„Zdededefd„Zdede	e
   dee
   fd	„Zdefd
„Zdefd„Zdedee	e      fd„Zy)ÚLearnedHeuristiczF
    LearnedHeuristic is a base class for all learned heuristics.
    ÚreturnNc                  ó   — y ©N© ©Úselfs    úh/home/dcms/DCMS/lib/python3.12/site-packages/torch/_inductor/autoheuristic/learnedheuristic_interface.pyÚ__init__zLearnedHeuristic.__init__   s   € Øó    ÚmetadataÚcontextc                  ó   — y)NTr   )r   r   r   s      r   Úcheck_preconditionz#LearnedHeuristic.check_precondition   s   € ð
 r   Úchoicesc                  ó   — y r   r   )r   r   r   s      r   Úget_decisionzLearnedHeuristic.get_decision   s   € ð r   c                  ó   — y©Ng      ð?r   r   s    r   Úget_confidence_thresholdz)LearnedHeuristic.get_confidence_threshold   ó   € Ør   c                  ó   — y)NÚ r   r   s    r   Úget_namezLearnedHeuristic.get_name!   s   € Ør   c                  ó   — y r   r   ©r   r   s     r   Úget_decisions_rankedz%LearnedHeuristic.get_decisions_ranked$   ó   € Ør   ©r	   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   Úboolr   Úlistr   r   r   Úfloatr   Ústrr   r"   r   r   r   r   r   
   s‡   „ ñóðàðð ðð 
ó	ðØ ðØ+/°©<ðà	&Ñ	óð
¨%ó ð˜#ó ð¨Ið ¸(À4ÈÁ9Ñ:Mô r   r   c                   óT   ‡ — e Zd Zdˆ fd„Zdededefd„Zdedee   de	e   fd„Z
ˆ xZS )	ÚLearnedHeuristicRegressionr	   c                 ó"   •— t         ‰|   «        y r   ©Úsuperr   ©r   Ú	__class__s    €r   r   z#LearnedHeuristicRegression.__init__)   ó   ø€ Ü‰ÑÕr   r   Úchoicec                  ó   — yr   r   )r   r   r5   s      r   Úget_feedbackz'LearnedHeuristicRegression.get_feedback,   r   r   r   c                 óØ   — i }|D ]  }| j                  ||«      }|||<   Œ t        |j                  «       d„ ¬«      }|d   d   }|d   d   }||z  | j                  «       kD  r|d   d   S y )Nc                 ó   — | d   S ©Né   r   )Úts    r   ú<lambda>z9LearnedHeuristicRegression.get_decision.<locals>.<lambda>6   s   € ÐPQÐRSÑPT€ r   )Úkeyéÿÿÿÿr;   éþÿÿÿr   )r7   ÚsortedÚitemsr   )	r   r   r   Úchoice2feedbackr5   Úpredicted_feedbackÚsorted_choices_feedbackÚhighest_feedbackÚsecond_highest_feedbacks	            r   r   z'LearnedHeuristicRegression.get_decision/   s—   € ð ˆØò 	9ˆFØ!%×!2Ñ!2°7¸FÓ!CÐØ&8ˆO˜FÒ#ð	9ô #)¨×)>Ñ)>Ó)@ÁnÔ"UÐØ2°2Ñ6°qÑ9ÐØ"9¸"Ñ"=¸aÑ"@ÐØÐ5Ñ5¸×8UÑ8UÓ8WÒWØ*¨2Ñ.¨qÑ1Ð1àr   r$   )r%   r&   r'   r   r   r   r+   r7   r*   r   r   Ú__classcell__©r3   s   @r   r.   r.   (   sH   ø„ õð Ið °vð À%ó ðØ ðØ+/°©<ðà	&Ñ	÷r   r.   c                   ó˜   ‡ — e Zd Zd
ˆ fd„Zdedee   fd„Zdede	e
   dee
   fd„Zdedee	e      fd„Zdedee	eeef         fd	„Zˆ xZS )ÚLearnedHeuristicDecisionr	   c                 ó"   •— t         ‰|   «        y r   r0   r2   s    €r   r   z!LearnedHeuristicDecision.__init__@   r4   r   Úidxc                  ó   — y r   r   )r   rM   s     r   Ú
get_choicez#LearnedHeuristicDecision.get_choiceC   r#   r   r   r   c                 ó„   — | j                  |«      }|sy |d   \  }}|| j                  «       k  ry | j                  |«      S )Nr   )Úget_best_choicesr   rO   )r   r   r   Úbest_choicesÚbest_choice_probaÚbest_choice_idxs         r   r   z%LearnedHeuristicDecision.get_decisionF   sL   € ð ×,Ñ,¨WÓ5ˆÙØØ/;¸A©Ñ,Ð	˜OØ × =Ñ =Ó ?Ò?ØØ‰˜Ó/Ð/r   c                 ó¨   — | j                  |«      }|€y |D cg c]  }| j                  |d   «      ‘Œ }}|D cg c]  }|€Œ|‘Œ	 }}|S c c}w c c}w r:   )rQ   rO   )r   r   Úfeedback_idx_listÚfeedback_idxr   r5   s         r   r"   z-LearnedHeuristicDecision.get_decisions_rankedQ   sm   € Ø ×1Ñ1°'Ó:ÐØÐ$ØàARö
Ø1=ˆDO‰O˜L¨™OÕ,ð
ˆð 
ð )0ÖF˜f°6Ñ3E’6ÐFˆÐFØˆùò	
ùò Gs   ™A
ºAÁAc                 ó   — g S r   r   r!   s     r   rQ   z)LearnedHeuristicDecision.get_best_choices[   s   € Øˆ	r   r$   )r%   r&   r'   r   Úintr   r,   rO   r   r*   r   r   r"   Útupler+   rQ   rH   rI   s   @r   rK   rK   ?   sˆ   ø„ õð˜cð  h¨s¡mó ð	0Ø ð	0Ø+/°©<ð	0à	&Ñ	ó	0ð¨Ið ¸(À4ÈÁ9Ñ:Mó ð¨	ð °h¸tÀEÈ%ÐQTÈ*ÑDUÑ?VÑ6W÷ r   rK   N)	Útypingr   Ú1torch._inductor.autoheuristic.autoheuristic_utilsr   r   r   r   r.   rK   r   r   r   ú<module>r]      s6   ðÝ ÷ñ ÷ñ ô<Ð!1ô ô.Ð/õ r   