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