optdir1.gms : Test option file location with CLP optDir and solvers that utilize subsolvers

Description

Test that solvers that utilize subsolvers send the correct option file location to their subsolver
in case the CLP OptDir is given.

Contributor: Michael Bussieck, May 2025


Small Model of Type : GAMS


Category : GAMS Test library


Main file : optdir1.gms

$title Test option file location with CLP optDir and solvers that utilize subsolvers (OPTDIR1, SEQ=985)

$ontext
Test that solvers that utilize subsolvers send the correct option file location to their subsolver
in case the CLP OptDir is given.

Contributor: Michael Bussieck, May 2025
$offtext

$call.checkErrorLevel gamslib -q fuel
$call.checkErrorLevel gamslib -q pump
$call.checkErrorLevel gamslib -q nash
$call.checkErrorLevel gamslib -q trnsport
$call.checkErrorLevel gamslib -q gussex1
$call.checkErrorLevel sed s/"SkipBaseCase 1"/"SkipBaseCase 1, OptFileInit 1, OptFile 2, LogOption 2"/ gussex1.gms > gussex1mod.gms
$call.checkErrorLevel emplib -q ferris43
$call.checkErrorLevel emplib -q batchsp
$call.checkErrorLevel emplib -q simplechance
$call.checkErrorLevel testlib -q embrhp01
$call mkdir xxxoptdirxxx > %system.nullfile% 2>&1
$echo writelp cplex.opt.in.currentdir > cplex.opt
$echo writelp cplex.opt.in.xxxoptdirxxx > xxxoptdirxxx/cplex.opt
$echo writelp cplex.op2.in.currentdir > cplex.op2
$echo writelp cplex.op2.in.xxxoptdirxxx > xxxoptdirxxx/cplex.op2
$echo tuneroutputpath xpress.op4.in.currentdir > xpress.op4
$echo tuneroutputpath xpress.op4.in.xxxoptdirxxx > xxxoptdirxxx/xpress.op4
$echo cooptfile conopt.op2.in.currentdir > conopt.op2
$echo cooptfile conopt.op2.in.xxxoptdirxxx > xxxoptdirxxx/conopt.op2
$echo qpsolver snopt.op4.in.currentdir > snopt.op4
$echo qpsolver snopt.op4.in.xxxoptdirxxx > xxxoptdirxxx/snopt.op4
$echo crash_merit_function path.opt.in.currentdir > path.opt
$echo crash_merit_function path.opt.in.xxxoptdirxxx > xxxoptdirxxx/path.opt
$echo crash_merit_function path.op3.in.currentdir > path.op3
$echo crash_merit_function path.op3.in.xxxoptdirxxx > xxxoptdirxxx/path.op3
$echo zipdebug jams.op5.in.xxxoptdirxxx > xxxoptdirxxx/jams.op5
$echo zipdebug jams.op5.in.currentdir > jams.op5


$onecho > xxxoptdirxxx/alphaecp.opt
mipsolver cplex.1
miploglevel 1
nlpsolver conopt.2
nlploglevel 1
$offecho
$call.checkErrorLevel gams fuel minlp=alphaecp optfile=1 optdir=xxxoptdirxxx lo=2
*
$call.checkErrorLevel grep -q "conopt.op2.in.xxxoptdirxxx" fuel.log
$call grep -q "conopt.op2.in.currentdir" fuel.log
$if not errorlevel 1 $abort Found unexpected "conopt.op2.in.currentdir" in fuel.log 
*
$call.checkErrorLevel grep -q "cplex.opt.in.xxxoptdirxxx" fuel.log
$call grep -q "cplex.opt.in.currentdir" fuel.log
$if not errorlevel 1 $abort Found unexpected "cplex.opt.in.currentdir" in fuel.log 

$onecho > xxxoptdirxxx/antigone.opt
nlp_solver conopt
conopt_optfile conopt.op2
cplex_optfile cplex.opt
$offecho
$call.checkErrorLevel gams fuel minlp=antigone optfile=1 optdir=xxxoptdirxxx lo=2 requestmarginals=1
*
$call.checkErrorLevel grep -q "conopt.op2.in.xxxoptdirxxx" fuel.log
$call grep -q "conopt.op2.in.currentdir" fuel.log
$if not errorlevel 1 $abort Found unexpected "conopt.op2.in.currentdir" in fuel.log 
*
$call.checkErrorLevel grep -q "cplex.opt.in.xxxoptdirxxx" fuel.log
$call grep -q "cplex.opt.in.currentdir" fuel.log
$if not errorlevel 1 $abort Found unexpected "cplex.opt.in.currentdir" in fuel.log 

