je me lance dans un projet de freecooling pour chez moi.
en y réfléchissant, beaucoup de condition s'ajoute mais je pense que le programme va être assez lourd
j'explique en texte (pas attaqué le code encore)
si la température extérieur est inférieur à la température intérieur et si l'ordre lui dit freecooling et si la maison ne chauffe pas alors j'active le freecoling.
si la température extérieur est supérieur à la température intérieur et si l'ordre lui dit freecooling et si la maison ne chauffe et si cela fait plus de X temps que je n'est pas pu utilisé le freecooling alors j'active la climatisation.
j'ai énormément de condition comme ça,
je pensé au if/else mais je pense qu'il y a une autre solution
Je ne suis pas certain que la simplification des équations logiques soit très utiles dans la mesure où le système n'a pas à être très réactif et où la réduction des dites équations risque de rendre la maintenance compliqué.
Il faut avant tout poser les conditions sur le papier pour voir s'il n'y a pas des incohérences.
Peut-être l'utilisation d'une petite machine à états pourrait rendre le fonctionnement plus simple s'il y a des temporisations et/ou un fonctionnement séquentiel dans certains cas comme tu le laisses entendre.
Ne pas hésiter à écrire les conditions un peu complexes sur plusieurs lignes bien alignées pour en augmenter le lisibilité.
anthology:
effectivement embouté des if ce n'est pas compliqué mais surtout un risque d'erreur vu la quantité
C'est là où la phase d'analyse en amont doit permettre de :
simplifier les conditions en identifiants les redondances et/ou les incohérences. Je t'avouerais que je suis étonné lorsque tu dis qu'il y a beaucoup de conditions
les éléments qui dépendent d'une condition commune et qui soit générique
[[/list]
Ne pas perdre de vue que le codage est la phase finale. Le gros du travail se fait en amont par une analyse en profondeur du problème et la détermination d'une algorithmie la plus simple possible
Oui la simplification des conditions aide à emboîter des if mais surtout vous pouvez surtout « ajouter de la connaissance » en utilisant des états ce qui limite les actions possibles dans un état donné
pour ça que j’ai tout écrit et que je relis régulièrement les conditions pour voir ce qui peut évoluer
j’ai beaucoup de conditions du faites que je récupère du frais dehors si la temp exter < a la temp inter
mais si la temp exter > a la temp inter mais que la temp des caves < a la temp inter alors je fait le freecooling via les caves
avec des choses comme, si je suis dans la caves, je bricole donc potentiellement des odeurs donc j’envoie pas vers la maison, j’envoie dehors
que des choses comme ca
c’est un gros freecooling qui va gérer au final pas mal de chose
j’essaye pour le moment de rassembler tout ce que je peut avoir besoin et pour ne pas ‘’ saturer" je prefere voir autre chose (genre comment faire mes conditions) pour ne pas plus voir des choses logiques
Somme toute, ton probleme est relativement classique (et j'ai une problématique similaire pour optimiser mes volets roulants).
Bref, je pense que tu veux tout de suite faire trop gros tout de suite.
Commence a expérimenter avec des trucs simple, avec une seule condition (quitte a ne faire de des simulation) : ca va te donner de petits blocs fonctionnelles qui répondent a des cas simples. Ensuite, comme avec un légo, tu regroupes tes petits blocs pour obtenir ta solution complete.
Ce que je veux dire, c'est qu'un bon principe est toujours de découper les gros pb en plus petits
effectivement, je vais regrouper par "bloc" pour essayer et après imbriquer tout ça
pour le moment je me renseigne sur les solutions et j'écrit mes conditions.