Source code for biogeme.expressions.elementary_expressions
"""Arithmetic expressions accepted by Biogeme: elementary expressionsMichel BierlaireTue Mar 25 17:34:47 2025"""from__future__importannotationsimportloggingfrom.base_expressionsimportExpressionfrom.elementary_typesimportTypeOfElementaryExpressionlogger=logging.getLogger(__name__)
[docs]classElementary(Expression):"""Elementary expression. It is typically defined by a name appearing in an expression. It can be a variable (from the database), or a parameter (fixed or to be estimated using maximum likelihood), a random variable for numerical integration, or Monte-Carlo integration. """expression_type=Nonedef__init__(self,name:str):"""Constructor :param name: name of the elementary expression. :type name: string """super().__init__()self.name=name#: name of the elementary expression# self.elementary_index = None"""The index should be unique for all elementary expressions appearing in a given set of formulas. """self.specific_id:int|None=None# Index of the element in its own array.def__str__(self)->str:"""string method :return: name of the expression :rtype: str """returnf"{self.name}"def__repr__(self):returnf'<{self.get_class_name()} name={self.name}>'
[docs]defget_elementary_expression(self,name:str)->Expression|None:""" :return: an elementary expression from its name if it appears in the expression. None otherwise. :rtype: biogeme.Expression """ifself.name==name:returnselfreturnNone
[docs]defrename_elementary(self,old_name:str,new_name:str,elementary_type:TypeOfElementaryExpression)->int:"""Rename an elementary expression :return: number of modifications actually performed """ifself.expression_type==elementary_typeandself.name==old_name:self.name=new_namereturn1return0
[docs]defset_specific_id(self,name,specific_id,the_type:TypeOfElementaryExpression):"""The elementary IDs identify the position of each element in the corresponding datab"""ifthe_type==self.expression_typeandname==self.name:self.specific_id=specific_id