在使用大型数据集中的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");
}
}