param n := 5;

param l {i in 1..n};
param u {i in 1..n};

var x {i in 1..n} >= l[i], <= u[i], := l[i] + ( u[i] - l[i] ) * Uniform01();

minimize obj:
	(x[1]-1.0)^2 + (x[1]-x[2])^2 + (x[2]-x[3])^3 + (x[3]-x[4])^4 + (x[4]-x[5])^4;
subject to R1:
	x[1] + x[2]^2 + x[3]^3 = 3.0 * sqrt(2.0) + 2.0;
subject to R2:
	x[2] - x[3]^2 + x[4] = 2.0 * sqrt(2.0) - 2.0;
subject to R3:
	x[1] * x[5] = 2.0;

data;

param l := 
      1 -5.0
      2 -5.0
      3 -5.0
      4 -5.0
      5 -5.0;

param u := 
      1  5.0
      2  5.0
      3  5.0
      4  5.0
      5  5.0;

