Go to the documentation of this file.
9 package org.coinor.examples.scalable;
34 System.out.print(
"N needs to be at least 3.\n");
53 for(
int i = 0; i < n; ++i )
62 for(
int i = 0; i < m; ++i )
70 for(
int i = 0; i < n/2; ++i )
82 int m,
double[] g_l,
double[] g_u)
85 for(
int i = 0; i < n; ++i )
92 for(
int i = 0; i <
m; ++i )
102 boolean init_z,
double[] z_L,
double[] z_U,
103 int m,
boolean init_lambda,
double[] lambda)
105 for(
int i = 0; i < n/2; ++i )
117 protected boolean eval_f(
int n,
double[] x,
boolean new_x,
double[] obj_value)
120 for(
int i = 0; i < n-1; ++i )
122 double a1 =
x[i] *
x[i] -
x[i+1];
123 double a2 =
x[i] - 1.0;
124 obj_value[0] += 100.0 * a1 * a1 + a2 * a2;
131 protected boolean eval_g(
int n,
double[] x,
boolean new_x,
int m,
double[]
g)
133 for(
int i = 0; i < n-2; ++i )
134 g[i] = 3.0 * Math.pow(
x[i+1], 3.0) + 2.0 *
x[i+2] - 5.0 + Math.sin(
x[i+1]-
x[i+2]) * Math.sin(
x[i+1]+
x[i+2])
135 + 4.0 *
x[i+1] -
x[i] * Math.exp(
x[i] -
x[i+1]) - 3.0;
141 protected boolean eval_grad_f(
int n,
double[] x,
boolean new_x,
double[] grad_f)
144 for(
int i = 0; i < n-1; ++i )
146 grad_f[i] += 400.0 *
x[i] * (
x[i] *
x[i] -
x[i+1]) + 2.0 * (
x[i] - 1.0);
147 grad_f[i+1] = -200.0 * (
x[i] *
x[i] -
x[i+1]);
154 protected boolean eval_jac_g(
int n,
double[] x,
boolean new_x,
int m,
155 int nele_jac,
int[] iRow,
int[] jCol,
double[] values)
161 for(
int i = 0; i < n-2; ++i )
179 for(
int i = 0; i < n-2; ++i )
182 values[ijac] = -(1.0 +
x[i]) * Math.exp(
x[i] -
x[i+1]);
185 values[ijac] = 9.0 *
x[i+1] *
x[i+1]
186 + Math.cos(
x[i+1] -
x[i+2]) * Math.sin(
x[i+1] +
x[i+2])
187 + Math.sin(
x[i+1] -
x[i+2]) * Math.cos(
x[i+1] +
x[i+2])
188 + 4.0 +
x[i] * Math.exp(
x[i] -
x[i+1]);
192 - Math.cos(
x[i+1] -
x[i+2]) * Math.sin(
x[i+1] +
x[i+2])
193 + Math.sin(
x[i+1] -
x[i+2]) * Math.cos(
x[i+1] +
x[i+2]);
202 protected boolean eval_h(
int n,
double[] x,
boolean new_x,
203 double obj_factor,
int m,
double[] lambda,
boolean new_lambda,
204 int nele_hess,
int[] iRow,
int[] jCol,
double[] values)
209 for(
int i = 0; i < n; ++i )
226 for(
int i = 0; i < n; ++i )
231 values[ihes] = obj_factor * (2.0 + 400.0 * (3.0 *
x[i] *
x[i] -
x[i+1]));
233 values[ihes] -= lambda[i] * (2.0 +
x[i]) * Math.exp(
x[i] -
x[i+1]);
241 values[ihes] += obj_factor * 200.0;
243 values[ihes] += lambda[i-1]* (18.0 *
x[i]
244 - 2.0 * Math.sin(
x[i] -
x[i+1]) * Math.sin(
x[i] +
x[i+1])
245 + 2.0 * Math.cos(
x[i] -
x[i+1]) * Math.cos(
x[i] +
x[i+1])
246 -
x[i-1] * Math.exp(
x[i-1] -
x[i]));
250 values[ihes] += lambda[i-2] * (-2.0 * Math.sin(
x[i-1] -
x[i]) * Math.sin(
x[i-1] +
x[i])
251 - 2.0 * Math.cos(
x[i-1] -
x[i]) * Math.cos(
x[i-1] +
x[i]));
257 values[ihes] = obj_factor * (-400.0 *
x[i]);
259 values[ihes] += lambda[i]*(1.+
x[i])*Math.exp(
x[i]-
x[i+1]);
boolean eval_jac_g(int n, double[] x, boolean new_x, int m, int nele_jac, int[] iRow, int[] jCol, double[] values)
Callback function for the constraints Jacobian.
static final int C_STYLE
Use C index style for iRow and jCol vectors.
boolean eval_g(int n, double[] x, boolean new_x, int m, double[] g)
Callback function for the constraints.
double g[]
Values of constraint at final point.
boolean eval_grad_f(int n, double[] x, boolean new_x, double[] grad_f)
Callback function for the objective function gradient.
boolean initialize(int n)
In this function all problem sizes, bounds and initial guess should be initialized.
boolean eval_f(int n, double[] x, boolean new_x, double[] obj_value)
Callback function for the objective function.
Abstract class for the scalable problems.
Number * x
Input: Starting point Output: Optimal solution.
boolean eval_h(int n, double[] x, boolean new_x, double obj_factor, int m, double[] lambda, boolean new_lambda, int nele_hess, int[] iRow, int[] jCol, double[] values)
Callback function for the hessian.
Number Number Index Number Number Index Index nele_hess
Number of non-zero elements in Hessian of Lagrangian.
Number Number Index Number Number Index nele_jac
Number of non-zero elements in constraint Jacobian.
boolean get_starting_point(int n, boolean init_x, double[] x, boolean init_z, double[] z_L, double[] z_U, int m, boolean init_lambda, double[] lambda)
Callback function for retrieving a starting point.
boolean get_bounds_info(int n, double[] x_l, double[] x_u, int m, double[] g_l, double[] g_u)
Callback function for the variable bounds and constraint sides.
Implementation of Example 5.1 from "Sparse and Parially Separable Test Problems for Unconstrained and...
LuksanVlcek1(String name, double gl, double gu)
Constructor.
Number Number Index m
Number of constraints.