Files
graph_recognition_w_attn/sims/__pycache__/consensus.cpython-312.pyc

91 lines
6.7 KiB
Plaintext
Raw Normal View History

2025-07-31 01:12:53 -04:00
<EFBFBD>
<10><>h\<00><00>B<00>ddlZddlmZddlmZddlmZddlZGd<04>d<05>Z dejdejde fd <09>Z d
ejde fd <0B>Z d
ejde fd <0C>Z eejdg<01> <0A>dejdejde fd<10><04>Zd<11>Zy)<12>N)<01> dataclass)<01>partialc<00>t<00>eZdZUdZdZeed<dZeed<dZe ed<dZ
e ed <d
Z e ed <d
Z e ed <d Zeed<y)<10>ConsensusConfigz2
Config class for Consensus dynamics sims
i<><00>num_sims<6D><00>
num_agents<EFBFBD><00> max_rangeg<65><67><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?<3F> step_sizeF<65>directed<65>weighted<65>d<00>num_time_stepsN)<0F>__name__<5F>
__module__<EFBFBD> __qualname__<5F>__doc__r<00>int<6E>__annotations__r r <00>floatr r <00>boolrr<00><00><00></home/letpon/code/graph_recognition_w_attn/sims/consensus.pyrrsO<00><00><08><18>H<EFBFBD>c<EFBFBD><17><17>J<EFBFBD><03><17><18>I<EFBFBD>u<EFBFBD><18><1A>I<EFBFBD>u<EFBFBD><1A><1A>H<EFBFBD>d<EFBFBD><1A><1A>H<EFBFBD>d<EFBFBD><1A><1D>N<EFBFBD>C<EFBFBD>rr<00>
adj_matrix<EFBFBD> agent_states<65>configc<00><><00>|}tjtj|<03>dd<02><03>}||z }||jtj||<01>zzd|jzz S)an
Takes a step given the adjacency matrix and the current agent state using consensus dynamics.
Parameters
-----------------------------
adj_matrix : jax.Array (num_agents, num_agents)
A jax array containing the adjacency matrix for the consensus step.
agent_states: jax.Array (num_agents)
A jax array containing the current agent state
config: ConsensusConfig
Config class for Consensus Dynamics
Returns
------------------------------
updated_agent_state: jax.Array (num_agents)
A jax array containing the updated agent state
r
T)<02>axis<69>keepdims)<05>jnp<6E>sum<75>absr <00>matmul)rrr<00>L<>normss r<00>consensus_stepr(s^<00><00>0 <13>A<EFBFBD> <0F>G<EFBFBD>G<EFBFBD>C<EFBFBD>G<EFBFBD>G<EFBFBD>A<EFBFBD>J<EFBFBD>Q<EFBFBD><14> 6<>E<EFBFBD> <09>U<EFBFBD> <0B>A<EFBFBD> <18>6<EFBFBD>+<2B>+<2B>c<EFBFBD>j<EFBFBD>j<EFBFBD><11>\<5C>.J<>J<> J<>Q<EFBFBD>QW<51>Qa<51>Qa<51>Ma<4D> b<>br<00>keyc<00>x<00>tjj||j|jf<02><01>}t j
|dd<03><04>}|j st j|dkDdd<06>}|jr|St j|<02>t j|jd<02>z}|S)a<>
Generates a random adjacency matrix in accordance with the config.
The diagonal of the matrix is ensured to be all ones.
Parameters
--------------------
key: jax.Array
A key for jax.random operations
config: ConsensusConfig
Config for Consensus dyanmics
Returns
---------------------
adj_matrices: jax.Array (num_agents, num_agents)
Random matrix
)<01>shaper
F)<01>inplaceg<00>?r) <0C>jax<61>random<6F>uniformr r"<00> fill_diagonalr<00>wherer <00>tril<69>triu<69>T)r)r<00> rand_matrixs r<00> generate_random_adjacency_matrixr63s<><00><00>$<17>:<3A>:<3A>%<25>%<25>c<EFBFBD>&<26>2C<32>2C<32>V<EFBFBD>EV<45>EV<45>1W<31>%<25>X<>K<EFBFBD><16>#<23>#<23>K<EFBFBD><11>E<EFBFBD>B<>K<EFBFBD> <11>?<3F>?<3F><19>i<EFBFBD>i<EFBFBD> <0B>c<EFBFBD> 1<>1<EFBFBD>a<EFBFBD>8<> <0B> <0A><EFBFBD><EFBFBD><1A><1A><15>(<28>(<28>;<3B>'<27>#<23>(<28>(<28>;<3B>=<3D>=<3D>!<21>*D<>D<>K<EFBFBD> <16>rc<00><><00>tjj||j|jf|j
|j
<00><01>}|S)an
Generate a random initial state for the agents in accordance with the config.
Parameters
---------------------
key: jax.Arrray
A key for jax.random operations
config: ConsensusConfig
Config for Consensus dynamics
Returns
---------------------
rand_states: jax.Array (num_sims, num_agents)
)r+<00>minval<61>maxval)r-r.r/rr r )r)r<00> rand_statess r<00>generate_random_agent_statesr;SsR<00><00>"<16>*<2A>*<2A>$<24>$<24>S<EFBFBD><16><1F><1F>&<26>BS<42>BS<42>0T<30>^d<>^n<>^n<>]n<>w}<7D>xH<02>xH<02>$<24>I<02>K<EFBFBD> <16>r)<01>static_argnames<65>adj_mat<61>initial_agent_statec<00><><00><00><02><06>tjtdd<02><03><00><06><00><06>fd<04>}tjj ||d<05>j
<00>\}}|j ddd<07>S)a<>
Runs the consensus sim and returns a history of agent states.
Parameters
-------------------
adj_mat: jax.Array (num_agents, num_agents)
A jax array containing the adjacency matrix for the consensus step.
initial_agent_state: jax.Array (num_agents)
A jax array containing the initial agent state
config: ConsensusConfig
Config for Consensus dynamics
)NrNr)<02>in_axes<65>out_axesc<00> <00><03><00><04>|<00><05>}||fS)Nr)<06>x_prev<65>_<>x_nextr=<00>batched_consensus_steprs <20><><EFBFBD>r<00>stepzrun_consensus_sim.<locals>.step{s<00><><00>'<27><07><16><16>@<40><06><15>v<EFBFBD>~<7E>rNr
<00>)r-<00>vmapr(<00>lax<61>scanr<00> transpose)r=r>rrGrD<00>
all_statesrFs` ` @r<00>run_consensus_simrNhsX<00><><00>"!<21>X<EFBFBD>X<EFBFBD>n<EFBFBD>o<EFBFBD>XY<58>Z<><1A><1E><18>G<EFBFBD>G<EFBFBD>L<EFBFBD>L<EFBFBD><14>':<3A>D<EFBFBD>&<26>BW<42>BW<42>X<>M<EFBFBD>A<EFBFBD>z<EFBFBD> <15> <1F> <1F><01>1<EFBFBD>a<EFBFBD> (<28>(rc<00><00>ddlm}ddl}|j<00>t j
|<00>}|j \}}t j|<05>}|j<00>t|<06>D] }|j||dd<00>|fd|<08><00><02><03><00>"|jd<04>|jd<05>|j|j |j<00>|jd<06>|j!<00>|j#<00>y)NrzAgent )<01>label<65>Timestepz Agent statuez!Consensus simulation trajectories)<12>matplotlib.pyplot<6F>pyplot<6F>seaborn<72> set_theme<6D>np<6E>arrayr+<00>arange<67>figure<72>range<67>plot<6F>xlabel<65>ylabel<65>ylimr <00>title<6C>legend<6E>show) <09>
trajectoryr<00>plt<6C>sns<6E>states<65> timestepsr <00>time<6D> agent_idxs r<00>plot_consensusri<00>s<><00><00>#<23><19><07>M<EFBFBD>M<EFBFBD>O<EFBFBD> <0F>X<EFBFBD>X<EFBFBD>j<EFBFBD> !<21>F<EFBFBD>"<22>L<EFBFBD>L<EFBFBD><19>I<EFBFBD>z<EFBFBD> <0A>9<EFBFBD>9<EFBFBD>Y<EFBFBD> <1F>D<EFBFBD><07>J<EFBFBD>J<EFBFBD>L<EFBFBD><1A>:<3A>&<26>I<01> <09> <0B><08><08><14>v<EFBFBD>a<EFBFBD><19>l<EFBFBD>+<2B>V<EFBFBD>I<EFBFBD>;<3B>3G<33><08>H<>I<01><08>J<EFBFBD>J<EFBFBD>z<EFBFBD><1A><07>J<EFBFBD>J<EFBFBD>~<7E><1E><07>H<EFBFBD>H<EFBFBD>f<EFBFBD><1E><1E> <1E><06> 0<> 0<>1<><07>I<EFBFBD>I<EFBFBD>1<>2<><07>J<EFBFBD>J<EFBFBD>L<EFBFBD><07>H<EFBFBD>H<EFBFBD>Jr)r-<00> jax.numpy<70>numpyr"<00> dataclassesr<00> functoolsrrVr<00>Arrayr(r6r;<00>jitrNrirrr<00><module>rps<><00><01>
<EFBFBD><17>!<21><1D><12>
<1E>
<1E>c<01>s<EFBFBD>y<EFBFBD>y<EFBFBD>c<01><03> <09> <09>c<01>?<3F>c<01><<17>#<23>)<29>)<29><17>_<EFBFBD><17>@<17>c<EFBFBD>i<EFBFBD>i<EFBFBD><17><1F><17>* <09><13><17><17>8<EFBFBD>*<2A>-<2D>)<29>s<EFBFBD>y<EFBFBD>y<EFBFBD>)<29>s<EFBFBD>y<EFBFBD>y<EFBFBD>)<29>Ra<52>)<29>.<2E>)<29>6r