i have simple binary liinear programming funcjon and i want to get more than one, for example 10 best solutions from Optimisation.Result = model.minimise(). Is this posible with OjAlgo?
I knew that purpose of function is to find one, best solution but is there any chance to generate more solutions or get solutions from solver iterations?
fun linearProgrammingSolver(meal: Meal): MutableList<String> {
val mealList = meal.results
val resultList = mutableListOf<String>()
val listOfVariables= makeVariables(meal) as ImmutableList<Variable>
val model = ExpressionsBasedModel()
listOfVariables.forEach{
model.addVariable(it)
}
val calories = model.addExpression("calories")
.lower(1500)
.upper(3000)
listOfVariables.forEach {
val index = listOfVariables.indexOf(it)
calories.set(listOfVariables[index], mealList[index].nutrition.nutrients[0].amount)
}
val protein = model.addExpression("protein")
.lower(60)
listOfVariables.forEach {
val index = listOfVariables.indexOf(it)
protein.set(listOfVariables[index], mealList[index].nutrition.nutrients[1].amount)
}
val meals = model.addExpression("meals")
.level(3)
listOfVariables.forEach {
val index = listOfVariables.indexOf(it)
meals.set(listOfVariables[index], 1)
}
val result: Optimisation.Result = model.minimise()
println("state ${result.state}")
model.variables.forEach{
if(it.value.toInt() == 1){
println("model.var ${it}")
resultList.add(it.name)
}
}
println(model)
println(result)
println("list $resultList")
return resultList
}