param n := 512; var x {j in 0..n}; var y {j in 0..n} >= 0; var dx {j in 1..n} = (x[j] - x[j-1]); var dy {j in 1..n} = (y[j] - y[j-1]); var f {j in 1..n} = sqrt( (dx[j]^2 + dy[j]^2)/((y[j]+y[j-1])/2) ); minimize time: sum {j in 1..n} f[j] ; subject to x0: x[0] = 0; subject to xn: x[n] = 1; subject to y0: y[0] = 0; subject to yn: y[n] = 1; let {j in 0..n} x[j] := (j/n)^4; let {j in 0..n} y[j] := x[j]; display time; solve; display time; printf {j in 0..n}: "%10.5f %10.5f \n", x[j], -y[j] > bc.out;