$ifThen.baron exist "%gams.sysdir%optbaron.def"
$onecho > xxxoptdirxxx/baron.opt
nlpsol 6
extnlpsolver conopt.2
$offecho
$call mkdir baronscratch > %system.nullfile% 2>&1
$call.checkErrorLevel gams fuel minlp=baron optfile=1 procdir=baronscratch optdir=xxxoptdirxxx lo=2 keep=1 > %system.nullfile% 2>&1
*
$call.checkErrorLevel grep -q "conopt.op2.in.xxxoptdirxxx" baronscratch/gmsjjlog.dat
$call grep -q "conopt.op2.in.currentdir" baronscratch/gmsjjlog.dat
$if not errorlevel 1 $abort Found unexpected "conopt.op2.in.currentdir" in baronscratch/gmsjjlog.dat
$endIf.baron

$onecho > xxxoptdirxxx/dicopt.opt
mipsolver cplex xpress
mipoptfile cplex.opt xpress.op4
nlpsolver conopt snopt
nlpoptfile conopt.op2 snopt.op4
$offecho
$call.checkErrorLevel gams fuel minlp=dicopt optfile=1 optdir=xxxoptdirxxx lo=2
*
$call.checkErrorLevel grep -q "cplex.opt.in.xxxoptdirxxx" fuel.log
$call grep -q "cplex.opt.in.currentdir"  fuel.log
$if not errorlevel 1 $abort Found unexpected "cplex.opt.in.currentdir" in  fuel.log
*
$call.checkErrorLevel grep -q "xpress.op4.in.xxxoptdirxxx" fuel.log
$call grep -q "xpress.op4.in.currentdir"  fuel.log
$if not errorlevel 1 $abort Found unexpected "xpress.op4.in.currentdir" in  fuel.log
*
$call.checkErrorLevel grep -q "conopt.op2.in.xxxoptdirxxx" fuel.log
$call grep -q "conopt.op2.in.currentdir"  fuel.log
$if not errorlevel 1 $abort Found unexpected "conopt.op2.in.currentdir" in  fuel.log
*
$call.checkErrorLevel grep -q "snopt.op4.in.xxxoptdirxxx" fuel.log
$call grep -q "snopt.op4.in.currentdir"  fuel.log
$if not errorlevel 1 $abort Found unexpected "snopt.op4.in.currentdir" in  fuel.log

$onecho > xxxoptdirxxx/examiner.opt
subSolver conopt
subSolverOpt 2
$offecho
$call.checkErrorLevel gams trnsport lp=examiner optfile=1 optdir=xxxoptdirxxx lo=2
*
$call.checkErrorLevel grep -q "conopt.op2.in.xxxoptdirxxx" trnsport.log
$call grep -q "conopt.op2.in.currentdir" trnsport.log
$if not errorlevel 1 $abort Found unexpected "conopt.op2.in.currentdir" in  trnsport.log

$onecho > xxxoptdirxxx/examiner2.opt
subSolver conopt
subSolverOpt 2
$offecho
$call.checkErrorLevel gams trnsport lp=examiner2 optfile=1 optdir=xxxoptdirxxx lo=2
*
$call.checkErrorLevel grep -q "conopt.op2.in.xxxoptdirxxx" trnsport.log
$call grep -q "conopt.op2.in.currentdir" trnsport.log
$if not errorlevel 1 $abort Found unexpected "conopt.op2.in.currentdir" in  trnsport.log

$onecho > xxxoptdirxxx/gamschk.opt
solvername conopt
optfile 2
solve
$offecho
$call.checkErrorLevel gams trnsport lp=gamschk optfile=1 optdir=xxxoptdirxxx lo=2
*
$call.checkErrorLevel grep -q "conopt.op2.in.xxxoptdirxxx" trnsport.log
$call grep -q "conopt.op2.in.currentdir" trnsport.log
$if not errorlevel 1 $abort Found unexpected "conopt.op2.in.currentdir" in  trnsport.log

$onecho > xxxoptdirxxx/jams.opt
subsolver path
subsolveropt 3
$offecho
$call.checkErrorLevel gams ferris43 emp=jams optfile=1 optdir=xxxoptdirxxx lo=2
*
$call.checkErrorLevel grep -q "path.op3.in.xxxoptdirxxx" ferris43.log
$call grep -q "path.op3.in.currentdir" ferris43.log
$if not errorlevel 1 $abort Found unexpected "path.op3.in.currentdir" in  ferris43.log

