是否可以使用Google的线性优化服务输出多个解决方案?我在下面创建了一个玩具调度问题。它输出第一个解决方案,但是我想输出多个解决方案。有可能吗?
function schedule() {
var numDays = 5;
var numPeople = 6;
var engine = LinearOptimizationService.createEngine();
for (var d=0; d<numDays; d++) {
for (var p=0; p<numPeople; p++) {
engine.addVariable("Day"+d+"Person"+p, 0, 1, LinearOptimizationService.VariableType.INTEGER);
}
}
//only one person can work per day
for (var d=0; d<numDays; d++) {
var constraint = engine.addConstraint(1, 1);
for (var p=0; p<numPeople; p++) {
constraint.setCoefficient("Day"+d+"Person"+p, 1);
}
}
//each person can only work once per week at max
for (var p=0; p<numPeople; p++) {
var constraint = engine.addConstraint(0, 1);
for (var d=0; d<numDays; d++) {
constraint.setCoefficient("Day"+d+"Person"+p, 1);
}
}
var solution = engine.solve();
if (solution.isValid()) {
for (var d=0; d<numDays; d++) {
Logger.log("Day "+ d);
for (var p=0; p<numPeople; p++) {
Logger.log(solution.getVariableValue("Day"+d+"Person"+p));
}
}
}
}
无法通过一个电话获得所有问题的解决方案。
您可以在更改某些参数后只调用solve
方法,但不能保证结果会有所不同。仅当您无法在30秒的时间内最佳解决问题时,情况才会如此。
如果您愿意,请按照Public Issue Tracker上的说明进行功能请求。