Decomposition of mathematical programming problems by dynamic programming and its application to block-diagonal geometric programs