1. A method comprising: accessing, using a computing device, a meta-solver, the meta-solver: analyzing a problem to be solved, able to call a plurality of different types of sub-solvers that attempt to solve the problem, and being distinct from the plurality of different types of sub-solvers; generating first information based on the analyzing the problem using the meta-solver, the first information: including a problem description, and being used by the meta-solver to identify a first subset of sub-solvers of the plurality of different types of sub-solvers to be used in a first attempt to solve the problem; identifying one or more first starting points for the first subset of sub-solvers; performing the first attempt to solve the problem using the first subset of sub-solvers and the one or more first starting points to generate one or more first results; providing the one or more first results from the first subset of sub-solvers to the meta-solver; analyzing the one or more first results from the first subset of sub-solvers using the meta-solver; based on the analyzing of the one or more results using the meta-solver, performing at least one of the following actions; refining the first subset of sub-solvers using the meta-solver based on the one or more results provided by the first subset of sub-solvers, the refining comprising identifying a second subset of sub-solvers that is different than the first subset of sub-solvers, or identifying one or more second starting points using the meta-solver based on the one or more results provided by the first subset of sub-solvers, the one or more second starting points differing from the one or more first starting points; performing a second attempt to find the solution to the problem using at least one of the second subset of subsolvers or the one or more second starting points; generating one or more second results based on the performing the second attempt; and providing the one or more second results to the meta-solver.