1. A method of planning a travel route comprising the steps of: maintaining in a memory a reference database comprising one or more travel data sets, each travel data set representing a travel option from a travel origin to a travel destination and comprising an origin identifier and a destination identifier; obtaining one or more travel preferences for a travel route from a user; retrieving one or more travel data sets from the reference database to construct one or more candidate travel plans; calculating a plurality of penalty values based on the user travel preferences, each penalty value associated with a corresponding travel data set; and selecting one or more candidate travel plans so as to minimise the sum of penalty values associated with the travel data sets of a candidate travel plan.