Personnel scheduling problems involve multiple tasks, including assigning shifts to workers. The purpose is usually to satisfy objectives and constraints arising from management, labour unions and employee preferences. The shift assignment problem is usually highly constrained and difficult to solve. The problem can be further complicated (i) if workers have mixed skills; (ii) if the start/end times of shifts are flexible; and (iii) if multiple criteria are considered when evaluating the quality of the assignment. This paper proposes a genetic algorithm using composite chromosome encoding to tackle the shift assignment problem that typically arises in retail stores, where most employees work part-time, have mixed-skills and require flexible shifts. Experiments on a number of problem instances extracted from a real-world retail store, show the effectiveness of the proposed approach in finding good-quality solutions. The computational results presented here also include a comparison with results obtained by formulating the problem as a mixed-integer linear programming model and then solving it with a commercial solver. Results show that the proposed genetic algorithm exhibits an effective and efficient performance in solving this difficult optimisation problem.