gpt4 book ai didi

java - 如何在 Apache Commons Math SimplexSolver 中设置决策变量类型,如 binary、int、double?

转载 作者:搜寻专家 更新时间:2023-11-01 03:12:07 24 4
gpt4 key购买 nike

如何在 Apache Commons Math 中设置决策变量类型,如二进制、intdouble SimplexSolver ?下面程序的输出是这样的:

332.6666666666667
1.0
8331.666666666668

我希望决策变量的类型是 int 而不是 double;如果作为整数决策变量求解,输出应为 333, 0, 8325

public static void testSample() throws OptimizationException {
LinearObjectiveFunction f = new LinearObjectiveFunction(new double[]{25, 15}, 0);
Collection<LinearConstraint> constraints = new ArrayList<LinearConstraint>();
constraints.add(new LinearConstraint(new double[]{5, 8}, Relationship.LEQ, 5000));
constraints.add(new LinearConstraint(new double[]{1, 4}, Relationship.LEQ, 1500));
constraints.add(new LinearConstraint(new double[]{3, 2}, Relationship.LEQ, 1000));
constraints.add(new LinearConstraint(new double[]{1, 0}, Relationship.GEQ, 1));
constraints.add(new LinearConstraint(new double[]{0, 1}, Relationship.GEQ, 1));

SimplexSolver solver = new SimplexSolver();
RealPointValuePair solution = solver.optimize(f, constraints, GoalType.MAXIMIZE, true);

System.out.println(solution.getPoint()[0]);
System.out.println(solution.getPoint()[1]);
System.out.println(solution.getValue());
}

最佳答案

NumberFormat 这样做很方便:

NumberFormat nf = NumberFormat.getIntegerInstance();
System.out.println(nf.format(solution.getPoint()[0]));
System.out.println(nf.format(solution.getPoint()[1]));
System.out.println(nf.format(solution.getValue()));

控制台:

33318,332

附录:此方法假定 simplex algorithm使用实数应用,结果四舍五入为整数。包含 SimplexSolver 的包裹, org.apache.commons.math.optimization.linear , 不提供其他实现。作为替代方案,请考虑 different approachMaxtrix<Rational> , 可用在 JScience .

关于java - 如何在 Apache Commons Math SimplexSolver 中设置决策变量类型,如 binary、int、double?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7941182/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com