Closed svigerske closed 4 years ago
I cannot reproduce this (I added some asserts as well to https://github.com/coin-or/SHOT/tree/issue46). Are you calling SHOT from GAMS? Is it the same behavior if calling it directly? I cannot seem to use GAMS 30.3 with the current version of SHOT (crashes), so I cannot verify it myself...
I can try with the SHOT executable tomorrow - need to build a Cbc first.
hasDualAuxiliaryObjectiveVariable()
is false, so it's not just a check for hasDualAuxiliaryObjectiveVariable()
missing?
Ok, strange. hasDualAuxiliaryObjectiveVariable
should be true, since the objective function is quadratic and Cbc in SHOT does not support quadratic objectives, and thus introduces an auxiliary variable that it minimizes in the MIP problem... I'll take a closer look tomorrow as well.
Could you run SHOT with debug enabled (Output.Debug.Enable=true
), zip the directory created (default debug/problemname
), and send it to me? Then I could better debug the situation...
I should have given you more output and backtraces from the beginning on.
I see TaskCreateDualProblem::createProblem()
call destination->setDualAuxiliaryObjectiveVariableIndex()
, but the MIPSolverCbc object where this sets the dualauxiliaryobjectivevariableindex is different from the one where the error happens later.
SHOT 31.0.0 rb9ce796 ALFA Released 6Apr20 LEG x86 64bit/Linux
╶ Supporting Hyperplane Optimization Toolkit (SHOT) ──────────────────────────────────────────────────────────────────╴
Andreas Lundell and Jan Kronqvist, Åbo Akademi University, Finland.
See documentation for full list of contributors and utilized software libraries.
Version: 1.0.alpha 1. Git hash: 6e1409bf. Released Apr 8 2020.
For more information visit https://shotsolver.dev
Reading options from /home/stefan/work/gams/build/gms test/mod test/shot.opt
Starting to copy variables between GAMS modeling and SHOT problem objects.
Finished copying variables between GAMS modeling and SHOT problem objects.
Starting to copy objective function between GAMS modeling and SHOT problem objects.
Finished copying objective function between GAMS modeling and SHOT problem objects.
Starting to copy constraints between GAMS modeling and SHOT problem objects.
Finished copying constraints between GAMS modeling and SHOT problem objects.
Starting to copy linear terms between GAMS modeling and SHOT problem objects.
Finished copying linear terms between GAMS modeling and SHOT problem objects.
Starting to copy quadratic terms between GAMS modeling and SHOT problem objects.
Finished copying quadratic terms between GAMS modeling and SHOT problem objects.
Starting to copy nonlinear expressions between GAMS modeling and SHOT problem objects.
Finished copying nonlinear expressions between GAMS modeling and SHOT problem objects.
Performing bound tightening on reformulated problem.
Bound tightening pass 1 of 5.
Bounds tightened for variable poil(period-1): [-1e+50,1e+50] -> [0.0,1e+50].
bound tightened using linear term in constraint lowoil(period-1) .
Bounds tightened for variable poil(period-2): [-1e+50,1e+50] -> [0.0,1e+50].
bound tightened using linear term in constraint lowoil(period-2) .
Bounds tightened for variable poil(period-3): [-1e+50,1e+50] -> [0.0,1e+50].
bound tightened using linear term in constraint lowoil(period-3) .
Bounds tightened for variable poil(period-1): [0.0,1e+50] -> [0.0,500.0].
bound tightened using linear term in constraint maxoil(period-1) .
Bounds tightened for variable poil(period-2): [0.0,1e+50] -> [0.0,500.0].
bound tightened using linear term in constraint maxoil(period-2) .
Bounds tightened for variable poil(period-3): [0.0,1e+50] -> [0.0,500.0].
bound tightened using linear term in constraint maxoil(period-3) .
Bounds tightened for variable oil(period-1): [0.0,1e+50] -> [0.0,3500.0].
bound tightened using linear term in constraint floweq(period-1) .
Bounds tightened for variable volume(period-1): [0.0,4000.0] -> [0.0,3500.0].
bound tightened using linear term in constraint floweq(period-1) .
Bounds tightened for variable oil(period-2): [0.0,1e+50] -> [0.0,4500.0].
bound tightened using linear term in constraint floweq(period-2) .
Bounds tightened for variable oil(period-3): [0.0,1e+50] -> [0.0,2500.0].
bound tightened using linear term in constraint floweq(period-3) .
Bounds tightened for variable volume(period-2): [0.0,4000.0] -> [1500.0,4000.0].
bound tightened using linear term in constraint floweq(period-3) .
Bounds tightened for variable poil(period-2): [0.0,500.0] -> [200.0,500.0].
bound tightened using linear term in constraint demcons(period-2) .
Bound tightening pass 2 of 5.
- Bounds for 8 variables tightened in 0.00 s.
Cbc selected as MIP solver.
Creating dual problem
Breakpoint 1, SHOT::TaskCreateDualProblem::createProblem (this=0x55555562a440, destination=..., sourceProblem=...) at TaskCreateDualProblem.cpp:74
74 {
(gdb) bt
#0 SHOT::TaskCreateDualProblem::createProblem (this=0x55555562a440, destination=..., sourceProblem=...) at TaskCreateDualProblem.cpp:74
#1 0x00007ffff6c0ca5c in SHOT::TaskCreateDualProblem::TaskCreateDualProblem (this=0x55555562a440, envPtr=...) at TaskCreateDualProblem.cpp:29
#2 0x00007ffff6be8035 in __gnu_cxx::new_allocator<SHOT::TaskCreateDualProblem>::construct<SHOT::TaskCreateDualProblem, std::shared_ptr<SHOT::Environment>&> (this=0x7fffffffbeef, __p=0x55555562a440)
at /usr/include/c++/9.3.0/ext/new_allocator.h:147
#3 0x00007ffff6be69e8 in std::allocator_traits<std::allocator<SHOT::TaskCreateDualProblem> >::construct<SHOT::TaskCreateDualProblem, std::shared_ptr<SHOT::Environment>&> (__a=..., __p=0x55555562a440)
at /usr/include/c++/9.3.0/bits/alloc_traits.h:484
#4 0x00007ffff6be4430 in std::_Sp_counted_ptr_inplace<SHOT::TaskCreateDualProblem, std::allocator<SHOT::TaskCreateDualProblem>, (__gnu_cxx::_Lock_policy)2>::_Sp_counted_ptr_inplace<std::shared_ptr<SHOT::Environment>&> (this=0x55555562a430, __a=...) at /usr/include/c++/9.3.0/bits/shared_ptr_base.h:548
#5 0x00007ffff6be267e in std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count<SHOT::TaskCreateDualProblem, std::allocator<SHOT::TaskCreateDualProblem>, std::shared_ptr<SHOT::Environment>&> (
this=0x7fffffffc088, __p=@0x7fffffffc080: 0x0, __a=...) at /usr/include/c++/9.3.0/bits/shared_ptr_base.h:679
#6 0x00007ffff6be1c0c in std::__shared_ptr<SHOT::TaskCreateDualProblem, (__gnu_cxx::_Lock_policy)2>::__shared_ptr<std::allocator<SHOT::TaskCreateDualProblem>, std::shared_ptr<SHOT::Environment>&> (
this=0x7fffffffc080, __tag=...) at /usr/include/c++/9.3.0/bits/shared_ptr_base.h:1344
#7 0x00007ffff6be14bd in std::shared_ptr<SHOT::TaskCreateDualProblem>::shared_ptr<std::allocator<SHOT::TaskCreateDualProblem>, std::shared_ptr<SHOT::Environment>&> (this=0x7fffffffc080, __tag=...)
at /usr/include/c++/9.3.0/bits/shared_ptr.h:359
#8 0x00007ffff6be078f in std::allocate_shared<SHOT::TaskCreateDualProblem, std::allocator<SHOT::TaskCreateDualProblem>, std::shared_ptr<SHOT::Environment>&> (__a=...)
at /usr/include/c++/9.3.0/bits/shared_ptr.h:702
#9 0x00007ffff6bdf8e5 in std::make_shared<SHOT::TaskCreateDualProblem, std::shared_ptr<SHOT::Environment>&> () at /usr/include/c++/9.3.0/bits/shared_ptr.h:718
#10 0x00007ffff6bec8bf in SHOT::SolutionStrategyMultiTree::SolutionStrategyMultiTree (this=0x55555567a9c0, envPtr=...) at SolutionStrategyMultiTree.cpp:111
#11 0x00007ffff69db22e in std::make_unique<SHOT::SolutionStrategyMultiTree, std::shared_ptr<SHOT::Environment>&> () at /usr/include/c++/9.3.0/bits/unique_ptr.h:857
#12 0x00007ffff69bbb10 in SHOT::Solver::selectStrategy (this=0x7fffffffc800) at Solver.cpp:457
#13 0x00007ffff69bb454 in SHOT::Solver::setProblem (this=0x7fffffffc800, problem=..., modelingSystem=...) at Solver.cpp:440
(gdb) next
77 bool variablesInitialized = true;
(gdb)
79 for(auto& V : sourceProblem->allVariables)
(gdb)
82 && destination->addVariable(V->name.c_str(), V->properties.type, V->lowerBound, V->upperBound);
(gdb) until
81 variablesInitialized = variablesInitialized
(gdb)
82 && destination->addVariable(V->name.c_str(), V->properties.type, V->lowerBound, V->upperBound);
(gdb)
79 for(auto& V : sourceProblem->allVariables)
(gdb)
85 if(!variablesInitialized)
(gdb)
88 if(sourceProblem->auxiliaryObjectiveVariable) // The source problem already has a nonlinear objective variable
(gdb) next
92 else if(sourceProblem->objectiveFunction->properties.classification > E_ObjectiveFunctionClassification::Quadratic)
(gdb) print sourceProblem->objectiveFunction->properties.classification
$1 = SHOT::E_ObjectiveFunctionClassification::QuadraticConsideredAsNonlinear
(gdb) next
94 double objVarBound = env->settings->getSetting<double>("Variables.NonlinearObjectiveVariable.Bound", "Model");
(gdb)
96 Interval objectiveBound;
(gdb)
100 objectiveBound = sourceProblem->objectiveFunction->getBounds();
(gdb)
107 destination->setDualAuxiliaryObjectiveVariableIndex(sourceProblem->properties.numberOfVariables);
(gdb) print destination
$2 = {<std::__shared_ptr<SHOT::IMIPSolver, (__gnu_cxx::_Lock_policy)2>> = {<std::__shared_ptr_access<SHOT::IMIPSolver, (__gnu_cxx::_Lock_policy)2, false, false>> = {<No data fields>}, _M_ptr = 0x55555567b9d0,
_M_refcount = {_M_pi = 0x55555567b9c0}}, <No data fields>}
(gdb) print sourceProblem->properties.numberOfVariables
$3 = 15
(gdb) step
std::__shared_ptr_access<SHOT::IMIPSolver, (__gnu_cxx::_Lock_policy)2, false, false>::operator-> (this=0x7fffffffbcf0) at /usr/include/c++/9.3.0/bits/shared_ptr_base.h:1015
1015 return _M_get();
(gdb)
std::__shared_ptr_access<SHOT::IMIPSolver, (__gnu_cxx::_Lock_policy)2, false, false>::_M_get (this=0x7fffffffbcf0) at /usr/include/c++/9.3.0/bits/shared_ptr_base.h:1021
1021 { return static_cast<const __shared_ptr<_Tp, _Lp>*>(this)->get(); }
(gdb)
std::__shared_ptr<SHOT::IMIPSolver, (__gnu_cxx::_Lock_policy)2>::get (this=0x7fffffffbcf0) at /usr/include/c++/9.3.0/bits/shared_ptr_base.h:1310
1310 { return _M_ptr; }
(gdb)
std::__shared_ptr_access<SHOT::IMIPSolver, (__gnu_cxx::_Lock_policy)2, false, false>::_M_get (this=0x7fffffffbcf0) at /usr/include/c++/9.3.0/bits/shared_ptr_base.h:1021
1021 { return static_cast<const __shared_ptr<_Tp, _Lp>*>(this)->get(); }
(gdb)
std::__shared_ptr_access<SHOT::IMIPSolver, (__gnu_cxx::_Lock_policy)2, false, false>::operator-> (this=0x7fffffffbcf0) at /usr/include/c++/9.3.0/bits/shared_ptr_base.h:1016
1016 }
(gdb)
std::__shared_ptr_access<SHOT::Problem, (__gnu_cxx::_Lock_policy)2, false, false>::operator-> (this=0x7fffffffbd00) at /usr/include/c++/9.3.0/bits/shared_ptr_base.h:1015
1015 return _M_get();
(gdb)
std::__shared_ptr_access<SHOT::Problem, (__gnu_cxx::_Lock_policy)2, false, false>::_M_get (this=0x7fffffffbd00) at /usr/include/c++/9.3.0/bits/shared_ptr_base.h:1021
1021 { return static_cast<const __shared_ptr<_Tp, _Lp>*>(this)->get(); }
(gdb)
std::__shared_ptr<SHOT::Problem, (__gnu_cxx::_Lock_policy)2>::get (this=0x7fffffffbd00) at /usr/include/c++/9.3.0/bits/shared_ptr_base.h:1310
1310 { return _M_ptr; }
(gdb)
std::__shared_ptr_access<SHOT::Problem, (__gnu_cxx::_Lock_policy)2, false, false>::_M_get (this=0x7fffffffbd00) at /usr/include/c++/9.3.0/bits/shared_ptr_base.h:1021
1021 { return static_cast<const __shared_ptr<_Tp, _Lp>*>(this)->get(); }
(gdb)
std::__shared_ptr_access<SHOT::Problem, (__gnu_cxx::_Lock_policy)2, false, false>::operator-> (this=0x7fffffffbd00) at /usr/include/c++/9.3.0/bits/shared_ptr_base.h:1016
1016 }
(gdb)
SHOT::TaskCreateDualProblem::createProblem (this=0x55555562a440, destination=..., sourceProblem=...) at TaskCreateDualProblem.cpp:107
107 destination->setDualAuxiliaryObjectiveVariableIndex(sourceProblem->properties.numberOfVariables);
(gdb)
SHOT::MIPSolverCbc::setDualAuxiliaryObjectiveVariableIndex (this=0x55555567b9d0, index=15) at /home/stefan/work/gams/products/src/shot/src/MIPSolver/MIPSolverCbc.h:149
149 MIPSolverBase::setDualAuxiliaryObjectiveVariableIndex(index);
(gdb) l
144 return (MIPSolverBase::getDualAuxiliaryObjectiveVariableIndex());
145 }
146
147 void setDualAuxiliaryObjectiveVariableIndex(int index) override
148 {
149 MIPSolverBase::setDualAuxiliaryObjectiveVariableIndex(index);
150 }
151
152 std::string getConstraintIdentifier(E_HyperplaneSource source) override
153 {
(gdb) break
Breakpoint 2 at 0x7ffff6a0af31: file /home/stefan/work/gams/products/src/shot/src/MIPSolver/MIPSolverCbc.h, line 149.
(gdb) step
SHOT::MIPSolverBase::setDualAuxiliaryObjectiveVariableIndex (this=0x55555567b9d8, index=15) at /home/stefan/work/gams/products/src/shot/src/MIPSolver/MIPSolverBase.h:105
105 dualAuxiliaryObjectiveVariableIndex = index;
(gdb)
106 dualAuxiliaryObjectiveVariableDefined = true;
(gdb)
107 };
(gdb)
SHOT::MIPSolverCbc::setDualAuxiliaryObjectiveVariableIndex (this=0x55555567b9d0, index=15) at /home/stefan/work/gams/products/src/shot/src/MIPSolver/MIPSolverCbc.h:150
150 }
(gdb)
SHOT::TaskCreateDualProblem::createProblem (this=0x55555562a440, destination=..., sourceProblem=...) at TaskCreateDualProblem.cpp:109
109 if(sourceProblem->objectiveFunction->properties.isMinimize)
(gdb) cont
Continuing.
Dual problem created
╶ Problem instance ───────────────────────────────────────────────────────────────────────────────────────────────────╴
Original Reformulated
Problem classification: MIQCQP, nonconvex MINLP, nonconvex
Objective function direction: minimize minimize
Objective function type: quadratic, convex quadratic but considered as nonlinear, convex
Number of constraints: 18 18
- linear: 12 12
- convex quadratic: 3 0
- nonconvex quadratic: 3 0
- convex nonlinear: 0 3
- nonconvex nonlinear: 0 3
Number of variables: 15 15
- real: 12 12
- binary: 3 3
- nonlinear: 6 6
╶ Options ────────────────────────────────────────────────────────────────────────────────────────────────────────────╴
No options file specified.
Nondefault options used:
- Dual.ESH.InteriorPoint.CuttingPlane.IterationLimit = 50
- Dual.HyperplaneCuts.ConstraintSelectionFactor = 1.0
- Dual.HyperplaneCuts.UseIntegerCuts = true
- Dual.MIP.NumberOfThreads = 1
- Dual.MIP.Presolve.UpdateObtainedBounds = false
- Dual.MIP.SolutionLimit.Initial = 2147483647
- Dual.MIP.Solver = 2
- Dual.Relaxation.Use = false
- Dual.TreeStrategy = 0
- Model.Reformulation.Constraint.PartitionNonlinearTerms = 1
- Model.Reformulation.Constraint.PartitionQuadraticTerms = 0
- Model.Reformulation.ObjectiveFunction.PartitionNonlinearTerms = 1
- Model.Reformulation.ObjectiveFunction.PartitionQuadraticTerms = 0
- Model.Reformulation.Quadratics.Strategy = 0
- Output.Console.LogLevel = 1
- Primal.FixedInteger.CallStrategy = 0
- Primal.FixedInteger.OnlyUniqueIntegerCombinations = false
- Primal.FixedInteger.Source = 0
- Primal.Tolerance.TrustLinearConstraintValues = false
- Subsolver.Ipopt.LinearSolver = 1
- Termination.IterationLimit = 2147483647
- Termination.ObjectiveGap.Absolute = 1e-10
- Termination.ObjectiveGap.Relative = 0.1
- Termination.TimeLimit = 1000.0
Dual strategy: Multi-tree
- cut algorithm: ESH
- solver: Cbc 2.10
Primal NLP solver: Ipopt 3.13.1 with HSL MA27 linear solver
╶ Interior point search ──────────────────────────────────────────────────────────────────────────────────────────────╴
Strategy selected: cutting plane minimax
Initializing NLP solver
Cbc selected as MIP solver for minimax solver.
Creating LP problem for minimax solver
LP problem for minimax solver created
Activating LP strategy
Cutting plane minimax selected as NLP solver.
Solving NLP problem.
Iteration │ Time │ Cuts │ Objective value │ Objective diff.
#: type │ tot. │ + | tot. │ problem | line srch │ abs. | rel.
╶─────────────────┴────────┴─────────────┴─────────────────────────┴──────────────────╴
1: LP 228.55 -1e+12 | -1e+12 inf. | inf.
2: LP 228.56 2 | 2 -550 | 755.127 1.3e+03 | 2.4e+00
3: LP 228.57 2 | 4 -550 | 254.386 8.0e+02 | 1.5e+00
4: LP 228.58 2 | 6 -307.27 | 204.461 5.1e+02 | 1.7e+00
5: LP 228.58 2 | 8 -100.909 | 127.407 2.3e+02 | 2.3e+00
Program received signal SIGSEGV, Segmentation fault.
0x00007ffff720695b in ClpSimplex::setColumnBounds(int, double, double) () from /home/stefan/work/gams/build/gms test/libshtcclib64.so
(gdb) bt
#0 0x00007ffff720695b in ClpSimplex::setColumnBounds(int, double, double) () from /home/stefan/work/gams/build/gms test/libshtcclib64.so
#1 0x00007ffff6a01a43 in SHOT::MIPSolverCbc::solveProblem (this=0x5555556a7940) at MIPSolverCbc.cpp:523
#2 0x00007ffff6bbec1c in SHOT::NLPSolverCuttingPlaneMinimax::solveProblemInstance (this=0x5555556dce60) at NLPSolverCuttingPlaneMinimax.cpp:159
#3 0x00007ffff6bbce3f in SHOT::NLPSolverBase::solveProblem (this=0x5555556dce60) at NLPSolverBase.cpp:20
#4 0x00007ffff6c11811 in SHOT::TaskFindInteriorPoint::run (this=0x555555660160) at TaskFindInteriorPoint.cpp:80
#5 0x00007ffff6bf11f9 in SHOT::SolutionStrategyMultiTree::solveProblem (this=0x55555567a9c0) at SolutionStrategyMultiTree.cpp:332
#6 0x00007ffff69bd464 in SHOT::Solver::solveProblem (this=0x7fffffffc800) at Solver.cpp:588
#7 0x00007ffff6ac61fe in shtCallSolver (Cptr=0x555555621b40) at EntryPointsGAMS.cpp:196
#8 0x00007ffff6ac67b2 in C__shtCallSolver (Cptr=0x555555621b40) at EntryPointsGAMS.cpp:247
#9 0x00007ffff78f8301 in GMSCONF_tgmsconf_DOT_sccallsolver (self=0x55555560d690, alg=75, psl=0x555555621b40, gmo=0x55555561cd30) at gmsconf.c:2443
#10 0x00007ffff78ece80 in libsolver (msg=0x7fffffffd140 "9Entry not found: shtHaveModifyProblem in libshtcclib64.so\377\377\377\177",
_2slvprefix=0x7fffffffcd40 "\003shtO0O0O0O0O0O0O0O0O0O0O0O0O0O0O0O0O0O0O0O0O0O 0", _2solvername=0x5555555f1820 <GENLINK_solver> "\004SHOT", _2gmo=0x7fffffffcb08, _2self=0x7fffffffcac8) at gevdoorg.c:3042
#11 0x00007ffff78ee4b6 in GEVDOORG_tgmsenvironment_DOT_gevcallsolver (self=0x55555560a260, gmoptr=0x55555561cd30, cntrfn=0x5555555c206f "", solvername=0x5555555f1820 <GENLINK_solver> "\004SHOT", solvelink=5,
logging=0, logfn=0x5555555c206f "", statfn=0x5555555c206f "", reslim=2.0000000000000001e+300, iterlim=2100000000, domlim=2100000000, optcr=2.0000000000000001e+300, optca=2.0000000000000001e+300,
jobhandle=0x5555555f17f8 <GENLINK_jobhandle>, msg=0x5555555f1b20 <GENLINK_msg> "4Could not create Gams Model Object with handle, msg=imulate requires solver executable17") at gevdoorg.c:3427
#12 0x00007ffff7889787 in gevcallsolver (pgev=0x55555560a260, gmoptr=0x55555561cd30, cntrfn=0x5555555c206f "", solvername=0x5555555f1820 <GENLINK_solver> "\004SHOT", solvelink=5, logging=0,
logfn=0x5555555c206f "", statfn=0x5555555c206f "", reslim=2.0000000000000001e+300, iterlim=2100000000, domlim=2100000000, optcr=2.0000000000000001e+300, optca=2.0000000000000001e+300,
jobhandle=0x5555555f17f8 <GENLINK_jobhandle>, msg=0x5555555f1b20 <GENLINK_msg> "4Could not create Gams Model Object with handle, msg=imulate requires solver executable17") at joatdclib.c:5854
#13 0x000055555556acea in GEVMDODEF_tgmsenvironment_DOT_gevcallsolver (self=0x555555607c30, gmoptr=0x55555561cd30, cntrfn=0x5555555c206f "", solvername=0x5555555f1820 <GENLINK_solver> "\004SHOT", solvelink=5,
logging=0, logfn=0x5555555c206f "", statfn=0x5555555c206f "", reslim=2.0000000000000001e+300, iterlim=2100000000, domlim=2100000000, optcr=2.0000000000000001e+300, optca=2.0000000000000001e+300,
jobhandle=0x5555555f17f8 <GENLINK_jobhandle>, msg=0x5555555f1b20 <GENLINK_msg> "4Could not create Gams Model Object with handle, msg=imulate requires solver executable17") at gevmdodef.c:848
#14 0x000055555555b62d in main (_Argc=3, _Argv=0x7fffffffe618) at genlink.c:293
(gdb) frame 1
#1 0x00007ffff6a01a43 in SHOT::MIPSolverCbc::solveProblem (this=0x5555556a7940) at MIPSolverCbc.cpp:523
523 osiInterface->setColBounds(getDualAuxiliaryObjectiveVariableIndex(), -1000000000.0, 1000000000.0);
So this is within find-interior-point. The MIPSolverCbc object is 0x5555556a7940 here, but it was 0x55555567b9d0 where the dualauxiliaryobjectivevariableindex was set.
Can this be helpful?
Just enabling Output.Debug.Enable=true
doesn't work at the moment.
Looks like I need to see how to set some output paths first.
(Error when solving problem with GAMS: filesystem error: cannot make canonical path: Invalid argument []
)
Yes, now I understand where this happens, it is in the minmax solver and not in the main iteration (this was clear from the previous message you sent me as well, I just missed it).
Ok, i did a quick and dirty fix in https://github.com/coin-or/SHOT/tree/issue46 that should fix the problem.
Some comments
lp0.lp
in the debug directory. This file is created before solving the first real iteration (the header in the output is actually displayed after the first iteration is solved)...Yes, that seems to work fine.
I don't get Cbc warnings with default settings. I can imagine these warnings come up only when writing out a file in Cbc.
Yes, that is true. Cbc is a little bit picky with names (variables, constraints,...).
This code in MIPSolverCbc.cpp:518 leads to a segmentation fault on GAMS model library model fuel with Cbc as MIP solver:
getDualAuxiliaryObjectiveVariableIndex()
returns garbage (uninitialized value).I'm using SHOT master (6e1409bf).
Last lines of the log before: