def hanoi(disks=7, towers=4, num_examples=6500, N=None, num_actions=None, direct=None, stop_gradient=False, aeclass="ConvolutionalGumbelAE", comment=""): for name, value in locals().items(): if value is not None: parameters[name] = [value] default_parameters["aeclass"] = aeclass import latplan.puzzles.hanoi as p p.setup() path = os.path.join(latplan.__path__[0], "puzzles", "-".join(map(str, ["hanoi", disks, towers])) + ".npz") with np.load(path) as data: pre_configs = data['pres'][:num_examples] suc_configs = data['sucs'][:num_examples] pres = p.generate(pre_configs, disks, towers) sucs = p.generate(suc_configs, disks, towers) transitions = np.array([pres, sucs]) states = np.concatenate((transitions[0], transitions[1]), axis=0) data = np.swapaxes(transitions, 0, 1) print(data.shape) train = data[:int(len(data) * 0.9)] val = data[int(len(data) * 0.9):int(len(data) * 0.95)] test = data[int(len(data) * 0.95):] ae = run(os.path.join("samples", sae_path), train, val, parameters) show_summary(ae, train, test) plot_autoencoding_image(ae, test, train) dump_actions(ae, transitions) dump_states(ae, states)
def lightsout(type='digital', size=4, num_examples=6500, N=None, num_actions=None, direct=None, stop_gradient=False, aeclass="ConvolutionalGumbelAE", comment="", prob_vis=1.00): for name, value in locals().items(): if value is not None: parameters[name] = [value] default_parameters["aeclass"] = aeclass import importlib p = importlib.import_module('latplan.puzzles.lightsout_{}'.format(type)) p.setup() path = os.path.join(latplan.__path__[0], "puzzles", "-".join(map(str, ["lightsout", type, size])) + ".npz") with np.load(path) as data: pre_configs = data['pres'][:num_examples] suc_configs = data['sucs'][:num_examples] # TWK: Wrap custom `add_missingness()` method around the data generators pres = add_missingness(p.generate(pre_configs), prob_vis) sucs = add_missingness(p.generate(suc_configs), prob_vis) transitions = np.array([pres, sucs]) states = np.concatenate((transitions[0], transitions[1]), axis=0) data = np.swapaxes(transitions, 0, 1) print(data.shape) train = data[:int(len(data) * 0.9)] val = data[int(len(data) * 0.9):int(len(data) * 0.95)] test = data[int(len(data) * 0.95):] ae = run(os.path.join("samples", sae_path), train, val, parameters) show_summary(ae, train, test) plot_autoencoding_image(ae, test, train) dump_actions(ae, transitions) dump_states(ae, states)
import latplan import latplan.puzzles.hanoi as p # importlib.reload(p) import itertools c = [c for c in itertools.islice(p.generate_configs(4, 3), 10000)] from functools import partial from latplan.util.timer import Timer with Timer( "************************* states on cpu ***************************"): s = p.generate(c, 4, 3) print(s[:3]) with Timer( "************************* validate_states ***************************" ): print("results:", np.all(p.validate_states(s)), "(should be True)") with Timer( "************************* validate_states with noise ***************************" ): print( "results:", np.all( p.validate_states(
#!/usr/bin/env python3 import numpy as np import sys sys.path.append('../../') from latplan.puzzles.hanoi import generate_configs, successors, generate, states, transitions from plot import plot_image, plot_grid disks = 8 towers = 3 configs = generate_configs(disks, towers) puzzles = generate(configs, disks, towers) print(puzzles.shape) print(puzzles[10]) for line in puzzles[10]: print(line) plot_image(puzzles[0], "hanoi.png") plot_image( np.clip(puzzles[0] + np.random.normal(0, 0.1, puzzles[0].shape), 0, 1), "hanoi+noise.png") plot_image( np.round( np.clip(puzzles[0] + np.random.normal(0, 0.1, puzzles[0].shape), 0, 1)), "hanoi+noise+round.png") plot_grid(puzzles[:36], "hanois.png") _transitions = transitions(disks, towers)