$onecho > xxxoptdirxxx/nlpec.opt
subsolver conopt
subsolveropt 2
$offecho
$call.checkErrorLevel gams nash mpec=nlpec mcp=path optfile=1 optdir=xxxoptdirxxx lo=2
*
$call.checkErrorLevel grep -q "conopt.op2.in.xxxoptdirxxx" nash.log
$call grep -q "conopt.op2.in.currentdir" nash.log
$if not errorlevel 1 $abort Found unexpected "conopt.op2.in.currentdir" in  nash.log

$onecho > xxxoptdirxxx/sbb.opt
rootsolver conopt.2
subsolver snopt.4
loglevel 2
$offecho
$call.checkErrorLevel gams fuel minlp=sbb optfile=1 optdir=xxxoptdirxxx lo=2
*
$call.checkErrorLevel grep -q "conopt.op2.in.xxxoptdirxxx" fuel.log
$call grep -q "conopt.op2.in.currentdir" fuel.log
$if not errorlevel 1 $abort Found unexpected "conopt.op2.in.currentdir" in fuel.log 
*
$call.checkErrorLevel grep -q "snopt.op4.in.xxxoptdirxxx" fuel.log
$call grep -q "snopt.op4.in.currentdir" fuel.log
$if not errorlevel 1 $abort Found unexpected "snopt.op4.in.currentdir" in fuel.log 

$onecho > xxxoptdirxxx/shot.opt
Primal.FixedInteger.Solver=1
Subsolver.GAMS.NLP.Solver=conopt
Subsolver.GAMS.NLP.OptionsFilename=conopt.op2
Output.Console.PrimalSolver.Show=1
$offecho
$call.checkErrorLevel gams pump minlp=shot optfile=1 optdir=xxxoptdirxxx lo=2
*
$call.checkErrorLevel grep -q "conopt.op2.in.xxxoptdirxxx" pump.log
$call grep -q "conopt.op2.in.currentdir" pump.log
$if not errorlevel 1 $abort Found unexpected "conopt.op2.in.currentdir" in pump.log 

$onecho > xxxoptdirxxx/de.opt
subsolver cplex
subsolveropt 1
evsubsolver cplex
evsubsolveropt 1
$offecho
$call.checkErrorLevel gams batchsp emp=de mip=cplex optfile=1 optdir=xxxoptdirxxx lo=2
*
$call.checkErrorLevel grep -q "cplex.opt.in.xxxoptdirxxx" batchsp.log
$call grep -q "cplex.opt.in.currentdir" batchsp.log
$if not errorlevel 1 $abort Found unexpected "cplex.opt.in.currentdir" in batchsp.log 

$onecho > xxxoptdirxxx/de.opt
jamsopt jams.op5
subsolver xpress
subsolveropt 4
$offecho
$call.checkErrorLevel gams simplechance emp=de optfile=1 optdir=xxxoptdirxxx lo=2
*
$call.checkErrorLevel grep -q "jams.op5.in.xxxoptdirxxx" simplechance.log
$call grep -q "jams.op5.in.currentdir" simplechance.log
$if not errorlevel 1 $abort Found unexpected "jams.op5.in.currentdir" in simplechance.log 
*
$call.checkErrorLevel grep -q "xpress.op4.in.xxxoptdirxxx" simplechance.log
$call grep -q "xpress.op4.in.currentdir" simplechance.log
$if not errorlevel 1 $abort Found unexpected "xpress.op4.in.currentdir" in simplechance.log 

$onecho > xxxoptdirxxx/reshop.opt
subsolveropt 3
$offecho
$call.checkErrorLevel gams embrhp01 emp=reshop optfile=1 optdir=xxxoptdirxxx lo=3 > embrhp01.log
*
$call.checkErrorLevel grep -q "path.op3.in.xxxoptdirxxx" embrhp01.log
$call grep -q "path.op3.in.currentdir" embrhp01.log
$if not errorlevel 1 $abort Found unexpected "path.op3.in.currentdir" in embrhp01.log

$call.checkErrorLevel gams gussex1mod lp=cplex optdir=xxxoptdirxxx lo=2
*
$call.checkErrorLevel grep -q "cplex.opt.in.xxxoptdirxxx" gussex1mod.log
$call grep -q "cplex.opt.in.currentdir" gussex1mod.log
$if not errorlevel 1 $abort Found unexpected "cplex.opt.in.currentdir" in gussex1mod.log 
*
$call.checkErrorLevel grep -q "cplex.op2.in.xxxoptdirxxx" gussex1mod.log
$call grep -q "cplex.op2.in.currentdir" gussex1mod.log
$if not errorlevel 1 $abort Found unexpected "cplex.op2.in.currentdir" in gussex1mod.log