Three testers for the MILPSolver module, each registered as a separate
ctest and built by the shared makefile.
-
test_cutschecks that a:MILPSolvercorrectly separates dynamic constraints viagenerate_dynamic_constraint(). It builds anNCoCubeBlock(the unit ball in the L1 norm, encoded with its exponentially many "crazy" constraints, separated trivially) and compares the repeatedly re-solved optimal value against the trivial optimization. The solver and its parameters are read fromMILPPar.txt; seebatch-cuts. -
test_dualverifies that the dual solution returned by a:MILPSolverrespects the convention established byRowConstraint. The solver is configured byLPPar-dual.txt. -
test_dynamicprovides comprehensive tests for anyCDASolverable to handle Linear Programs: it builds a random LP in anAbstractBlock, solves it with two attached solvers, then repeatedly modifies the LP (rows, variables, bounds, constants) and re-solves, comparing the results each time. The solvers are configured byLPPar-dynamic.txt; seebatch-dynamicandbatch-dynamic-L.
Run a tester directly (for instance ./test_dynamic seed [...], pass no
argument to see its usage), or run a batch over a set of sizes and seeds.
The makefile builds all three executables including the MILPSolver
module and all its dependencies, and the core SMS++ library.
-
Antonio Frangioni
Dipartimento di Informatica
Università di Pisa -
Rafael Durbano Lobato
Dipartimento di Informatica
Università di Pisa -
Enrico Calandrini
Dipartimento di Informatica
Università di Pisa
This code is provided free of charge under the GNU Lesser General Public License version 3.0, see the LICENSE file for details.