using JuMP, HiGHS
t = Dict(1=>3,2=>2,3=>3,4=>2,5=>3,6=>1,7=>2,8=>2,9=>1)
# (Vorgänger h, Vorgang i, Mindestabstand d_hi)
kanten = [(1,2,-1),(1,3,1),(3,4,0),(2,5,0),(3,5,1),(4,6,0),
(5,7,1),(6,7,0),(6,8,0),(7,9,0),(8,9,0)]
modell = Model(HiGHS.Optimizer); set_silent(modell)
@variable(modell, S[keys(t)] >= 0) # Anfangszeitpunkte (FAZ)
@variable(modell, C >= 0) # Projektdauer
@constraint(modell, [(h,i,d) in kanten], S[i] >= S[h] + t[h] + d)
@constraint(modell, [i in keys(t)], C >= S[i] + t[i])
@objective(modell, Min, C)
optimize!(modell)
println("Projektdauer = ", objective_value(modell))