You are viewing an archived page from the original site. Go to the new numericalmethod.com →

Changeset 1421 in algoquant


Ignore:
Timestamp:
5/12/2013 10:31:30 PM (7 months ago)
Author:
haksunli
Message:

FIX: updated the DEOptim code with the latest SuanShu API

File:
1 edited

Legend:

Unmodified
Added
Removed
  • core/src/main/java/com/numericalmethod/algoquant/model/signal/crossover/strategy/SMA2CrossoverDynamic.java

    r1366 r1421  
    4343import com.numericalmethod.suanshu.optimization.multivariate.constrained.integer.bruteforce.BruteForceIPProblem; 
    4444import com.numericalmethod.suanshu.optimization.multivariate.constrained.integer.bruteforce.BruteForceIPProblem.IntegerDomain; 
     45import com.numericalmethod.suanshu.optimization.multivariate.geneticalgorithm.minimizer.deoptim.*; 
     46import com.numericalmethod.suanshu.optimization.multivariate.geneticalgorithm.minimizer.deoptim.constrained.IntegralConstrainedCellFactory; 
     47import com.numericalmethod.suanshu.optimization.problem.*; 
     48import com.numericalmethod.suanshu.stats.random.univariate.uniform.UniformRNG; 
    4549import org.joda.time.DateTime; 
    4650import org.joda.time.Period; 
    … …  
    144148        StrategyOptimizer optimizer = new StrategyOptimizer( 
    145149                new StrategyOptimizer.Minimizer() { 
    146                     @Override 
    147                     public Result minimize(RealScalarFunction objFunc, double epsilon, 
    148                                            Vector... searchPoints) { 
    149                         try { 
    150                             //optimization by brute force on the integral domain 
    151                             IntegerDomain fastLagDomain = new BruteForceIPProblem.IntegerDomain(1, 1, 2, 1);//fastLag ∈ [1, 2] 
    152                             IntegerDomain slowLagDomain = new BruteForceIPProblem.IntegerDomain(2, 2, 25, 5);//slowLag ∈ [2, 25] 
    153                             IntegerDomain domains[] = new IntegerDomain[]{fastLagDomain, slowLagDomain}; 
    154                             BruteForceIPProblem problem = new BruteForceIPProblem(objFunc, null, null, domains, epsilon); 
    155                             BruteForceIPMinimizer solver = new BruteForceIPMinimizer(epsilon, 20); 
    156                             BruteForceIPMinimizer.Solution soln = solver.solve(problem); 
    157  
    158                             //optimization by DeOptim 
    159 //                        DeOptimCellFactory factory = new IntegralCellFactory(new DeRand1Bin(0.5, 0.5), IntegralCellFactory.ALL_INTEGERS); 
    160 //                        DeOptim solver = new DeOptim(factory, true, new RNG()); 
    161 //                        solver.solve(objFunc, precision, 80); 
    162  
    163                             Vector minimizer = soln.search(searchPoints);//initial params 
    164                             return new Result(minimizer, soln.minimum()); 
    165                         } catch (Exception ex) { 
    166                             return new Result(null, Double.POSITIVE_INFINITY); 
    167                         } 
     150            @Override 
     151            public Result minimize(RealScalarFunction objFunc, double epsilon, 
     152                                   Vector... searchPoints) { 
     153                try { 
     154                    MinimizationSolution<Vector> soln; 
     155                    if (false) { 
     156                        System.out.println("optimization by brute force on the integral domain"); 
     157                        IntegerDomain fastLagDomain = new BruteForceIPProblem.IntegerDomain(1, 1, 2, 1);//fastLag &isin; [1, 2] 
     158                        IntegerDomain slowLagDomain = new BruteForceIPProblem.IntegerDomain(2, 2, 25, 5);//slowLag &isin; [2, 25] 
     159                        IntegerDomain domains[] = new IntegerDomain[]{fastLagDomain, slowLagDomain}; 
     160                        BruteForceIPProblem problem = new BruteForceIPProblem(objFunc, null, null, domains, epsilon); 
     161                        BruteForceIPMinimizer solver = new BruteForceIPMinimizer(epsilon, 20); 
     162                        soln = solver.solve(problem); 
     163                        ((BruteForceIPMinimizer.Solution) soln).search(searchPoints);//initial params 
     164                    } else { 
     165                        System.out.println("optimization by DEOptim"); 
     166                        DEOptim solver = new DEOptim( 
     167                                new DEOptim.NewCellFactory() { 
     168                            @Override 
     169                            public DEOptimCellFactory newCellFactory() { 
     170                                return new IntegralConstrainedCellFactory(new Rand1Bin(0.5, 0.5), new IntegralConstrainedCellFactory.AllIntegers()); 
     171                            } 
     172                        }, true, new UniformRNG(), epsilon, 80, 10); 
     173                        soln = solver.solve(new C2OptimProblemImpl(objFunc)); 
     174                        ((IterativeMinimizer<Vector>) soln).search(searchPoints);//initial params 
    168175                    } 
    169                 }, 
     176 
     177                    Vector minimizer = soln.minimizer(); 
     178                    double minimum = soln.minimum(); 
     179                    return new Result(minimizer, minimum); 
     180                } catch (Exception ex) { 
     181                    return new Result(null, Double.POSITIVE_INFINITY); 
     182                } 
     183            } 
     184        }, 
    170185                strategyFactory, 
    171186                performanceMeasureFactory); 
Note: See TracChangeset for help on using the changeset viewer.