2013-07-30 15 views
9

Sto cercando di risolvere un problema di ottimizzazione utilizzando Apache Commons. Ho trovato un esempio "Ciao Mondo" here per Commons Math 2. Ma, vorrei utilizzare Commons Math 3.2 e non sono riuscito a trovare alcun esempio su come utilizzare questa parte del codice:Esempio Hello World per SimplexSolver

PointValuePair solution = null; 
SimplexSolver solver = new SimplexSolver(); 
solution = solver.optimize(optData); 

specificaly , Non so cosa sia optData e dove pongo i vincoli. Apprezzerei se qualcuno mi indicasse un esempio di "Hello World" su come utilizzare la libreria org.apache.commons.math3.optim.

I migliori auguri!

risposta

9

questo ha funzionato per me:

http://mail-archives.apache.org/mod_mbox/commons-user/201307.mbox/%[email protected].com%3E

La mia versione per cx max: Ax < = b, x> = 0. Forse non "ciao mondo", ma spero che aiuta:

 LinearObjectiveFunction f = new LinearObjectiveFunction(c, 0); 
     Collection<LinearConstraint> constraints = new 
       ArrayList<LinearConstraint>(); 
     for(int i=0; i<A.length; i++) { 
      double[] Av = new double[A[i].length]; 
      for(int j=0; j<A[i].length; j++) { 
       Av[j] = A[i][j]; 
      } 
      constraints.add(new LinearConstraint(Av, Relationship.LEQ, b[i])); 
     } 

     SimplexSolver solver = new SimplexSolver(); 
     PointValuePair optSolution = solver.optimize(new MaxIter(100), f, new 
       LinearConstraintSet(constraints), 
       GoalType.MAXIMIZE, new 
       NonNegativeConstraint(true)); 


     double[] solution; 
     solution = optSolution.getPoint(); 
+0

Puoi dire se questa implementazione del metodo utilizza Two Phase o un altro? –