The purpose of this research is to deal with the problem of two-stage assembly flow shop scheduling. A number of single-item products (identical) each formed of several different parts are ordered. Each part has m operations done at the first stage with m different machines. After manufacturing the parts, they are assembled into a final product with some non-identical machines. The purpose of the problem is to find the optimal sequence of the parts in the manufacturing stage, allocation and the optimal sequence of the products in the assembly stage. A mixed integer linear programming model and two metaheuristic algorithms, which are particle swarm with local search (MPSO) and simulated annealing (SA), are presented to solve this problem. Computational experiments are conducted to evaluate the performance of the proposed model and algorithms. The results show that the MPSO algorithm performs better than the SA one.