Patent ID: 8611335

Claim:
A computer-implemented method for assigning paths for data flows through a wide-area network, comprising: at a computer system including one or more processors and memory storing one or more programs, the one or more processors executing the one or more programs to perform the operations of: receiving a plurality of data flows, wherein a respective data flow in the plurality of data flows and includes a respective source address and a respective destination address; generating, without regard to priorities associated with the plurality of data flows, an ordering of the plurality of data flows; iteratively modifying, without regard to the priorities, the ordering of the plurality of data flows until a cost associated with path assignments for the ordering of the plurality of data flows satisfies a predetermined condition, wherein a respective path assignment for a respective data flow specifies a respective path from a respective source address to a respective destination address; and executing the data flows based on the path assignments for the ordering of the plurality of data flows having the cost that satisfies the predetermined condition; wherein iteratively modifying, without regard to the priorities, the ordering of the plurality of data flows includes: applying one or more mutation operations selected from the group consisting of: swapping a first half of the data flows with a second half of the data flows in the ordering of the plurality of data flows; interleaving the first half of the data flows with the second half of the data flows in the ordering of the plurality of data flows; reversing the ordering of the first half of the data flows and interleaving the first half of the data flows with the second half of the data flows in the ordering of the plurality of data flows; performing a circular shift about a predetermined data flow in the ordering of the plurality of data flows; performing a reverse circular shift about the predetermined data flow in the ordering of the plurality of data flows; swapping adjacent data flows in the ordering of the plurality of data flows; and swapping non-adjacent data flows in the ordering of the plurality of data flows.