1. A method for solving combinatorial optimization problems, the method comprising: receiving a plurality of problem instance parameters associated with a graph; determining when a dynamic path change indicator exists; initializing the graph based on the determining the dynamic path change indicator does not exist; inserting a placeholder node and at least one placeholder node edge based on the determining the dynamic path change indicator does exist; reinitializing the graph with the inserted place holder node and the at least one placeholder node edge; initializing the reinitialized graph; initializing an ant pool, the ant pool comprising a plurality of data structures, wherein each data structure of the plurality of data structures has a plurality of characteristics and wherein the plurality of characteristics includes a carrying capacity characteristic, a pheromone persistence characteristic, a relative pheromone importance characteristic, and an explore strategy selection characteristic; executing a problem solving iteration, wherein a problem solution is generated for the each data structure of the plurality of data structures based on the plurality of characteristics and the capacity requirement associated with adjacent nodes and the carrying capacity of each data structure; sorting the ant pool based on a path cost value associated with the problem solution of the each data structure of the plurality of data structures, the sorting ranging from a lowest path cost solution to a highest path cost solution; selecting at least two data structures from the sorted ant pool having a low path cost solution; initializing a plurality of child data structures having at least one characteristic based on the plurality of characteristics of each of the selected at least two data structures; and reinitializing the ant pool wherein the reinitialized ant pool comprises the selected at least two data structures and the plurality of child data structures for use in a subsequent problem solving iteration.