SIPSOLVER ver. 0.0.2 - 0001
---------------------------
SIPSOLVER is a FREEWARE (see 6.)) collection of SIP solvers implemented in MatLab(R).
SIPSOLVER attempts to solve standard semi-infinite optimization problems
of the form:
min f(x) s.t. g(i,x,y) <=0 , for each y in Y(i), i in I
g_fin(x) <=0
h(x) =0
with several semi-infinite constraints g(i,.,.), multi-dimensional compact
index sets Y(i)={y | ls_Y(i,y)<=0}, i in a finite discrete set I, and a finite
number of inequality und equality constraints g_fin, h.
The solution concept is that of stationary points and all iterates are feasible
points for the original SIP.
The assumptions on the related functions are:
f - continuously differentiable
g - continuously differentiable for unimodalization algorithm / twice continuously differentiable for convexification or hybrid algorithm
g_fin - continuously differentiable
h - continuously differentiable
ls_Y - continuous
_________________________________________________________________________________________
_________________________________________________________________________________________
Contents:
---------
0.) Some remarks
1.) The input/output-structure
2.) Building new problem data and important informations on SIPSOLVER
3.) Assembly of the structure PROB_DATA
4.) Related files
5.) References
6.) License (GPL v3)
7.) Contact Information
_________________________________________________________________________________________
_________________________________________________________________________________________
0.) Some remarks
----------------
The previous version of NLPSOLVER was ACA (Adaptive Convexification Algorithm).
ACA solves standard semi-infinite optimization problems with several semi-infinite
constraints and one-dimensional interval index sets by the adaptive convexification
algorithm and was implemented by Oliver Stein, German Research Foundation /
RWTH Aachen University.
The major changes in NLPSOLVER and differences to ACA are:
- the adaptive convexifiction algorithm is extended to multidimensional index sets
- an adaptive reduction algorithm for multidimensional index sets, based on unimodal
forms is included
- a hybrid method consisting of both algorithms for multidimensional index sets is
included
- an additional x-adaptation for all algorithm is included
- for the adaptive convexifiction algorithm a solving approach by dualization is
implemented - correct multiplier computation fails sometimes (work in progress)
SIPSOLVER can still be seen as a beta version and will be upgraded and updated in the
future. However, if one has some remarks, suggestions, or too much time, feel free to write
an e-mail (see 7.)).
If one uses SIPSOLVER within some research/publication please refer to our hompage.
_________________________________________________________________________________________
1.) The input/output-structure
------------------------------
The input/output-structure is:
[x,v,y_cluster,e,outer,iter,cpu_time] = sipsolver(example_name,display_results,display_output,termination,alpha_refinement,index_update,underestimator,adaptation)
Finite differences and automatic differentiation are not implemented
yet. All derivatives of the objective/constraints must be passed
by the user.
INPUT:
------
example_name : name of example to be solved (string)
display_results : graphical display of intermediate results
('disp_on'/'disp_off')
display_output : display of final results
('out_on'/'out_off')
termination : the termination criteria, use all, one, or
only stationarity
('term_all'/'term_one'/'term_stat')
alpha_refinement: refinement of parameters during iteration
('uniform_xy' for a single parameter uniformly
on the xl-xu-yl-yu-box,
'uniform_x' for adaptive refinement in y,
'uniform_0' for adaptive refinement in x and y)
index_update : choice of the subdivision and the subdivision
points
('active_all' use all active indices
'active_max' use those with maximal
constraint violation
'active_max_mid' use barycenter of all boxes
containing active indices
'active_all_mid' use barycenter of those with
maximal constraint violation )
underestimator : underestimator to use for lower level problems
('convex' for adaptive convexification
'C_form' for adaptive reduction
'hybrid' for hybrid method
'dual' for adaptive dualization method
(NOT tested for option uniform_0)
'other' for some other method
(-not implemented yet) )
adaptation : adaptation strategy to use for the construction of a
local box for the X-adaptation
-ONLY NEEDED FOR OPTION UNIFORM_ 0
( 0 use current iterate as center for the new box and
the distance of the ceurrent and the
previous iterate as radius
1 as in option 0, but the box is moved in a descend
direction for the objective function
2 as in option 0, but the box is moved in a descend
direction for the Lagrangian )
OUTPUT:
-------
x: optimal point
v: optimal value
y_cluster: clustered active indices at optimal point
(not implemented yet)
e: errors in optimal point, optimal value and
stationarity
outer: optimal point, optimal value and value gap of
outer approximation
iter: number of iterations in phases I and II
cpu_time: CPU time in phases I and II
EXAMPLES FOR THE CALL OF THE FUNCTION:
--------------------------------------
sipsolver('cha1ia','disp_on','out_on','term_all','uniform_x','active_all','convex');
sipsolver('cha1ia','disp_on','out_on','term_all','uniform_x','active_all','C_form');
sipsolver('cha1ia','disp_on','out_on','term_all','uniform_0','active_all','convex',1);
sipsolver('cha1ia','disp_on','out_on','term_all','uniform_0','active_all','hybrid',2);
_________________________________________________________________________________________
2.) Building new problem data and important informations on SIPSOLVER
---------------------------------------------------------------------
(the recommended requirements)
Build a new subdirectory in /examples . The name of the subdirectory is
the example name.
At next one has to create the defining functions as Matlab function
files. These functions must be contained in the created subdirectory,
and they are:
Name Type Function header
f.m Objective function val = f(x)
Input : vector of decision
variables x
Output: real number val
fx.m Gradient of the objective val = fx(x)
function (w.r.t. x)
Input : vector of decision
variables x
Output: row vector val
g.m Semi-infinite constraints val = g(i,x,y)
Input : number i of
semi-infinite
constraint,
vector of decision
variables x,
vector of indices
y for constraint i
Output: real number val
gx.m Gradients of the semi-infinite val = gx(i,x,y)
constraints w.r.t. x
Input : number i of
semi-infinite
constraint,
vector of decision
variables x,
vector of indices
y for constraint i
Output: row vector val
gy.m Gradients of the semi-infinite val = gy(i,x,y)
constraints w.r.t. y
Input : number i of
semi-infinite
constraint,
vector of decision
variables x,
vector of indices
y for constraint i
Output: row vector val
gyx.m Jakobian of the semi-infinite val = gyx(i,x,y)
constraints w.r.t. y and x
Input : number i of
semi-infinite
constraint,
vector of decision
variables x,
vector of indices
y for constraint i
Output: matrix val with
a number of length(x) rows
and length(y) columns
gyy.m Hessians of the semi-infinite val = gyy(i,x,y)
constraints w.r.t. y
Input : number i of
semi-infinite
constraint,
vector of decision
variables x,
vector of indices
y for constraint i
Output: matrix val with
a number of length(y) rows
and length(y) columns
ls_Y.m Function whose lower zero level val = ls_Y(i,y)
set is the index set Y(i) of the
constraint g_i
Input : number i of
semi-infinite
constraint,
vector of indices
y for constraint i
acay can be of type double or intval
Output: real number with the value of the function
if y is of type double
real interval with the range of the function on y
if y is of type intval
Additionally a MatLab mat-file containing some information on the problem
is needed:
Name Variable Name Requiered Contents
data.mat comment optional string containing an explanation of the
example
p yes number of semi-infinite restrictions g_i
p_fin optional number of finite inequality constraints g_fin
q optional number of equality constraints
xl yes vector of lower bounds for the x-variables
xu vector of upper bounds for the x-variables
(both, xl and xu, are rows)
x0 optional initial point
(if missing, then midpoint of
xl-xu-box is used)
yl yes matrix of lower bounds for the y-variables
yu yes matrix of upper bounds for the y-variables
(for i=1 to p the vectors yl(:,i),yu(:,i) are
lower and upper bounds of Y(i).
if dim(Y(i)).
_________________________________________________________________________________________
7.) Contact Information
-----------------------
Paul Steuermann - KIT, Germany
Institute of Operations Research - Continuous Optimization
e-mail: nlpsolver@ior.kit.edu
Homepage: kop.ior.kit.edu