1. A method to solve an optimization model comprising: receiving, at a computing device, data representing a formula and parameters associated with the optimization model to be solved; automatically analyzing, by the computing device, a structure of said received data to identify multiple alternative formulations of said optimization model; automatically generating, by the computing device, data representing multiple reformulated problems, each reformulated problem corresponding to said multiple alternative formulation of said optimization model and each having a different structure and associated parameters for solving said optimization model; for each reformulated problem, determining one or more solver devices for solving the reformulated problem in parallel, the one or more solver devices configured to solve a respective reformulated problem using a respective different algorithm; communicating, by the computing device, the generated data representing a respective reformulated problem to a respective determined one or more solver devices for solving that reformulated problem, each respective solver device of said determined one or more solver devices receiving data associated with the respective reformulated problem and each said solver device of said determined one or more solver devices configured to solve the respective reformulated problem; generating, at respective one or more solver devices, data representing intermediate solution results of the respective reformulated problem; receiving, at said computing device, each generated intermediate solution result data from the respective one or more solver devices, said data representing a change of a solution state of a result of a respective algorithm used in solving the respective reformulated problem at the respective one or more solver devices; determining whether any received intermediate solution result data leads to a feasible solution of the optimization model; and if said received intermediate solution result data leads to a feasible solution, updating a solution set for said optimization model and communicating intermediate results values received from one solver device to other parallel running solver devices running a different algorithm.