list(par = c(0,99980003783379, 0,99960011579784), value = 3.9984867919192357E-8, counts = c(49L, 49L), convergence = c(0L), message = CONVERGENCE: REL_REDUCTION_OF_F <= FACTR*EPSMCH)
list(par = c(0,99980003783379, 0,99960011579784), value = 3.9984867919192357E-8, counts = c(49L, 49L), convergence = c(0L), message = CONVERGENCE: REL_REDUCTION_OF_F <= FACTR*EPSMCH)
list(par = c(0,99980003783379, 0,99960011579784), value = 3.9984867919192357E-8, counts = c(49L, 49L), convergence = c(0L), message = CONVERGENCE: REL_REDUCTION_OF_F <= FACTR*EPSMCH)
list(par = c(-1,02632082910288, 1,06079411634746), value = 24.199999999999996, counts = c(2L, 2L), convergence = c(52L), message = ERROR: ABNORMAL_TERMINATION_IN_LNSRCH)
list(par = c(-1,2, 1), value = 24.199999999999996, counts = c(2L, 2L), convergence = c(52L), message = ERROR: ABNORMAL_TERMINATION_IN_LNSRCH)
list(par = c(-1,2, 1), value = 0.0, counts = c(0L, 0L), convergence = c(52L), message = ERROR: ABNORMAL_TERMINATION_IN_LNSRCH)
list(par = c(0,37771903024192, 1,64396551742973), value = 225.77555649737445, counts = c(0L, 0L), convergence = c(0L), message = CONVERGENCE: REL_REDUCTION_OF_F <= FACTR*EPSMCH)
list(par = c(0,99987487694407, 0,99974046721066), value = 2.4309119528957442E-8, counts = c(52L, 52L), convergence = c(0L), message = CONVERGENCE: REL_REDUCTION_OF_F <= FACTR*EPSMCH)
package com.example;
import javax.script.ScriptEngine;
import org.renjin.script.RenjinScriptEngineFactory;
import org.renjin.sexp.SEXP;
public class Example {
private static final ThreadLocal<ScriptEngine> engines = new ThreadLocal<>();
private static final int RUNS = 100;
private static final int THREADS_NUMBER = 2;
public static void main(String[] args) {
new Example().execute();
}
private void execute() {
for (int i = 0; i < THREADS_NUMBER; i++) {
new Thread(this::task).start();
}
}
private void task() {
ScriptEngine engine = getEngine();
try {
engine.eval("fr <- function(x) { ## Rosenbrock Banana function\\n\" +\n"
+ " x1 <- x[1]\n"
+ " x2 <- x[2]\n"
+ " 100 * (x2 - x1 * x1) ^ 2 + (1 - x1) ^ 2\n"
+ "}");
} catch (Exception e) {
System.err.println(e.getMessage());
}
for (int i = 0; i < Example.RUNS; i++) {
try {
SEXP result = (SEXP) engine.eval("optim(c(-1.2,1), fr, method = \"L-BFGS\")");
System.out.println(result);
} catch (Exception e) {
System.err.println(e.getMessage());
}
}
}
private ScriptEngine getEngine() {
ScriptEngine engine = engines.get();
if (engine == null) {
RenjinScriptEngineFactory factory = new RenjinScriptEngineFactory();
engine = factory.getScriptEngine();
engines.set(engine);
}
return engine;
}
}