There are 3 integer variables X, Y, and Z with possible values from 1 to 10 that satisfy conditions: X < Y and X + Y = Z. Find a solution that minimizes/maximizes the objective 3XY – 4Z. Find all possible solutions.
The class XYZ extends JavaSolver and defines this problem in the following method:
First it creates 3 constrained integer variables x, y, and z with possible values from 1 to 10. Then it posts two required constraints which look intuitive. Then it defines the objective 3XY – 4Z.
The main method of the class XYZ calls the methods define() and then standard JavaSolver’s methods minimize(), maximize(), and solveAll():
Here are the execution results for minimize():
Here are the execution results for maximize():
Here is the list of all possible solutions produced by solveAll():
We may manually control the solution search by adding these optional lines:
problem.setValueSelector(ValueSelectorType.MAX); // will select possible values starting with the maximal one
problem.setMaxNumberOfSolutions(10); // will consider no more than 10 solutions