diff --git a/lib/csys/program.ex b/lib/csys/program.ex index a3591b3..2e00db0 100644 --- a/lib/csys/program.ex +++ b/lib/csys/program.ex @@ -71,7 +71,7 @@ alias Scopes.CSys end end -# message handlers // proc steps + # message handlers // proc steps def process_data(msg, scope) do data = Shape.data(msg) @@ -111,7 +111,7 @@ alias Scopes.CSys CSys.send_message(new, [:csys, :connect], Map.put(data, :target, self())) end -# synapse operations + # synapse operations def multiply(n) do fn msg -> @@ -122,10 +122,25 @@ alias Scopes.CSys def negate(), do: multiply(-1) -# helper functions + # helper functions def restart({state, _proc, syns, env}) do state_n = %{state | stage: :initial} {state_n, get_proc(state_n), syns, env} end + + # demo init sequences + + def init_seq_b1() do [ + fn [zero | _ns] -> CSys.send_message(zero, [:csys, :create, :pred], + %{op: [CSys.data_only(), negate()]}) end, + fn [one | _ns] -> CSys.send_message(one, [:csys, :create, :succ], + %{op: CSys.data_only()}) end, + fn [two | _ns] -> CSys.send_message(two, [:csys, :create, :pred]) end, + fn [three | others] -> + zero = List.last(others) + CSys.send_message(three, [:csys, :connect], %{target: zero}) + end + ] + end end diff --git a/test/csys_test.exs b/test/csys_test.exs index cf97963..fa7def2 100644 --- a/test/csys_test.exs +++ b/test/csys_test.exs @@ -16,34 +16,16 @@ defmodule Scopes.CSysTest do Shape.data(receive_select(head)) end - def init_seq() do [ - fn [zero | _ns] -> CSys.send_message(zero, [:csys, :create, :pred], - %{op: [CSys.data_only(), Program.negate()]}) end, - fn [one | _ns] -> CSys.send_message(one, [:csys, :create, :succ], - %{op: CSys.data_only()}) end, - fn [two | _ns] -> CSys.send_message(two, [:csys, :create, :pred]) end, - fn [three | others] -> - zero = List.last(others) - CSys.send_message(three, [:csys, :connect], %{target: zero}) - end - ] - end - describe "basic:" do test "minimal-neural-net" do - _env = Environ.setup(Program.prepare_basic(), init_seq()) + _env = Environ.setup(Program.prepare_basic(), Program.init_seq_b1()) zero = receive_data([:csys, :created]).new CSys.send_value(zero, 0) assert 0 = receive_data().value - #CSys.send_message(zero, [:csys, :create, :pred], - # %{op: [CSys.data_only(), Program.negate()]}) one = receive_data([:csys, :created]).new - #CSys.send_message(one, [:csys, :create, :succ], %{op: CSys.data_only()}) _two = receive_data([:csys, :created]).new - #CSys.send_message(two, [:csys, :create, :pred]) three = receive_data([:csys, :created]).new - #CSys.send_message(three, [:csys, :connect], %{target: zero}) - Process.sleep(3) + Process.sleep(5) CSys.send_value(one, 1) assert receive_data().value == 1 #assert receive_data().value in [-1, 1]