import ilog.cplex.CpxMult; import ilog.cplex.CpxNumExpr; import ilog.cplex.IloCplex; import ilog.concert.*; public class MyCaculate { // static // { // System.loadLibrary("cplex1271"); // } static int length = 5000000; public static void main(String[] args) throws IloException { IloCplex cplex = new IloCplex(); IloRange[] constraint = new IloRange[length]; IloIntVar[] var = new IloIntVar[length]; // 变量取值下界 int[] lb = new int[length]; for (int i = 0; i < length; i++) lb[i] = i; // 变量取值上界 int[] ub = new int[length]; for (int i = 0; i < length; i++) ub[i] = Integer.MAX_VALUE; // 变量名 String[] varname = new String[length]; for (int i = 0; i < length; i++) varname[i] = "x" + (i + 1); var = cplex.intVarArray(length, lb, ub, varname); // x1 + x2 for(int i =1; i <= 10000;i++) { IloNumExpr r1 = cplex.sum(cplex.prod(1, var[0]), cplex.prod(1, var[i])); constraint[i] = cplex.addRange(10, r1, 10*i); } // IloNumExpr r2 = cplex.sum(cplex.prod(1, var[0]), cplex.prod(1, var[2])); // IloNumExpr r3 = cplex.sum(cplex.prod(1, var[0]), cplex.prod(1, var[3])); // IloNumExpr r4 = cplex.sum(cplex.prod(1, var[1]), cplex.prod(1, var[3])); // constraint[1] = cplex.addRange(20, r2, 100000, "c2"); // constraint[2] = cplex.addRange(300, r3, 100000, "c3"); // constraint[3] = cplex.addRange(4000, r4, 100000, "c4"); // 变量前系数 // y = -x*x // 计算y的最大值 int[] objvals = new int[length]; for (int i = 0; i < length; i++) objvals[i] = 1; cplex.addMaximize(cplex.scalProd(var, objvals)); cplex.exportModel("my.lp"); long t1 = System.currentTimeMillis(); double d1 = cplex.getCplexTime(); if (cplex.solve()) { /* cplex.output().println("status = " + cplex.getStatus()); cplex.output().println("sub status = " + cplex.getCplexSubStatus()); for (int i = 0; i < var.length; i++) cplex.output().println( "var x" + (i + 1) + " = " + cplex.getValue(var[i])); cplex.output().println("y = " + cplex.getObjValue()); cplex.output().println("best y = " + cplex.getBestObjValue()); */ System.out.println("best y = " + (int) cplex.getBestObjValue()); System.out.println("y = " + (int) cplex.getObjValue()); long t2 = System.currentTimeMillis(); double d2 = cplex.getCplexTime(); System.out.println("pTime = "+(t2-t1)); System.out.println("cpTime = "+(d2-d1)); } else { } t1 = System.nanoTime(); int j = 0; double k = 1; for(int i =0; i < Integer.MAX_VALUE;i++) { j=j+1*10; } long t2 = System.nanoTime(); System.out.println("pTime2 = "+(t2-t1)); System.out.println(j); cplex.end(); } }