ワークステーションをロードするための最適なソリューションを見つけようとしています。このために、OjAlgo ライブラリの「ExpressionsBasedModel」を使用したいと考えています。ワークステーションは、必要なアイテムがそこにあり、低コストの場合に使用する必要があります。これは、以下に添付されているコードで既に機能しています。ここで、別の最適化を追加したいと思います。
ワークステーションはストリングにグループ化されます。コストが高くなっても、使用する文字列をできるだけ少なくしたい。
この最適化を定式化するにはどうすればよいですか?
改善提案は大歓迎です
Variable[][] x_stations = new Variable[STRING_COUNT][STATION_COUNT];
for (int i = 0; i < STRING_COUNT; i++) {
for (int j = 0; j < STATION_COUNT; j++) {
x_stations[i][j] = model.addVariable("Station " + i + "/" + j)
.binary()
.weight(costs[i][j]);
}
}
for (String sku : relevantSKUs) {
Expression stationExpression = model.addExpression(sku).lower(1);
List<Integer> possibleStations = skusToStations.get(sku);
for (Integer stations : possibleStations) {
stationExpression.set(model.getVariable(stations), 1);
}
}
Optimisation.Result result = model.minimise();