Este projeto foi em grande parte uma exploração de um design de despacho de sistema de energia modular. O problema principal que provocou foi que toda micrrograda que eu encontrei tinha seu próprio conjunto de objetivos de controle. Os sistemas de energia compartilham muitos dos mesmos objetivos, mas, dependendo da arquitetura, atingem esses objetivos (ou um subconjunto de objetivos) de maneira diferente. A idéia era quebrar o sistema de controle de alto nível em peças modulares e construir uma árvore/tubulação de controle de despacho com base em quais peças foram carregadas.
Comecei a trabalhar no projeto depois de ler o manual de design de Steven Skeina [The Algorithm Design] https://www3.cs.stonybrook.edu/~skiena/. Eu pensei que seria uma boa aplicação para consolidar meu entendimento dos gráficos (direcionados).
Agora eu costumo fazer o argumento que toda a micrograde tem o mesmo conjunto de metas:
O primeiro objetivo é capturado no objetivo principal do controle: não aplaude. Metas dois e três são problemas de otimização. Portanto, resolva o problema de otimização primeiro e deixe isso acionar o sistema de despacho. Tentar explicar os atributos de cada componente no nível mais alto de despacho sobrecarregará seu design com complexidade (mesmo se você escreveu um algoritmo de gráfico quente para travar essa complexidade).
Take-away principal: não projete sistemas complexos.