| |||||||||||
Zero placeholders Description Nonlinear example demonstrating local optimality and the role of placeholders Further explanation of this example: 'Xpress NonLinear Reference Manual'
Source Files By clicking on a file name, a preview is opened at the bottom of this page.
xnlp_zero_placeholder.mos ! XNLP example demonstrating local optimality and the role of placeholders ! ! This examples solves a simple, then a complex function with many ! local optimal solutions both with SLP and Knitro to demonstrate ! the role of placeholders and delta_z, which while allows SLP to ! make long steps in degenrate situations, also tends to drive it to ! solutions with a large vertex index. ! ! 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: mpvar end-declarations x is_free -1 <= x x <= 1 !setparam("xnlp_verbose",1) ! Start solving using a second order method, startign from 0, 1, and -1 setparam("xnlp_solver",XNLP_SOLVER_KNITRO) setparam("XPRS_NLPSOLVER",1) setinitval(x,0) minimize(x^3) Knitro_zero := getobjval Knitro_zero_x := getsol(x) setinitval(x,1) minimize(x^3) Knitro_one := getobjval Knitro_one_x := getsol(x) setinitval(x,-1) minimize(x^3) Knitro_mone := getobjval Knitro_mone_x := getsol(x) ! Now solve using SLP setparam("xnlp_solver",XNLP_SOLVER_XSLP) setinitval(x,0) minimize(x^3) SLP_zero := getobjval SLP_zero_x := getsol(x) setinitval(x,1) minimize(x^3) SLP_one := getobjval SLP_one_x := getsol(x) setinitval(x,-1) minimize(x^3) SLP_mone := getobjval SLP_mone_x := getsol(x) ! Summarize writeln writeln("Function: x^3") writeln("Starting point: -1 0 1 "); writeln("---------------------------------------------------") writeln("Knitro : ",strfmt(Knitro_mone,13), strfmt(Knitro_zero,13), strfmt(Knitro_one,13)); writeln("SLP : ",strfmt(SLP_mone,13), strfmt(SLP_zero,13), strfmt(SLP_one,13)); writeln("-- at x = ") writeln("Knitro : ",strfmt(Knitro_mone_x,13), strfmt(Knitro_zero_x,13), strfmt(Knitro_one_x,13)); writeln("SLP : ",strfmt(SLP_mone_x,13), strfmt(SLP_zero_x,13), strfmt(SLP_one_x,13)); objective := x*sin((10*x)^2); ! Start solving using a second order method, startign from 0, 1, and -1 setparam("xnlp_solver",XNLP_SOLVER_KNITRO) setinitval(x,0) minimize( objective ) F_Knitro_zero := getobjval F_Knitro_zero_x := getsol(x) setinitval(x,1) minimize( objective ) F_Knitro_one := getobjval F_Knitro_one_x := getsol(x) setinitval(x,-1) minimize( objective ) F_Knitro_mone := getobjval F_Knitro_mone_x := getsol(x) ! Now solve using SLP setparam("xnlp_solver",XNLP_SOLVER_XSLP) setinitval(x,0) minimize( objective ) F_SLP_zero := getobjval F_SLP_zero_x := getsol(x) setinitval(x,1) minimize( objective ) F_SLP_one := getobjval F_SLP_one_x := getsol(x) setinitval(x,-1) minimize( objective ) F_SLP_mone := getobjval F_SLP_mone_x := getsol(x) ! Summarize writeln writeln("Function: x*sin((10*x)^2)") writeln("Starting point: -1 0 1 "); writeln("---------------------------------------------------") writeln("Knitro : ",strfmt(F_Knitro_mone,13), strfmt(F_Knitro_zero,13), strfmt(F_Knitro_one,13)); writeln("SLP : ",strfmt(F_SLP_mone,13), strfmt(F_SLP_zero,13), strfmt(F_SLP_one,13)); writeln("-- at x = ") writeln("Knitro : ",strfmt(F_Knitro_mone_x,13), strfmt(F_Knitro_zero_x,13), strfmt(F_Knitro_one_x,13)); writeln("SLP : ",strfmt(F_SLP_mone_x,13), strfmt(F_SLP_zero_x,13), strfmt(F_SLP_one_x,13)); end-model end-model | |||||||||||
© Copyright 2024 Fair Isaac Corporation. |