Я не могу решить целочисленное линейное программирование с переменными числами до тысяч и числовыми ограничениями до сотен Microsoft.SolverFoundation, это решает очень медленно.Пожалуйста, дайте мне совет, какую библиотеку использовать для ускорения, мне нужно в течение 15 секунд.Спасибо.
public void Calculate()
{
Services.SolverContext solver = Services.SolverContext.GetContext();
solver.ClearModel();
Services.Model model = solver.CreateModel();
List<Services.Decision> decisions = new List<Services.Decision>();
for (int i = 0; i < NumChoices.Count; i++)
{
var decision = new Services.Decision(Services.Domain.IntegerNonnegative, $"x{i}");
model.AddDecision(decision);
decisions.Add(decision);
}
for (int j = 0; j < NumChoices[0].Count; j++)
{
Services.Term target = null;
for (int i = 0; i < decisions.Count; i++)
{
if (i == 0)
{
target = decisions[i] * NumChoices[i][j];
}
else
{
target += decisions[i] * NumChoices[i][j];
}
}
if (j == 0)
{
model.AddGoal("Goal", Services.GoalKind.Minimize, target);
}
else
{
target = (QuantityRebars[j] == target);
model.AddConstraint($"Constraint{j}", target);
}
}
Services.Solution solution = solver.Solve();
for (int i = 0; i < decisions.Count; i++)
{
Results.Add(Math.Round(decisions[i].GetDouble()));
TotalBarLength += Math.Round(decisions[i].GetDouble()) * StandandBarLength;
Waste += NumChoices[i][0] * Math.Round(decisions[i].GetDouble());
}
Used = TotalBarLength - Waste;
}