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()
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()
내가 뭐 잘못햇나??
불속성을 추가해야지
...;
set_minmax 함수는 없는데 새로 추가된거 맞음?