A minimal OptaPlanner project to solve a cloud balancing problem
Suppose your company owns a number of cloud computers and needs to run a number of processes on those computers. Assign each process to a computer.
The following score constraints are implemented in the Drools score file.
- The CPU power of a computer must be at least the sum of the CPU power required by the processes assigned to that computer
- The RAM memory of a computer must be at least the sum of the RAM memory required by the processes assigned to that computer
- Each computer that has one or more processes assigned, incurs a maintenance cost
This problem is a form of bin packing. We assign four processes to two computers with two constraints (CPU and RAM) in the App file.
Make sure you have Gradle on your computer and run:
$ ./gradlew run
Solved cloudBalance with 2 computers and 4 processes:
* Process A -> Computer Y
* Process B -> Computer X
* Process C -> Computer X
* Process D -> Computer Y
Score: -1hard/-25soft
Increase the time limit in the solver config file to get a better result.