1. A problem solving system for implementation on a computer, comprising: an interface operable to receive user supplied input data, the input data having at least one user defined characteristic that includes at least a constraint, an objective or combinations thereof, and a defined output type; an algorithm pool having a plurality of pre-defined algorithms, each algorithm having at least one associated algorithm characteristic; a data source pool having at least one data source, each data source having at least one data characteristic, the data source pool being adapted to provide an input and a parameter to the algorithm; an algorithm selector in communication with the interface, algorithm pool and data source pool, the algorithm selector operable to; receive the input data and review the at least one user defined characteristic; select at least one candidate algorithm from the algorithm pool in response to receipt of the input data based on availability of data associated with the candidate algorithm from the data source pool; evaluate the input data against the candidate algorithm, and select the algorithm based on identification and evaluation of the candidate algorithm.