mainExample.py 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. # main imports
  2. import logging
  3. import os
  4. # module imports
  5. from macop.algorithms.IteratedLocalSearch import IteratedLocalSearch as ILS
  6. from macop.solutions.BinarySolution import BinarySolution
  7. from macop.evaluators.EvaluatorExample import evaluatorExample
  8. from macop.operators.mutators.SimpleMutation import SimpleMutation
  9. from macop.operators.mutators.SimpleBinaryMutation import SimpleBinaryMutation
  10. from macop.operators.crossovers.SimpleCrossover import SimpleCrossover
  11. from macop.operators.crossovers.RandomSplitCrossover import RandomSplitCrossover
  12. from macop.operators.policies.RandomPolicy import RandomPolicy
  13. from macop.operators.policies.UCBPolicy import UCBPolicy
  14. from macop.checkpoints.BasicCheckpoint import BasicCheckpoint
  15. if not os.path.exists('data'):
  16. os.makedirs('data')
  17. # logging configuration
  18. logging.basicConfig(format='%(asctime)s %(message)s', filename='data/example.log', level=logging.DEBUG)
  19. # default validator
  20. def validator(solution):
  21. return True
  22. # define init random solution
  23. def init():
  24. return BinarySolution([], 30).random(validator)
  25. filepath = "data/checkpoints.csv"
  26. def main():
  27. operators = [SimpleBinaryMutation(), SimpleMutation(), SimpleCrossover(), RandomSplitCrossover()]
  28. policy = UCBPolicy(operators)
  29. algo = ILS(init, evaluatorExample, operators, policy, validator, True)
  30. algo.addCheckpoint(_class=BasicCheckpoint, _every=5, _filepath=filepath)
  31. bestSol = algo.run(425)
  32. if __name__ == "__main__":
  33. main()