param N; param T; param q; param r; param xf; var x {j in 0..N}; var v {j in 1..N} <= 1000, >= -1000; var a {j in 1..N-1} <= 1000, >= -1000; var k {1..2}; minimize trade_off: q*(x[N] - xf)^2 + r*sum{j in 1..N-1} a[j]^2 * T/N; subject to x0: x[0] = 0; subject to v0: v[1] = 0; subject to v_def {j in 1..N}: N*(x[j]-x[j-1]) = T*v[j]; subject to a_def {j in 1..N-1}: N*(v[j+1]-v[j]) = T*a[j]; subject to control {j in 1..N-1}: a[j] = k[1] + k[2]*j*T/N; let N := 800; let T := 10; let q := 1; let r := 100; let xf := 100; solve; display k; display x[N]; display v[N];