- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
commons-math(版本 2.2)有一个 LP 求解器。
Here我找到了以下示例代码:
import java.util.ArrayList;
import java.util.Collection;
import org.apache.commons.math.optimization.GoalType;
import org.apache.commons.math.optimization.OptimizationException;
import org.apache.commons.math.optimization.RealPointValuePair;
import org.apache.commons.math.optimization.linear.LinearConstraint;
import org.apache.commons.math.optimization.linear.LinearObjectiveFunction;
import org.apache.commons.math.optimization.linear.Relationship;
import org.apache.commons.math.optimization.linear.SimplexSolver;
@SuppressWarnings("deprecation")
public class Main {
@SuppressWarnings({ "rawtypes", "unchecked"})
public static void main(String[] args) {
//describe the optimization problem
LinearObjectiveFunction f = new LinearObjectiveFunction(new double[] { 3, 5}, 0);
Collection constraints = new ArrayList();
constraints.add(new LinearConstraint(new double[] { 2, 8}, Relationship.LEQ, 13));
constraints.add(new LinearConstraint(new double[] { 5, -1}, Relationship.LEQ, 11));
constraints.add(new LinearConstraint(new double[] { 1, 0}, Relationship.GEQ, 0));
constraints.add(new LinearConstraint(new double[] { 0, 1}, Relationship.GEQ, 0));
//create and run solver
RealPointValuePair solution = null;
try {
solution = new SimplexSolver().optimize(f, constraints, GoalType.MAXIMIZE, false);
}
catch (OptimizationException e) {
e.printStackTrace();
}
if (solution != null) {
//get solution
double max = solution.getValue();
System.out.println("Opt: " + max);
//print decision variables
for (int i = 0; i < 2; i++) {
System.out.print(solution.getPoint()[i] + "\t");
}
}
}
}
但是,添加最新math版本(3.6.1)的maven依赖时
我看到大多数相关类都已弃用,而且我还没有找到更新版本的任何代码示例。
很乐意使用 3.6.1 来解决我的 LP 问题 - 有人可以帮忙吗?
最佳答案
链接中的示例使用的是 commons-math 版本 2。
commons math 的主要包似乎从版本 2 org.apache.commons.math
更改为版本 3 中的 org.apache.commons.math3
。
示例中使用的类来自org.apache.commons.math.optimization
包,在这个具体案例中,新版本的包是org.apache.commons.math3.optim
。 .
从版本 2 到版本 3 的示例代码如下所示:
package commons.math;
import java.util.ArrayList;
import java.util.Collection;
import org.apache.commons.math3.optim.PointValuePair;
import org.apache.commons.math3.optim.linear.LinearConstraint;
import org.apache.commons.math3.optim.linear.LinearConstraintSet;
import org.apache.commons.math3.optim.linear.LinearObjectiveFunction;
import org.apache.commons.math3.optim.linear.Relationship;
import org.apache.commons.math3.optim.linear.SimplexSolver;
import org.apache.commons.math3.optim.nonlinear.scalar.GoalType;
public class MathTest {
public static void main(String[] args) {
//describe the optimization problem
LinearObjectiveFunction f = new LinearObjectiveFunction(new double[] { 3, 5}, 0);
Collection<LinearConstraint> constraints = new ArrayList<LinearConstraint>();
constraints.add(new LinearConstraint(new double[] { 2, 8}, Relationship.LEQ, 13));
constraints.add(new LinearConstraint(new double[] { 5, -1}, Relationship.LEQ, 11));
constraints.add(new LinearConstraint(new double[] { 1, 0}, Relationship.GEQ, 0));
constraints.add(new LinearConstraint(new double[] { 0, 1}, Relationship.GEQ, 0));
//create and run solver
PointValuePair solution = null;
solution = new SimplexSolver().optimize(f, new LinearConstraintSet(constraints), GoalType.MAXIMIZE);
if (solution != null) {
//get solution
double max = solution.getValue();
System.out.println("Opt: " + max);
//print decision variables
for (int i = 0; i < 2; i++) {
System.out.print(solution.getPoint()[i] + "\t");
}
}
}
}
希望对你有帮助
关于java - apache.commons.math3 - 如何使用线性规划?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39309486/
我想使用 MATLAB 7 解决这个线性规划(单纯形)问题,但它返回 Exiting: the problem is unbounded. 这个功能 f = 2(15 s0 + 8s1 + 2576s
我试图找到可以最大化我的总和值的最佳组合,但它必须在 2 个特定约束下,因此我假设线性规划将是最合适的。 问题是这样的: 一些教育世界盛会希望聚集世界上最聪明的青少年学生。 每个州都对 10 万名学生
我正在尝试使用 Apache commons Math 库对我的问题应用线性编程。我在网上看到一个例子,解决了下面的例子 max. 3X + 5Y s.t. 2X + 8Y = 0, Y >=
我试图弄清楚我的实现有什么问题,我希望结果是 [5, 10],我不明白它是如何得到 [7.5, 7.5],x1应该是x2的一半。 from scipy.optimize import linprog
假设我有一些变量和约束,如下系统所示: 灰线可以拉伸和收缩一定量,由其上的范围给定蓝线只是端点,显示了灰线是如何相互作用的。 我的目标是:我想用线性编程来均匀地最大化灰度线的大小,就像图片中的一样。你
可以使用 MapReduce 在分布式系统上解决简单的线性规划问题吗? 最佳答案 是的,你可以查看hbase-simplex 关于hadoop - MapReduce 线性规划,我们在Stack Ov
我正在做一项关于使用线性规划规划汉诺塔问题的作业,我不允许使用任何递归函数。问题是我的解决方案不像递归方法那样是最优的。它会产生冗余步骤。例如: 我有 3 个杆子,分别命名为 A、B、C,还有 2 个
我刚刚学习了求解线性程序的单纯形方法,我试图了解它的对偶问题代表什么。 我了解解决双重问题的机制 - 我不需要帮助。我无法理解(即使在 Wikipedia 上阅读了它)是 的实际含义。 y 对偶中的变
我正在尝试编写一个线性程序,需要一个等于 x-c 符号的变量 z,其中 x 是另一个变量,c 是一个常量。 我考虑了z = (x-c)/|x-c|。不幸的是,如果 x=c,则会除以 0。 我不能使用
所以,我有一个优化问题,也许可以通过线性规划来解决(使用 PuLP?)。我在这方面的工作经验有限,所以也许另一个解决方案会更好。 问题如下: 有 37 件元素需要购买。每件商品必须以特定数量、特定颜色
我需要用 python 解决线性规划问题,并遇到了 PuLP。然而,我对如何以简单的方式解决具有不同数量输入的问题有一些疑问。 我有以下数组,全部具有相同的尺寸: a = [a0,a1,...,an]
我正在使用 Coin-Or 的 rehearse实现线性规划。 我需要模数约束。示例:x 应为 3 的倍数。 OsiCbcSolverInterface solver; CelModel model(
使用 PuLP 和Python,我试图解决水平衡(类似于经典的运输问题)线性规划问题,其形式为: 最大限度地减少 c'x 的限制: 斧头=b 磅<=x<=ub 其中 A 是 (10x18) 矩阵,c(
我想知道是否有一种很好的方法(最好使用 JuMP)来获得线性程序的所有最优解(以防有多个最优解)。 一个例子 最小化两个概率分布之间的统计距离(Kolmogorov 距离)。 min sum_{i=1
我有工作需要在 14 天内完成。我有5名 worker 。一天正好需要3个 worker 。每个 worker 最多只能工作 9 天。每个 worker 都有自己的日期偏好,每个 worker 每天都
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。 关闭 4 年前。
仅在 Python 中,并使用来自 Pandas 数据框的数据,我如何使用 PuLP以与在 Excel 中相同的方式解决线性规划问题?应在新预算列下为每个 channel 分配多少预算,以便我们最大化
这是我使用 Scipy's NNLS 的 LP 代码: import numpy as np from numpy import array from scipy.optimize import nn
我想在线性程序(或必要时使用 MIP)中编写非重叠约束(即 2 个矩形不重叠)。我知道如何在约束编程中做到这一点: 对于对象 i 和 j: x[i]+dx[i]<=x[j] 或 y[i]+dy[i]<
我是一名优秀的程序员,十分优秀!