import random
from simanneal import Annealer

class OneMax(Annealer):
def __init__(self, state):
super().__init__(state)

def move(self):
pos = random.randint(0, len(self.state) - 1)
self.state[pos] = (self.state[pos] + 1) % 2

def energy(self):
return sum(self.state)

def main():
num_count = 20

zero_one_list = [ 0, 1 ]
init_state = [ random.choice(zero_one_list) for i in range(num_count) ]
print(init_state)

one_max = OneMax(init_state)
one_max.set_minmax("maximize") # 추가된 기능
one_max.Tmax = 1000.0 # default 25000.0
one_max.Tmin = 1.0 # default 2.5
one_max.steps = 1000000 # default 50000
one_max.updates = 10 # 10회 출력(10만번 당 한 번), default 100
one_max.copy_strategy = "slice"
# auto_schedule = one_max.auto(minutes = 10) # 실행 시간 명시 => 적절한 tmax, tmin, steps 계산
# one_max.set_schedule(auto_schedule)
state, obj = one_max.anneal()

print(state)
print("obj :", obj)

main()
내가 뭐 잘못햇나??