在rserve中选择r调用java调用

时间:2016-03-11 06:33:27

标签: java r optimization rserve

在使用大型数据集中的R和Java中的lpSolveAPI执行优化时,我遇到了问题。

我尝试过Rserve,RCaller,JRI,Renjin,发现Rserve真正适合我的需要。 RCaller具有允许以批处理方式运行所有r命令的功能,但之后上下文丢失。在Renjin中,lpSolveAPI支持仍在开发中。我还在R中尝试了Rglpk包,但提供的调优选项有限比较到Rglpk。

占用大量时间的循环如下所示,eval和assign语句占用了大部分运行时间。

loop1重复的次数是300次 - 超过3000次,类似于loop2& loop3(取决于输入)。

无法避免assign和eval语句,因为它是逻辑的一部分。

是否有某些东西可以提高此循环的性能,或者使用另一个库,以便在循环完成后可以评估代码(批量运行的类型)。只是想知道事情 - 输入1000条记录的程序在3小时内完成,2000条记录的输入花了一天多的时间,并且不确定它是否会完成。

for( : loop1){
    for ( : loop2) {
        rconn.assign("constraint");
        if ( condition ){
            rconn.voidEval("constraint");
        }else{
            rconn.assign("constraint");
        }
        if( condition ){
            rconn.voidEval("constraint");
        }else{
            rconn.voidEval("constraint");
        }
    }
    for( : loop3) {
        rconn.assign("constraint");
        if ( condition ){
            rconn.voidEval("constraint");
        }else{
            rconn.assign("constraint");
        }
        if(condition){
            rconn.voidEval("constraint");
        }else{
            rconn.voidEval("constraint");
        }
        rconn.eval("constraint").asStrings();
    }
    for (String[] item : map.values()){
        rconn.assign("constraint",item);
        rconn.voidEval("constraint");
    }
}

0 个答案:

没有答案