Initializing help system before first use

Feasiblity breakers \ penalty error vectors


Type: Programming
Rating: 2 (easy-medium)
Description: Nonlinear example demonstrating the need for penalty feasiblity breakers
File(s): xnlp_penalty_breakers.mos


xnlp_penalty_breakers.mos
! XNLP example demonstrating the need for penalty feasiblity breakers
!
! This is an SLP specific example.
! Using Xpress-SLP, this examples solves two problem types that relate to various 
! infeasibilities in SLP:
!   One originating from steps taken along the linearization
!   and one originating from deviation from the linearization
!
! This example demonstrates a particular non-linear optimization concept as related 
! to Xpress NonLinear.
! The version of the example is for Xpress 7.5.
!
!  (c) 2013 Fair Isaac Corporation
!       author: Zsolt Csizmadia
model mmxnlp_nlp_duals
uses "mmxnlp"; 

declarations
 x,y: mpvar
end-declarations

! This example is hard to be discussed without the solver logs
setparam("xnlp_verbose",1)

! This example presents SLP specific behavour
setparam("xnlp_solver",XNLP_SOLVER_XSLP)

x is_free
y is_free

! There is only one constraint. It is not possible to stay on the surface of
! the nonlinear constraint, but feasiblity is achieved by virtue of 
! convergnece
x^2+y^2 = 1
minimize(y)
writeln("x = ", getsol(x),", y = ",getsol(y))

! adding another constraint, not even necessarily nonlinear
! it is no longer possible to move along the linearization
Additional := nlctr(x + y = 1)
! Note that the previous optimal solution is on this constraint 
! This definition demonstrates an explicit type cast in Mosel
! The constraint will still be loaded as linear, but the cast
! will allow its redefinition as a nonlinear constraint
minimize(y)
writeln("x = ", getsol(x),", y = ",getsol(y))

! In the previous example the extra linear constraint aided the search
! Replacing it with a more complex nonlienar constrint demonstrates how SLP
! sometimes struggle to stay on the linearizations 
Additional := sin(x) + sin(y) = 1
minimize(y)

end-model