In this paper the discrete and dynamic berth allocation problem is formulated as a multi-objective combinatorial optimization problem where vessel service is differentiated upon based on priority agreements. A genetic algorithms based heuristic is developed to solve the resulting problem. A number of numerical experiments showed that the heuristic performed well in solving large, real life instances. The heuristic provided a complete set of solutions that enable terminal operators to evaluate various berth scheduling policies and select the schedule that improves operations and customer satisfaction. The proposed algorithm outperformed a state of the art metaheuristic and provided improved results when compared to the weighted approach.