I am studying the mixed-integer linear programming formulation for the job shop with makespan minimization proposed by Manne (see Equations (1)-(7) from Ku and Beck (2016) http://dx.doi.org/10.1016/j.cor.2016.04.006, and my implementation is wrong.

Concerning this test instance:

http://jobshop.jjvh.nl/instance.php?instance_id=6

the optimal solution is 55, but my model returns 56. I cannot identify the error.

@variable(model, x[j in 1:N, i in 1:M] >=0)

@variable(model, z[j in 1:N-1, k in j+1:N, i in 1:M], Bin)

@variable(model, Cmax >=0)

@objective(model, Min, Cmax)

@constraint(model, [j in 1:N,h in 2:M], x[j,O[j,h]] >= x[j,O[j,h-1]] + P[j,O[j,h-1]])

@constraint(model, [j in 1:N-1, k in j+1:N, i in 1:M], x[j,i] >= x[k,i] + P[k,i] - V * z[j,k,i])

@constraint(model, [j in 1:N-1, k in j+1:N, i in 1:M], x[k,i] >= x[j,i] + P[j,i] - V * (1 - z[j,k,i]))

@constraint(model, [j in 1:N], Cmax >= x[j,O[j,M]] + P[j,O[j,M]])