Je dois être en mesure de prendre une formule qui utilise la syntaxe de la formule OpenDocument, l'analyser dans une syntaxe que Python peut comprendre, mais sans évaluer les variables, puis pouvoir évaluer la formule plusieurs fois en changeant objets de valeur pour les variables. Les formules peuvent être entrées par l'utilisateur, donc pyparsing me permet à la fois de gérer efficacement la syntaxe de la formule et de nettoyer les entrées utilisateur. Il y a un certain nombre de bons exemples de pypars disponibles, mais tous les mathématiques semblent supposer que l'on évalue tout dans la portée actuelle immédiatement. Pour le contexte, je travaille avec un modèle de l'économie industrielle (analyse du cycle de vie, ou ACV), où ces formules représentent la quantité d'échanges de matière ou d'énergie entre les processus. La quantité variable peut être fonction de plusieurs paramètres, tels que la localisation géographique. La chaîne de la formule et les références variables sont stockées dans un graphique acyclique dirigé, de sorte que les formules peuvent toujours être simplement évaluées. Les formules sont stockées sous forme de chaînes dans une base de données. Mes questions sont les suivantes:Évaluation partielle avec pypars
- Est-il possible d'analyser une formule telle que l'évaluation peut également être analysé stockées dans la base (comme une chaîne à evaled, ou autre chose)?
- Existe-t-il des alternatives à cette approche? Gardez à l'esprit que la solution idéale est d'analyser/écrire une fois et de lire plusieurs fois. Par exemple, analyser partiellement la formule, puis utiliser le module ast, bien que je ne sache pas comment cela pourrait fonctionner avec le stockage de base de données.
- Des exemples d'un projet ou d'une bibliothèque similaire à celui-ci que je pourrais examiner? Je ne suis pas un programmeur, juste un étudiant qui essaie de terminer sa thèse tout en faisant un modèle de logiciel LCA open-source dans mon temps libre.
- Cette approche est-elle trop lente? Je voudrais être capable de faire des courses de Monte Carlo substantielles, où chaque course pourrait impliquer des dizaines de milliers d'évaluations de formules (c'est une grande base de données).