New release: Hexaly 12.5

We are pleased to announce the release of Hexaly 12.5, which includes many new features and performance enhancements.  The “gaps” mentioned below are the relative gaps in % between the solutions computed by Hexaly Optimizer in less than 1 minute on a standard server (AMD Ryzen 7 7700 processor, 8 cores, 3.8 GHz, 32MB cache, 32GB RAM) and the best-known solutions available by the research, computed using dedicated algorithms, within days of running times on much more powerful hardware.

Routing

Hexaly Optimizer 12.5 brings significant performance improvements for Vehicle Routing Problems (VRP) with various types of constraints and objectives:

Scheduling

Hexaly Optimizer 12.5 brings significant performance improvements for Job Shop Scheduling Problems (JSSP) and Resource Constrained Project Scheduling Problems (RCPSP) with various types of constraints and objectives:

Packing

Hexaly Optimizer 12.5 brings significant performance improvements in solving Bin Packing Problems (BPP) with various types of constraints. In particular, mutual exclusion constraints can now be easily and efficiently managed thanks to the addition of Distinct and Intersection mathematical operators. It reports solutions with an average gap of 1.2% in 10 seconds on instances with up to 5,000 items. It solves various variants of Bin Packing problems involving 100,000 items in minutes nearly optimally.

Hexaly Modeler

Hexaly Modeler 12.5 adds support for classes to structure your data and mathematical optimization model.

class Point {
    x = 0.0;
    y = 0.0;
 
    constructor(x, y) {
        this.x = x;
        this.y = y;
    }
 
    distance(other) {
        return sqrt(pow(other.x - this.x, 2) + pow(other.y - this.y, 2));
    }
}

Lambda functions can now return multiple values. This feature is useful to model complex business rules in Vehicle Routing Problems like Driver Breaks.

// End of each visit
sequence <- list(nbClients);
c <- count(sequence);
// Working time without break & arrival time for each client
arrivals <- array(0...c, (i, prev) => {
    workingTime <- prev[0];
    departureTime <- prev[1];

    if (workingTime + serviceTime[i] > maxWorkingTime) {
        return array(0, departureTime + serviceTime[i] + break);
    } else {
        return array(workingTime + serviceTime[i], departureTime + serviceTime[i]);
    }
}, array(0, 0));

The Sort operator can be associated with a lambda function to sort a collection of expressions using a particular key. This feature is useful for Stochastic Optimization when retrieving median, minimum, and maximum values across multiple scenarios.

expressionArray[i in 0..3] <- float(-10, 10);
sortedArray <- sort(expressionArray, i => i * i);

Code Templates

New Code Templates are available for Routing, Scheduling, and Simulation Optimization problems to help you get started effortlessly with Hexaly Optimizer:

Register here to try Hexaly 12.5 for free. Don’t hesitate to contact us for further information or support.