forked from pushkar/ABAGAIL
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request pushkar#15 from omscs-georgia-tech/master
Adds jython examples
- Loading branch information
Showing
5 changed files
with
360 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,78 @@ | ||
import sys | ||
import os | ||
import time | ||
|
||
import java.io.FileReader as FileReader | ||
import java.io.File as File | ||
import java.lang.String as String | ||
import java.lang.StringBuffer as StringBuffer | ||
import java.lang.Boolean as Boolean | ||
import java.util.Random as Random | ||
|
||
import dist.DiscreteDependencyTree as DiscreteDependencyTree | ||
import dist.DiscreteUniformDistribution as DiscreteUniformDistribution | ||
import dist.Distribution as Distribution | ||
import opt.DiscreteChangeOneNeighbor as DiscreteChangeOneNeighbor | ||
import opt.EvaluationFunction as EvaluationFunction | ||
import opt.GenericHillClimbingProblem as GenericHillClimbingProblem | ||
import opt.HillClimbingProblem as HillClimbingProblem | ||
import opt.NeighborFunction as NeighborFunction | ||
import opt.RandomizedHillClimbing as RandomizedHillClimbing | ||
import opt.SimulatedAnnealing as SimulatedAnnealing | ||
import opt.example.FourPeaksEvaluationFunction as FourPeaksEvaluationFunction | ||
import opt.ga.CrossoverFunction as CrossoverFunction | ||
import opt.ga.SingleCrossOver as SingleCrossOver | ||
import opt.ga.DiscreteChangeOneMutation as DiscreteChangeOneMutation | ||
import opt.ga.GenericGeneticAlgorithmProblem as GenericGeneticAlgorithmProblem | ||
import opt.ga.GeneticAlgorithmProblem as GeneticAlgorithmProblem | ||
import opt.ga.MutationFunction as MutationFunction | ||
import opt.ga.StandardGeneticAlgorithm as StandardGeneticAlgorithm | ||
import opt.ga.UniformCrossOver as UniformCrossOver | ||
import opt.prob.GenericProbabilisticOptimizationProblem as GenericProbabilisticOptimizationProblem | ||
import opt.prob.MIMIC as MIMIC | ||
import opt.prob.ProbabilisticOptimizationProblem as ProbabilisticOptimizationProblem | ||
import shared.FixedIterationTrainer as FixedIterationTrainer | ||
import opt.example.ContinuousPeaksEvaluationFunction as ContinuousPeaksEvaluationFunction | ||
from array import array | ||
|
||
|
||
|
||
""" | ||
Commandline parameter(s): | ||
none | ||
""" | ||
|
||
N=60 | ||
T=N/10 | ||
fill = [2] * N | ||
ranges = array('i', fill) | ||
|
||
ef = ContinuousPeaksEvaluationFunction(T) | ||
odd = DiscreteUniformDistribution(ranges) | ||
nf = DiscreteChangeOneNeighbor(ranges) | ||
mf = DiscreteChangeOneMutation(ranges) | ||
cf = SingleCrossOver() | ||
df = DiscreteDependencyTree(.1, ranges) | ||
hcp = GenericHillClimbingProblem(ef, odd, nf) | ||
gap = GenericGeneticAlgorithmProblem(ef, odd, mf, cf) | ||
pop = GenericProbabilisticOptimizationProblem(ef, odd, df) | ||
|
||
rhc = RandomizedHillClimbing(hcp) | ||
fit = FixedIterationTrainer(rhc, 200000) | ||
fit.train() | ||
print "RHC: " + str(ef.value(rhc.getOptimal())) | ||
|
||
sa = SimulatedAnnealing(1E11, .95, hcp) | ||
fit = FixedIterationTrainer(sa, 200000) | ||
fit.train() | ||
print "SA: " + str(ef.value(sa.getOptimal())) | ||
|
||
ga = StandardGeneticAlgorithm(200, 100, 10, gap) | ||
fit = FixedIterationTrainer(ga, 1000) | ||
fit.train() | ||
print "GA: " + str(ef.value(ga.getOptimal())) | ||
|
||
mimic = MIMIC(200, 20, pop) | ||
fit = FixedIterationTrainer(mimic, 1000) | ||
fit.train() | ||
print "MIMIC: " + str(ef.value(mimic.getOptimal())) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,78 @@ | ||
import sys | ||
import os | ||
import time | ||
|
||
import java.io.FileReader as FileReader | ||
import java.io.File as File | ||
import java.lang.String as String | ||
import java.lang.StringBuffer as StringBuffer | ||
import java.lang.Boolean as Boolean | ||
import java.util.Random as Random | ||
|
||
import dist.DiscreteDependencyTree as DiscreteDependencyTree | ||
import dist.DiscreteUniformDistribution as DiscreteUniformDistribution | ||
import dist.Distribution as Distribution | ||
import opt.DiscreteChangeOneNeighbor as DiscreteChangeOneNeighbor | ||
import opt.EvaluationFunction as EvaluationFunction | ||
import opt.GenericHillClimbingProblem as GenericHillClimbingProblem | ||
import opt.HillClimbingProblem as HillClimbingProblem | ||
import opt.NeighborFunction as NeighborFunction | ||
import opt.RandomizedHillClimbing as RandomizedHillClimbing | ||
import opt.SimulatedAnnealing as SimulatedAnnealing | ||
import opt.example.FourPeaksEvaluationFunction as FourPeaksEvaluationFunction | ||
import opt.ga.CrossoverFunction as CrossoverFunction | ||
import opt.ga.SingleCrossOver as SingleCrossOver | ||
import opt.ga.DiscreteChangeOneMutation as DiscreteChangeOneMutation | ||
import opt.ga.GenericGeneticAlgorithmProblem as GenericGeneticAlgorithmProblem | ||
import opt.ga.GeneticAlgorithmProblem as GeneticAlgorithmProblem | ||
import opt.ga.MutationFunction as MutationFunction | ||
import opt.ga.StandardGeneticAlgorithm as StandardGeneticAlgorithm | ||
import opt.ga.UniformCrossOver as UniformCrossOver | ||
import opt.prob.GenericProbabilisticOptimizationProblem as GenericProbabilisticOptimizationProblem | ||
import opt.prob.MIMIC as MIMIC | ||
import opt.prob.ProbabilisticOptimizationProblem as ProbabilisticOptimizationProblem | ||
import shared.FixedIterationTrainer as FixedIterationTrainer | ||
import opt.example.CountOnesEvaluationFunction as CountOnesEvaluationFunction | ||
from array import array | ||
|
||
|
||
|
||
|
||
""" | ||
Commandline parameter(s): | ||
none | ||
""" | ||
|
||
N=80 | ||
fill = [2] * N | ||
ranges = array('i', fill) | ||
|
||
ef = CountOnesEvaluationFunction() | ||
odd = DiscreteUniformDistribution(ranges) | ||
nf = DiscreteChangeOneNeighbor(ranges) | ||
mf = DiscreteChangeOneMutation(ranges) | ||
cf = SingleCrossOver() | ||
df = DiscreteDependencyTree(.1, ranges) | ||
hcp = GenericHillClimbingProblem(ef, odd, nf) | ||
gap = GenericGeneticAlgorithmProblem(ef, odd, mf, cf) | ||
pop = GenericProbabilisticOptimizationProblem(ef, odd, df) | ||
|
||
rhc = RandomizedHillClimbing(hcp) | ||
fit = FixedIterationTrainer(rhc, 200) | ||
fit.train() | ||
print "RHC: " + str(ef.value(rhc.getOptimal())) | ||
|
||
sa = SimulatedAnnealing(100, .95, hcp) | ||
fit = FixedIterationTrainer(sa, 200) | ||
fit.train() | ||
print "SA: " + str(ef.value(sa.getOptimal())) | ||
|
||
ga = StandardGeneticAlgorithm(20, 20, 0, gap) | ||
fit = FixedIterationTrainer(ga, 300) | ||
fit.train() | ||
print "GA: " + str(ef.value(ga.getOptimal())) | ||
|
||
mimic = MIMIC(50, 10, pop) | ||
fit = FixedIterationTrainer(mimic, 100) | ||
fit.train() | ||
print "MIMIC: " + str(ef.value(mimic.getOptimal())) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,78 @@ | ||
import sys | ||
import os | ||
import time | ||
|
||
import java.io.FileReader as FileReader | ||
import java.io.File as File | ||
import java.lang.String as String | ||
import java.lang.StringBuffer as StringBuffer | ||
import java.lang.Boolean as Boolean | ||
import java.util.Random as Random | ||
|
||
import dist.DiscreteDependencyTree as DiscreteDependencyTree | ||
import dist.DiscreteUniformDistribution as DiscreteUniformDistribution | ||
import dist.Distribution as Distribution | ||
import opt.DiscreteChangeOneNeighbor as DiscreteChangeOneNeighbor | ||
import opt.EvaluationFunction as EvaluationFunction | ||
import opt.GenericHillClimbingProblem as GenericHillClimbingProblem | ||
import opt.HillClimbingProblem as HillClimbingProblem | ||
import opt.NeighborFunction as NeighborFunction | ||
import opt.RandomizedHillClimbing as RandomizedHillClimbing | ||
import opt.SimulatedAnnealing as SimulatedAnnealing | ||
import opt.example.FourPeaksEvaluationFunction as FourPeaksEvaluationFunction | ||
import opt.ga.CrossoverFunction as CrossoverFunction | ||
import opt.ga.SingleCrossOver as SingleCrossOver | ||
import opt.ga.DiscreteChangeOneMutation as DiscreteChangeOneMutation | ||
import opt.ga.GenericGeneticAlgorithmProblem as GenericGeneticAlgorithmProblem | ||
import opt.ga.GeneticAlgorithmProblem as GeneticAlgorithmProblem | ||
import opt.ga.MutationFunction as MutationFunction | ||
import opt.ga.StandardGeneticAlgorithm as StandardGeneticAlgorithm | ||
import opt.ga.UniformCrossOver as UniformCrossOver | ||
import opt.prob.GenericProbabilisticOptimizationProblem as GenericProbabilisticOptimizationProblem | ||
import opt.prob.MIMIC as MIMIC | ||
import opt.prob.ProbabilisticOptimizationProblem as ProbabilisticOptimizationProblem | ||
import shared.FixedIterationTrainer as FixedIterationTrainer | ||
|
||
from array import array | ||
|
||
|
||
|
||
""" | ||
Commandline parameter(s): | ||
none | ||
""" | ||
|
||
N=200 | ||
T=N/5 | ||
fill = [2] * N | ||
ranges = array('i', fill) | ||
|
||
ef = FourPeaksEvaluationFunction(T) | ||
odd = DiscreteUniformDistribution(ranges) | ||
nf = DiscreteChangeOneNeighbor(ranges) | ||
mf = DiscreteChangeOneMutation(ranges) | ||
cf = SingleCrossOver() | ||
df = DiscreteDependencyTree(.1, ranges) | ||
hcp = GenericHillClimbingProblem(ef, odd, nf) | ||
gap = GenericGeneticAlgorithmProblem(ef, odd, mf, cf) | ||
pop = GenericProbabilisticOptimizationProblem(ef, odd, df) | ||
|
||
rhc = RandomizedHillClimbing(hcp) | ||
fit = FixedIterationTrainer(rhc, 200000) | ||
fit.train() | ||
print "RHC: " + str(ef.value(rhc.getOptimal())) | ||
|
||
sa = SimulatedAnnealing(1E11, .95, hcp) | ||
fit = FixedIterationTrainer(sa, 200000) | ||
fit.train() | ||
print "SA: " + str(ef.value(sa.getOptimal())) | ||
|
||
ga = StandardGeneticAlgorithm(200, 100, 10, gap) | ||
fit = FixedIterationTrainer(ga, 1000) | ||
fit.train() | ||
print "GA: " + str(ef.value(ga.getOptimal())) | ||
|
||
mimic = MIMIC(200, 20, pop) | ||
fit = FixedIterationTrainer(mimic, 1000) | ||
fit.train() | ||
print "MIMIC: " + str(ef.value(mimic.getOptimal())) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,104 @@ | ||
import sys | ||
import os | ||
import time | ||
|
||
import java.io.FileReader as FileReader | ||
import java.io.File as File | ||
import java.lang.String as String | ||
import java.lang.StringBuffer as StringBuffer | ||
import java.lang.Boolean as Boolean | ||
import java.util.Random as Random | ||
|
||
import dist.DiscreteDependencyTree as DiscreteDependencyTree | ||
import dist.DiscreteUniformDistribution as DiscreteUniformDistribution | ||
import dist.Distribution as Distribution | ||
import opt.DiscreteChangeOneNeighbor as DiscreteChangeOneNeighbor | ||
import opt.EvaluationFunction as EvaluationFunction | ||
import opt.GenericHillClimbingProblem as GenericHillClimbingProblem | ||
import opt.HillClimbingProblem as HillClimbingProblem | ||
import opt.NeighborFunction as NeighborFunction | ||
import opt.RandomizedHillClimbing as RandomizedHillClimbing | ||
import opt.SimulatedAnnealing as SimulatedAnnealing | ||
import opt.example.FourPeaksEvaluationFunction as FourPeaksEvaluationFunction | ||
import opt.ga.CrossoverFunction as CrossoverFunction | ||
import opt.ga.SingleCrossOver as SingleCrossOver | ||
import opt.ga.DiscreteChangeOneMutation as DiscreteChangeOneMutation | ||
import opt.ga.GenericGeneticAlgorithmProblem as GenericGeneticAlgorithmProblem | ||
import opt.ga.GeneticAlgorithmProblem as GeneticAlgorithmProblem | ||
import opt.ga.MutationFunction as MutationFunction | ||
import opt.ga.StandardGeneticAlgorithm as StandardGeneticAlgorithm | ||
import opt.ga.UniformCrossOver as UniformCrossOver | ||
import opt.prob.GenericProbabilisticOptimizationProblem as GenericProbabilisticOptimizationProblem | ||
import opt.prob.MIMIC as MIMIC | ||
import opt.prob.ProbabilisticOptimizationProblem as ProbabilisticOptimizationProblem | ||
import shared.FixedIterationTrainer as FixedIterationTrainer | ||
import opt.example.KnapsackEvaluationFunction as KnapsackEvaluationFunction | ||
from array import array | ||
|
||
|
||
|
||
|
||
""" | ||
Commandline parameter(s): | ||
none | ||
""" | ||
|
||
# Random number generator */ | ||
random = Random() | ||
# The number of items | ||
NUM_ITEMS = 40 | ||
# The number of copies each | ||
COPIES_EACH = 4 | ||
# The maximum weight for a single element | ||
MAX_WEIGHT = 50 | ||
# The maximum volume for a single element | ||
MAX_VOLUME = 50 | ||
# The volume of the knapsack | ||
KNAPSACK_VOLUME = MAX_VOLUME * NUM_ITEMS * COPIES_EACH * .4 | ||
|
||
# create copies | ||
fill = [COPIES_EACH] * NUM_ITEMS | ||
copies = array('i', fill) | ||
|
||
# create weights and volumes | ||
fill = [0] * NUM_ITEMS | ||
weights = array('d', fill) | ||
volumes = array('d', fill) | ||
for i in range(0, NUM_ITEMS): | ||
weights[i] = random.nextDouble() * MAX_WEIGHT | ||
volumes[i] = random.nextDouble() * MAX_VOLUME | ||
|
||
|
||
# create range | ||
fill = [COPIES_EACH + 1] * NUM_ITEMS | ||
ranges = array('i', fill) | ||
|
||
ef = KnapsackEvaluationFunction(weights, volumes, KNAPSACK_VOLUME, copies) | ||
odd = DiscreteUniformDistribution(ranges) | ||
nf = DiscreteChangeOneNeighbor(ranges) | ||
mf = DiscreteChangeOneMutation(ranges) | ||
cf = UniformCrossOver() | ||
df = DiscreteDependencyTree(.1, ranges) | ||
hcp = GenericHillClimbingProblem(ef, odd, nf) | ||
gap = GenericGeneticAlgorithmProblem(ef, odd, mf, cf) | ||
pop = GenericProbabilisticOptimizationProblem(ef, odd, df) | ||
|
||
rhc = RandomizedHillClimbing(hcp) | ||
fit = FixedIterationTrainer(rhc, 200000) | ||
fit.train() | ||
print "RHC: " + str(ef.value(rhc.getOptimal())) | ||
|
||
sa = SimulatedAnnealing(100, .95, hcp) | ||
fit = FixedIterationTrainer(sa, 200000) | ||
fit.train() | ||
print "SA: " + str(ef.value(sa.getOptimal())) | ||
|
||
ga = StandardGeneticAlgorithm(200, 150, 25, gap) | ||
fit = FixedIterationTrainer(ga, 1000) | ||
fit.train() | ||
print "GA: " + str(ef.value(ga.getOptimal())) | ||
|
||
mimic = MIMIC(200, 100, pop) | ||
fit = FixedIterationTrainer(mimic, 1000) | ||
fit.train() | ||
print "MIMIC: " + str(ef.value(mimic.getOptimal())) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,22 @@ | ||
#!/bin/bash | ||
# edit the classpath to to the location of your ABAGAIL jar file | ||
# | ||
export CLASSPATH=./lib/ABAGAIL.jar:$CLASSPATH | ||
mkdir -p data/plot logs image | ||
|
||
# four peaks | ||
echo "four peaks" | ||
jython fourpeaks.py | ||
|
||
# count ones | ||
echo "count ones" | ||
jython countones.py | ||
|
||
# continuous peaks | ||
echo "continuous peaks" | ||
jython continuouspeaks.py | ||
|
||
# knapsack | ||
echo "Running knapsack" | ||
jython knapsack.py | ||
|