FICO
FICO Xpress Optimization Examples Repository
FICO Optimization Community FICO Xpress Optimization Home
Back to examples browserPrevious exampleNext example

Local solutions

Description
Nonlinear example demonstrating the presence of locally optimal solutions, and the role of initial points

Further explanation of this example: 'Xpress NonLinear Reference Manual'

xnlp_local_optima.zip[download all files]

Source Files
By clicking on a file name, a preview is opened at the bottom of this page.
xnlp_local_optima.mos[download]





xnlp_local_optima.mos

! XNLP example demonstrating the presence of locally optimal solutions, and the
! role of initial points
!
! This example performs a series of solves for the exact same problem having
! several local optimas
!
! 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-2024 Fair Isaac Corporation
!       author: Zsolt Csizmadia
model mmxnlp_nlp_duals
uses "mmxnlp"; 

declarations
 x,y: mpvar
end-declarations

!setparam("xnlp_verbose",1)

! A function with several local valleys
x^2*sin(x) >= y

! Observe the regions of attractions
setparam("XPRS_NLPSOLVER",1)
writeln("Locally optimal solutions found:")	
writeln("------------------------------------------")
writeln("        x            y         objective  ")
writeln("------------------------------------------")
forall (i in -5..40) do
	setinitval(x,i)
	setinitval(y,i)
	minimize(x+y)
	if (getparam("xnlp_nlpstatus") = XNLP_STATUS_LOCALLY_OPTIMAL) then
		writeln(strfmt(getsol(x),13),",",strfmt(getsol(y),13),": ",
		        strfmt(getobjval,13))
    else
		writeln("Status is not locally optimal")	
	end-if
end-do

writeln("Global Optimum:")
setparam("XPRS_NLPSOLVER",2)
minimize(x+y)
if (getparam("xnlp_nlpstatus") = XNLP_STATUS_OPTIMAL) then
		writeln(strfmt(getsol(x),13),",",strfmt(getsol(y),13),": ",
		        strfmt(getobjval,13))
    else
		writeln("Status is not globally optimal")	
	end-if

end-model


Back to examples browserPrevious exampleNext example