使用Google的线性优化服务输出多个解决方案

问题描述 投票:1回答:1

是否可以使用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));
    }
  }
}

}
google-apps-script linear-programming
1个回答
0
投票

无法通过一个电话获得所有问题的解决方案。

您可以在更改某些参数后只调用solve方法,但不能保证结果会有所不同。仅当您无法在30秒的时间内最佳解决问题时,情况才会如此。

如果您愿意,请按照Public Issue Tracker上的说明进行功能请求。

© www.soinside.com 2019 - 2024. All rights reserved.