Commit bf075a4c authored by Jonas Boysen's avatar Jonas Boysen
Browse files

remove solution of optional programming tasks

parent 9be0d683
Loading
Loading
Loading
Loading
+0 −45
Original line number Diff line number Diff line
%% Cell type:code id: tags:

``` python
%matplotlib ipympl
import numpy as np
from field_optimization import Simulation, FieldVisualizer, IPyUI

def random_search_successor(current_state: list, neighbor_states: list[list], neighbor_costs: list) -> [list, bool]:
    terminate = False
    neighbor = neighbor_states.pop()
    neighbor_cost = neighbor_costs.pop()
    current_cost = optimize_sim.evaluate_state(state=current_state)
    if current_cost > neighbor_cost:
        return neighbor, terminate
    else:
        return current_state, terminate

def stochastic_hc_successor(current_state: list, neighbor_states: list[list], neighbor_costs: list) -> [list, bool]:
    current_cost = optimize_sim.evaluate_state(current_state)
    neighbor_cost_deltas = [current_cost - cost for cost in neighbor_costs]
    candidates = []
    weights = []
    for neighbor_state, neighbor_cost_delta in zip(neighbor_states, neighbor_cost_deltas):
        if neighbor_cost_delta > 0:
            candidates.append(neighbor_state)
            weights.append(neighbor_cost_delta)

    if not candidates:
        return current_state, True
    successor = np.random.choice(np.array(candidates), (1, len(candidates[0])), p=np.array(weights)).tolist()

    return successor, False

def t_schedule(t: int) -> float:
    t_max = 100
    return t_max - t * t

MAX_ITERATIONS = 50

optimize_sim = Simulation(field_save_dir="field", t_schedule=t_schedule, stochastic_hc=stochastic_hc_successor, random_search=random_search_successor)
optimize_sim.prepare_complete_state_representation()
field_vis = FieldVisualizer(optimize_sim, canvas_size=600)
ui = IPyUI(field_vis=field_vis, optimize_sim=optimize_sim, max_iterations=MAX_ITERATIONS)
ui.optimization_ui()
```
+0 −44
Original line number Diff line number Diff line
%% Cell type:code id: tags:

``` python
%matplotlib ipympl
import numpy as np
from graph_optimization import Simulation, Visualizer, IPyUI

def random_search_successor(current_state: list, neighbor_states: list[list], neighbor_costs: list) -> [list, bool]:
    terminate = False
    neighbor = neighbor_states.pop()
    neighbor_cost = neighbor_costs.pop()
    current_cost = optimize_sim.evaluate_state(state=current_state)
    if current_cost > neighbor_cost:
        return neighbor, terminate
    else:
        return current_state, terminate

def stochastic_hc_successor(current_state: list, neighbor_states: list[list], neighbor_costs: list) -> [list, bool]:
    current_cost = optimize_sim.evaluate_state(current_state)
    neighbor_cost_deltas = [current_cost - cost for cost in neighbor_costs]
    candidates = []
    weights = []
    for neighbor_state, neighbor_cost_delta in zip(neighbor_states, neighbor_cost_deltas):
        if neighbor_cost_delta > 0:
            candidates.append(neighbor_state)
            weights.append(neighbor_cost_delta)

    if not candidates:
        return current_state, True
    successor = np.random.choice(np.array(candidates), (1, len(candidates[0])), p=np.array(weights)).tolist()

    return successor, False

def t_schedule(t: int) -> float:
    t_max = 100
    return t_max - t

MAX_ITERATIONS = 50

optimize_sim = Simulation(graph_load_dir="graph", t_schedule=t_schedule, stochastic_hc=stochastic_hc_successor, random_search=random_search_successor)
field_vis = Visualizer(optimize_sim, canvas_size=550)
ui = IPyUI(field_vis=field_vis, optimize_sim=optimize_sim, max_iterations=MAX_ITERATIONS)
ui.optimization_ui()
```