Exemple #1
0
 def set_circuit_size(self, new_size):
     MEMS_CTRNN.set_circuit_size(self, new_size)
     self.inp_alpha = np.full(7, 1.0, dtype=float)
     self.inp_beta = np.full(7, 0.0, dtype=float)
     self.out_alpha = np.full(2, 1.0, dtype=float)
     self.out_beta = np.full(2, 0.0, dtype=float)
     self.outputs = np.full(2, 0.0, dtype=float)
Exemple #2
0
    def test_CTRNN_load(self):
        c = MEMS_CTRNN()
        c.load('sample.ns')

        self.assertEqual(c.size, 14)
        self.assertEqual(c.mem_h, 2.6e-6)
        self.assertEqual(c.mem_rho, 2330)
        self.assertEqual(c.mem_ythr, -3e-5)
        self.assertEqual(int(c.taus[0]), 1)
        self.assertEqual(int(c.v_biases[0]), -3)
        self.assertEqual(int(c.hs[0]), 2)
        self.assertEqual(c.weights[13][0], 0)
Exemple #3
0
    def __init__(self,
                 new_size=0,
                 stability_acc=0.001,
                 stability_hist_bucket=3,
                 stability_min_iteration=7,
                 stability_max_iteration=150):

        self.stability_acc = stability_acc
        self.stability_hist_bucket = stability_hist_bucket
        self.stability_min_iteration = stability_min_iteration
        self.stability_max_iteration = stability_max_iteration

        MEMS_CTRNN.__init__(self, new_size)
Exemple #4
0
    def euler_step_with_stability(self,
                                  step_size=None,
                                  use_dim_equation=False,
                                  save_detail=False,
                                  use_defelection_feedback=False,
                                  return_states_info=False):
        states_info = []

        if save_detail is True:
            outfile = open('duration_analysis.csv', 'a')
            outfile_csv = csv.writer(outfile,
                                     delimiter=',',
                                     quotechar="'",
                                     quoting=csv.QUOTE_MINIMAL)

        a = [0] * self.stability_hist_bucket
        b = [0] * self.stability_hist_bucket
        l = self.stability_hist_bucket

        t = time.time()

        for i in range(self.stability_max_iteration):
            MEMS_CTRNN.euler_step(self, step_size, use_dim_equation,
                                  use_defelection_feedback)
            if save_detail is True:
                outfile_csv.writerow([
                    t, i, step_size, self.states[-2],
                    self.states[-1], '-', a[(i - l) % l], b[(i - l) % l], '-',
                    (i - l) % l, '-', a[(i - l) % l] - b[(i - l) % l], '-', a,
                    b
                ])

            if return_states_info is True:
                states_info.append(list(self.states))

            if i >= self.stability_min_iteration and \
               abs(a[(i - l) % l] - self.states[-2]) < self.stability_acc and \
               abs(b[(i - l) % l] - self.states[-1]) < self.stability_acc:
                # print(i)
                break
            elif i >= l:
                a[(i - l) % l] = self.states[-2]
                b[(i - l) % l] = self.states[-1]

        if i >= 10:
            print(i)

        if save_detail is True:
            outfile.close()

        return states_info
Exemple #5
0
    def test_CTRNN_save(self):
        s_fname = 'sample2.ns'

        c = MEMS_CTRNN()
        c.load('sample.ns')
        c.save(s_fname)

        c2 = MEMS_CTRNN()
        c2.load(s_fname)

        self.assertEqual(c.size, c2.size)
        self.assertEqual(c.mem_h, c2.mem_h)
        self.assertEqual(c.mem_rho, c2.mem_rho)
        self.assertEqual(c.weights[13][0], c2.weights[13][0])
        self.assertEqual(c.mem_ythr, c2.mem_ythr)

        os.remove(s_fname)
Exemple #6
0
        print('The MEMCTRN {} is stablized in iteration {} for '.format(t, i) +
              'input1 = {}, input2 = {} and max_variation= {}'.format(
                  i1, i2, max_variation))

        return True
    elif i >= l:
        a[(i - l) % l] = c.states[-2]
        b[(i - l) % l] = c.states[-1]

    return False


if __name__ == "__main__":
    f_name = 'sample_2n.ns'

    c = MEMS_CTRNN()
    c.load(f_name)

    c1 = MEMS_CTRNN()
    c1.load(f_name)

    c2 = MEMS_CTRNN()
    c2.load(f_name)

    c.print_model()
    c.print_model_abstract()
    mem_wm = 131675.65242702136
    run_duration = 0.01
    step_size = 1 / mem_wm

    with open('debug.csv', 'w') as fi:
Exemple #7
0
 def print_model_abstract(self):
     MEMS_CTRNN.print_model_abstract(self)
     self.print_vagent_variables()
Exemple #8
0
 def print_model(self):
     MEMS_CTRNN.print_model(self)
     self.print_vagent_variables()
Exemple #9
0
import numpy as np
import csv


def gen_input(t):
    i1 = 80 if t > 200 else 0
    i2 = 180 if t > 400 else 0
    i2 = i2 if t < 800 else 0

    return (i1, i2)


if __name__ == "__main__":
    f_name = 'sample_2n.ns'

    c = MEMS_CTRNN()
    c.load(f_name)

    c.print_model()
    c.print_model_abstract()
    run_duration = 1000
    step_size = 1

    in1 = []
    in2 = []
    out1 = []
    out2 = []
    v_mem1 = []
    v_mem2 = []

    with open('debug.csv', 'w') as fi: