- Port to CPLEX 12.10 and Scala 2.13
- Port to Gradle 5.6.2
- Method
getObjectiveValue
is now obsolete and replaced by methodgetObjValue
- Add API for the CPLEX annotations, see methods
newLongAnnotation
,setAnnotation
,getAnnotation
... - Add example
Benders
that applies a Benders decomposition using the CPLEX annotations - Add functional programming API for piecewise linear functions.
- Add example
SailcoPW
that uses of a piecewise linear function to create the objective. - Add example
Transport.scala
- Add optional parameter when creating a set of variables to specify a default value
- Add API for MIP start, read and write solutions to file
- Add API to redirect CPLEX info, warnings and errors to output stream
- Add API for CPLEX aborter
- Add API to get the MIP relative gap
- Add functional programming API for MIP information callbacks
- Add API for KPIs in class
CpModel
: see examplePlantLocation.scala
- Add methods
quot
in classCpModel
for division and define operators '/' in class NumExpr - Move methods
add
fromCpModel
andMpModel
to classModeler
- Add methods
remove
in classModeler
to remove object(s) from the optimization model - Add method
square
in classModeler
for quadratic programming. - Add methods to get the reduced cost(s), the dual(s) and the slack(s)
- Add an first example of quadratic programming problem, see example
IndefQPex1
This is a hotfix:
- Update build.gradle: use default values for environment variables for Nexus
The library cplex-scala.jar is the same as the same as in release 1.5.0.
This is a hotfix:
- Update release notes for release 1.5.0
- Fix issues in Jenkinsfile
The library cplex-scala.jar is the same as the same as in release 1.5.0.
- Update Gradle wrapper to release 5.4
- Add API for multi-objective in MpModel: see example DietMultiObj.scala
- Define method apply in classes
NumArray
,IntArray
andIntExprArray
for element constraint: this allows to write constructs likecost = costs(supplier)
where costs is an array of integer, supplier is an integer variable andcost
is an integer expression that represents the cost of the chosen supplier. See Facility.scala for a complete example.. - Add operator * on classes
NumArray
,IntArray
,NumVarArray
andIntVarArray
for scalar product. - Refactoring:
- Add class Modeler to build optimization model: CpModel and MpModel now inherits from Modeler
- Move many classes such as
NumExpr
,IntExpr
,NumVar
,IntVar
,Objective
from package com.decisoinbrain.cplex.mp and com.decisionbrain.cplex.cp to com.decisionbrain.cplex. - These entities are now shared and can be used to build either a mathematical programming model or a constraint programming model.
- Update file
build.gradle
: replace dependency withoplall.jar
by dependencies withcplex.jar
andILOG.CP.jar
instead.
- New examples
LearningCurve.scala
andLearningCurve2
: a scheduling problem on two alternative heterogeneous machines with sequence dependent setup times, forbidden transitions and a learning curve when changing of type - Fix bugs with parameters timeLimit and solutionLimit in method solve of CpModel
- Port to CPLEX 12.9
- Update copyright notice
- Functional programming: add iterators for cumul function expression, state function, step function and piecewise linear function. Furthermore, these functions are now iterables and this allow to iterate like this:
val f = model.numToNumStepFunction()
...
for (s <- f) {
println("[" + s.start + " .. " + s.end + ") -> " + s.value)
}
- Add type
IntSet
, factory methods and iterator. - Add scala API for inverse constraint and add example
Talent.scala
. - Port to CPLEX 12.8
- Port to Scala 2.12.6
- Add new signature for method alternative with only two parameters
- Add method getFirst, getLast, getNext and getPrev in class CpModel to get rescpectively the first interval variable in the sequence, the last interval variable in the sequence, the next interval variable in the sequence, the previous interval variable in the sequence.
- IntervalSequenceVariable is now a proper class. It implements the Trait Iterable: one can write something like this:
val seq = model.intervalSequenceVar()
...
for (x <- seq) {
System.out.println(model.getDomain(x))
}
- Add example
SchedSetup.scala
: a scheduling problem on two alternative heterogeneous machines with sequence dependent setup times and forbidden transisions
- Add a link to IBM ILOG CPLEX Studio Community Edition download page in the README
- Add state function
- and constraints
alwaysIn
,alwaysEqual
,alwaysConstant
andalwaysNoState
on state functions - Add example
SchedState.scala
- Add missing precedence constraints in companion object of CpModel
- Add constraints
alwaysEqual
on cumul functions - Add integer division on integer expression
- Use syntax highlighting for scala code blocks
- Update README: specify version of Java JDK used for testing
- Add constraint forbidStart, forbidEnd, forbidExtent
- Replace type NumToNumStepFunction with a class, define operators (+=, -=, *=, +, -...) and a proper toString method that prints the step function in a human readable format.
- Add example SchedCalendar.
- Update math equation
- Add support to IBM ILOG CPLEX 12.7.
- Update build.gradle to optionally configure maven repository.
Initial release of the scala library for IBM ILOG CPLEX.