def de(mod): frontier_size = 50 max_tries = 40 f = 0.75 cf = 0.3 epsilon = 0.1 ib = 0 frontier = generate_frontier(frontier_size, mod) eb = init_score(mod, frontier) prev = [] lives = 5 p = 1 for k in range(max_tries): Utility.say(str(p) + "|") total, n, eb, ib, frontier, cur = update(mod, f, cf, ib, frontier, eb) if not prev: prev = cur[:] else: lives += Utility.check_type2(prev, cur) prev = cur[:] if lives is 0: break p += max_tries Utility.say("\n") f1, f2 = mod.objs(frontier[ib]) Utility.printOutput("Success", f1, f2, frontier[ib], eb) return frontier[ib]
def de(mod,frontier_size,max_tries,cf): f = 0.75 epsilon = 0.1 lives = 3 ib = 0 frontier = generate_frontier(frontier_size,mod) eb = sys.maxint prev = [sys.maxint]*mod.no_objectives lives = 5 p = 1 for k in range(max_tries): Utility.say(str(p)+"|"+"Best Hyper = " + str(eb) + "Best Solution = " + str(frontier[ib])) total,n,eb,ib,frontier,cur = update(mod,f,cf,ib,frontier,eb) if cur > prev: prev = cur else: lives -= 1 if lives is 0: break p += frontier_size Utility.say("\n") f1 = mod.objs(frontier[ib]) Utility.printOutput("Success",f1,frontier[ib],eb) return frontier[ib]
def update(mod, f, cf, ib, frontier, eb, total=0.0, n=0): cur = [] for i, x in enumerate(frontier): sc = mod.score(x) new = extrapolate(frontier, x, f, cf, i, mod) new_sc = mod.score(new) if Utility.check_type1(mod, new, frontier[ib]): Utility.say('?') eb = sc = new_sc frontier[i] = new[:] ib = i elif Utility.check_type1(mod, new, x): Utility.say('+') sc = new_sc frontier[i] = new[:] else: Utility.say('.') total += sc n += 1 cur.append(sc) return total, n, eb, ib, frontier, cur
def update(mod,f,cf,ib,frontier,eb, total=0.0, n=0): cur = [] for i,x in enumerate(frontier): sc = mod.score(x) new = extrapolate(frontier,x,f,cf,i,mod) new_sc = mod.score(new) if new_sc > eb: Utility.say('?') eb = sc = new_sc frontier[i] = new[:] ib = i elif new_sc > sc: Utility.say('+') sc = new_sc frontier[i] = new[:] else: Utility.say('.') total += sc n += 1 cur.append(sc) cur = sum(cur)/len(cur) return total,n,eb,ib,frontier,cur
def mws(mod): max_tries = 25 max_changes = 100 threshold = 0.01 p = 0.05 lives = 3 best_sn = mod.generate() norm = mod.baseline_study() norm, best_sc = mod.get_energy(best_sn,norm) prev = [] k = 1 for i in range(max_tries): sn = mod.generate() cur = [] Utility.say(str(k)+"|") for j in range(max_changes): norm,score = mod.get_energy(sn,norm) if score < threshold: f1,f2 = mod.objs(sn) norm,score = mod.get_energy(sn,norm) best_sn = sn[:] best_sc = score Utility.printOutput("Success", f1,f2,best_sn,f1+f2) return best_sn limit = len(mod.decisons)-1 if len(mod.decisons) > 0 else 0 c = random.randint(0,limit) if p < random.random(): temp = mutate(mod,sn,c) if mod.checkconstraint(temp): sn = temp[:] Utility.say('?') else: Utility.say('.') else: changed, sn = maximizesolution(mod,sn,c,norm) if changed: norm,local_sc = mod.get_energy(sn,norm) if Utility.check_type1(mod,sn,best_sn): best_sc = local_sc best_sn = sn[:] sn = sn[:] Utility.say('+') else: Utility.say('!') norm,local_sc = mod.get_energy(sn,norm) cur.append(local_sc) if not prev: prev = cur[:] else: lives += Utility.check_type2(prev,cur) prev = cur[:] if lives is 0: break k += max_changes Utility.say("\n") f1,f2 = mod.objs(sn) Utility.printOutput('Failure',f1,f2,best_sn,f1+f2) return best_sn
def mws(mod): max_tries = 100 max_changes = 100 threshold = 0.001 p = 0.05 lives = 3 best_sn = mod.generate() norm = mod.baseline_study() norm, best_sc = mod.get_energy(best_sn,norm) prev = mod.default_objs() k = 1 Utility.say(str(k)+"|") for i in range(max_tries): sn = mod.generate() cur = [] for j in range(max_changes): norm,score = mod.get_energy(sn,norm) if score < threshold: f1,f2 = mod.objs(sn) norm,score = mod.get_energy(sn,norm) best_sn = sn[:] best_sc = score Utility.printOutput("Success", f1,f2,best_sn,best_sc) return best_sn limit = len(mod.decisons)-1 if len(mod.decisons) > 0 else 0 c = random.randint(0,limit) if p < random.random(): temp = mutate(mod,sn,c) if mod.checkconstraint(temp): sn = temp[:] Utility.say('?') else: Utility.say('.') else: changed, local_sn = maximizesolution(mod,sn,c,norm) if changed: norm,local_sc = mod.get_energy(local_sn,norm) if local_sc < best_sc: best_sc = local_sc best_sn = local_sn[:] sn = local_sn[:] Utility.say('+') else: Utility.say('.') cur.append(mod.objs(sn)) cur = map(Utility.mean, zip(*cur)) if Utility.better(prev,cur): lives -= 1 if lives is 0: break else: prev = cur[:] k += max_changes Utility.say("\n"+str(int(k))+"|") f1,f2 = mod.objs(sn) Utility.printOutput('Failure',f1,f2,best_sn,best_sc) return best_sn
def sa(mod): s = mod.generate() norm = mod.baseline_study() norm,e = mod.get_energy(s,norm) sb = s[:] eb = e k = 1.0 kmax = 999.0 lives = 5 Utility.say("1|") prev = [] cur = [] while k < kmax: sn = mod.generate() norm, en = mod.get_energy(sn,norm) if Utility.check_type1(mod,sn,sb): sb = sn[:] eb = en Utility.say("!") if Utility.check_type1(mod,sn,s): s = sn[:] e = en Utility.say("+") elif mod.prob(e, en, k*7/(kmax)) < random.random(): s = sn e = en Utility.say("?") Utility.say(".") cur.append(en) k = k + 1 if k % 50 == 0: #cur = map(Utility.mean, zip(*cur)) if not prev: prev = cur[:] else: lives += Utility.check_type2(prev,cur) prev = cur[:] if lives is 0: break cur = [] Utility.say("\n"+str(int(k))+"|") f1,f2 = mod.objs(sb) Utility.printOutput('Success',f1,f2,sb,f1+f2) return sb
def mws(mod): max_tries = 25 max_changes = 100 threshold = 0.01 p = 0.05 lives = 3 best_sn = mod.generate() norm = mod.baseline_study() norm, best_sc = mod.get_energy(best_sn, norm) prev = [] k = 1 for i in range(max_tries): sn = mod.generate() cur = [] Utility.say(str(k) + "|") for j in range(max_changes): norm, score = mod.get_energy(sn, norm) if score < threshold: f1, f2 = mod.objs(sn) norm, score = mod.get_energy(sn, norm) best_sn = sn[:] best_sc = score Utility.printOutput("Success", f1, f2, best_sn, f1 + f2) return best_sn limit = len(mod.decisons) - 1 if len(mod.decisons) > 0 else 0 c = random.randint(0, limit) if p < random.random(): temp = mutate(mod, sn, c) if mod.checkconstraint(temp): sn = temp[:] Utility.say('?') else: Utility.say('.') else: changed, sn = maximizesolution(mod, sn, c, norm) if changed: norm, local_sc = mod.get_energy(sn, norm) if Utility.check_type1(mod, sn, best_sn): best_sc = local_sc best_sn = sn[:] sn = sn[:] Utility.say('+') else: Utility.say('!') norm, local_sc = mod.get_energy(sn, norm) cur.append(local_sc) if not prev: prev = cur[:] else: lives += Utility.check_type2(prev, cur) prev = cur[:] if lives is 0: break k += max_changes Utility.say("\n") f1, f2 = mod.objs(sn) Utility.printOutput('Failure', f1, f2, best_sn, f1 + f2) return best_sn
def sa(mod): s = mod.generate() norm = mod.baseline_study() norm, e = mod.get_energy(s, norm) sb = s[:] eb = e k = 1.0 kmax = 999.0 lives = 5 Utility.say("1|") prev = [] cur = [] while k < kmax: sn = mod.generate() norm, en = mod.get_energy(sn, norm) if Utility.check_type1(mod, sn, sb): sb = sn[:] eb = en Utility.say("!") if Utility.check_type1(mod, sn, s): s = sn[:] e = en Utility.say("+") elif mod.prob(e, en, k * 7 / (kmax)) < random.random(): s = sn e = en Utility.say("?") Utility.say(".") cur.append(en) k = k + 1 if k % 50 == 0: #cur = map(Utility.mean, zip(*cur)) if not prev: prev = cur[:] else: lives += Utility.check_type2(prev, cur) prev = cur[:] if lives is 0: break cur = [] Utility.say("\n" + str(int(k)) + "|") f1, f2 = mod.objs(sb) Utility.printOutput('Success', f1, f2, sb, f1 + f2) return sb
def sa(mod): s = mod.generate() norm = mod.baseline_study() norm,e = mod.get_energy(s,norm) sb = s[:] eb = e k = 1.0 kmax = 1499.0 lives = 5 Utility.say("1|") prev = mod.default_objs() cur = [] status = "Success" while k < kmax: sn = mod.generate() norm, en = mod.get_energy(sn,norm) if en < eb: sb = sn[:] eb = en Utility.say("!") if en < e: s = sn[:] e = en Utility.say("+") elif mod.prob(e, en, k*7/(kmax)) < random.random(): s = sn e = en Utility.say("?") Utility.say(".") cur.append(mod.objs(sb)) k = k + 1 if k % 100 == 0: cur = map(Utility.mean, zip(*cur)) if Utility.better(prev,cur): lives -= 1 if lives is 0: status = "Terminated" break else: prev = cur[:] cur = [] Utility.say("\n"+str(int(k))+"|") f1,f2 = mod.objs(sb) Utility.printOutput(status,f1,f2,sb,f1+f2) return sb