In train operations, a timetable is used to establish the departure and arrival times for the trains at the stations or other relevant locations in the rail network. The timetable must respond to the commercial requirements of the customers, while respecting also some security and capacity constraints determined by the characteristics of the rolling stock and the infrastructure of the network. In addition, some of the commercial requirements may come into conflict with capacity constraints or with the maintenance activities of the network. These conflicts should be rapidly identified, since, in order to be solved, in most of the cases, a negotiation between the train operating companies and the railway infrastructure manager is required, leading to further time consumption. The combination of the requirements and constraints as well as the large number of trains and journeys to schedule, and additionally the conflicts resolutions, make the preparation of a yearly timetable a complex and time consuming process that usually takes months to be fully completed. This work addresses the problem of generating periodic timetables, which means that the trains concerned are operated on a recurrent pattern, e.g., trains of the same line will run every 30 minutes. To tackle the problem, we present a suitable constraint-based model. Then, we propose the use of a co-evolutionary genetic algorithm implementing our model to generate feasible periodic timetables in short periods of time. Finally, two case studies are discussed, they are then solved using our implementation and the results are presented and examined. A precedent publication of this work can be found at http://hal.archives-ouvertes.fr/hal-00879745