当前位置: 首页 > 知识库问答 >
问题:

带有CPLEX LazyCallBack的JRE检测到致命错误

郎慎之
2023-03-14

我在使用CPlex的LazyCallback运行库存路由问题的分支和切割时遇到了一个问题。

public class lazyConstraintCallback extends IloCplex.LazyConstraintCallback {

private IloCplex cplex;
private IloNumVar[][][][] x;
private IloNumVar[][][] y;
private int nbLocations;
private int horizon;
private int nbVehicles;
private double[][] graph;
private boolean subtour;

public lazyConstraintCallback (IloCplex cplex, IloNumVar[][][][] x, IloNumVar[][][] y, int nbLocations, int horizon, int nbVehicles, double[][] graph, boolean subtour) {
    this.cplex=cplex;
    this.x=x;
    this.y=y;
    this.nbLocations=nbLocations;
    this.horizon=horizon;
    this.nbVehicles=nbVehicles;
    this.graph=graph;
    this.subtour=subtour;
}

protected void main() throws IloException {
    this.graph= new double[this.nbLocations][this.nbLocations];
    for(int t=0;t<this.horizon;t++) {
        for(int k=0;k<this.nbVehicles;k++) {
            double tourlength=1;
            for(int i=1;i<this.nbLocations;i++) {
                if(getValue(y[i][t][k])>0.1) {
                    tourlength++;
                }
            }
            int[] subtour = null;
            if(tourlength>5) {
                for(int i=0;i<this.nbLocations;i++) {
                    for(int j=i+1;j<this.nbLocations;j++) {
                        graph[i][j]=getValue(x[i][j][t][k]);
                    }
                }
                subtour=this.getSubtours(graph, tourlength);
                if(this.subtour) {
                    IloLinearNumExpr expr = this.cplex.linearNumExpr();
                    for (int i=0;i<subtour.length; i++) {
                        for (int j=i+1;j<subtour.length;j++) {
                            if (subtour[i] < subtour[j]) {
                                expr.addTerm(1, this.x[subtour[i]][subtour[j]][t][k]);
                            } else {
                                expr.addTerm(1, this.x[subtour[j]][subtour[i]][t][k]);
                            }
                        }
                    }
                    IloRange SEC = this.cplex.le(expr, subtour.length-1);
                    this.cplex.addLazyConstraint(SEC);
                    System.out.println(SEC);
                }
            }
        }
    }
}
IloRange  : -infinity <= (1.0*x_{2,5}^{1,2} + 1.0*x_{2,6}^{1,2} + 1.0*x_{5,6}^{1,2}) <= 2.0

如果您想提交bug报告,请访问:http://bugreport.Java.com/bugreport/crash.jsp。有关报告bug的位置,请参见problematic frame。

共有1个答案

国景铄
2023-03-14

问题出在这一行:

this.cplex.addLazyConstraint(SEC);

您在这里要做的是向models静态懒惰约束表添加懒惰约束。由于这是模型的一部分,所以在优化过程中不允许对此进行修改。为了从回调中添加延迟约束,请使用回调的add()方法:

add(SEC);
 类似资料:
  • 我试图测试的速度,反对“手动”乘法,并偶然发现了这个错误: Java 运行时环境检测到致命错误: EXCEPTION_ACCESS_VIOLATION (0xc0000005) 在 pc=0x000000005ac46888, pid=1508, tid=6016 JRE版本:Java(TM)SE运行时环境(8.0_25-b18)(构建1.8.0-25-B16) Java VM:Java热点(TM

  • 我可以找到这个错误,是由项目的一个类引起的,但我显然不知道问题专家在哪里。我希望有人能帮助我。 我真的很期待帮助。非常感谢。 Java运行时环境检测到一个致命错误: 通过这段代码,我基本上试图区分与我所处理的问题相关的情况。我意识到由于我删除了带有“Merkerzzf”的行,所以我不会导致错误。我不知道为什么。

  • 我正在尝试将PSK与mbedtls库与SGX结合使用。没有PSK,连接工作正常。 以下是相关的客户端代码: 我有openssl测试服务器运行: 服务器接收连接并交换PSK消息,但是在解密点我收到以下错误: 我还尝试将更改为不同的密码,但仍然是相同的错误。当完全省略密码时,连接正常,但没有执行PSK!?

  • 下面给出了我的代码。它是一个给数据库添加叶子的程序。我得到的是java运行时环境检测到的致命错误,我不明白为什么。我是Java新手,所以对此感到非常困惑。有人能告诉我为什么会这样吗?我也在安装错误文件。我也试图理解这一点,但找不到错误所在的位置。

  • 尝试在我的stripe帐户上提交测试付款时,我遇到以下错误: 致命错误:未捕获错误:在/home/dh#u y3rvc7/vvnow.dreamhosters.com/wp-content/plugins/wp-Stripe-integration/includes/process payment.php:25堆栈跟踪:#0/home/dh#uy3rvc7/vvnow.dreamhosters.c

  • 我正试着提交一份脱衣舞表演。没有ajax的php,但我遇到以下错误: 致命错误:未捕获的异常条纹\错误\InvalidRequest消息无效的源对象:必须是字典或非空字符串。 我相信这与令牌没有附加到输入有关。我尝试了几种不同的方法都没有成功。 最小标记 JavaScript 要价php 更新配置。php