# BERG - ACA research - [ ] przypomnienie sobie jak zaimplementowano temperatury w repo - [ ] wyjęcie sampla grafów (do prototypowania) - [ ] wytestowanie temperatury - samego mechanizmu - [ ] temperatura krytyczna - jaka jest? [średnia magnetyzacja i ciepło właściwe] - [ ] ustalenie scenariuszy annealingu [post na BK iota.cafe](https://iota.cafe/t/annealing-cellular-automaton-consensus/271) + wyjście poza temperaturę krytyczną - [ ] nie zmieniamy opinii jeśli otoczenie inne - [ ] badanie Hej! Referencje [Ising Model]: - EN model Isinga - wprowadzenie: https://ps.uci.edu/~cyu/p238C/LectureNotes/IsingModel/IsingModel.pdf - PL rozdział o modelu Isinga i przejściach fazowych: wysłany na Slack jako zip - PL wyznaczanie temperatury krytycznej (sieci o rozładzie potęgowym): http://efizyka.if.pw.edu.pl/twiki/pub/FSiT/ProjektyQuiz/TomaszBaldyga.pdf - EN Ising model on evolution networks and its application on opinion formation https://doi.org/10.1088/1674-1056/23/6/068701 - Artykuł teoretyczny z obliczeniami temperatury krytycznej dla grafów k-regularnych https://arxiv.org/abs/1701.08628 - Deep learning for critical temp: https://d-nb.info/1225346274/34 - Phase Transitions and Hysteresis in a Cellular Automata-Based Model of Opinion Formation http://efizyka.if.pw.edu.pl/twiki/pub/MFwEiS/LiteraturaPrzedmiotu/Kacperski_Holyst_1996.pdf - A comparative study of 2d Ising model at different boundary conditions using non-deterministic Hexagonal Cellular Automata https://arxiv.org/pdf/1906.04794.pdf PSEUDOKOD ALGORYTMU WEJŚCIE - macierz adjacencji grafu, spiny [-1/1 lub 0/1], temperatura układu WYJŚCIE - średnia magnetyzacja po każdej iteracji ALGORYTM ``` Variables Graphs - set of precomputed graphs steps_till_termalization - number of simulation steps required for the graph to reach "equilibrium state". We will need to find it numerically sample_max - number of data samples collected for a single graph steps_till_weak_corelations - number of simulation steps untill graph states are weakly correlated t_max - maximal vale of analysed temperatures i.e., we look for t_c in range [0,t_max] ---- list_of_av_op - list of values of average opinion for a fixed graph and fixed temperature. Different values in this list correspond to different snapshots in time list_of_en - same as above, but energy list_of_av_values_of_av_op - list of values of average value of 'average opinion' i.e., mean value of the list 'list_of_av_op' list_of_st_dev_of_en - same as above, but *energy* and *standard deviation* ``` ``` Functions: append(list,element) - appends value of 'element' to 'list' MAXIMAL_VALE - returns max value from a list make_histogram - returns histogram (empirical density function) calculate_average - returns average value of elements from the list calculate_st_deviation - returns standard deviation evolve_to_next_step(g,t) - graph 'g' is evolved to the mext step with synchronous Glauber dynamics ar temperature 't' FIND_CORRESPONDING_POSITION(list,element) - returns relative position of element 'element' in the 'list' ``` ``` PROGRAM Main DO g in Graphs tmp = calculate_tc(g) list_of_tc = append(list_of_tc; tmp) ENDDO PRINT(histogram.txt) make_histogram(list_of_tc) PRINT(results_txt) calculate_average(list_of_tc) PRINT(results.txt) calculate_st_deviation(list_of_tc) ``` ``` PROGRAM calculate_tc(g) list_of_av_values_of_av_op = {} list_of_st_dev_of_en = {} DO t_int = 0,t_max_int t = t_max*(t_int/t_max_int) DO step = 1, steps_till_termalization evolve_to_next_step(g,t) ENDDO list_of_av_op = {} list_of_en = {} DO i = 1,sample_max DO step = 1, steps_till_weak_corelations evolve_to_next_step(g,t) ENDDO tmp_av_op = calculate_average_opinion(g) tmp_en = calculate_energy(g) list_of_av_op = append(list_of_av_op; tmp_av_op) list_of_en = append(list_of_en; tmp_en) ENDDO tmp_av_av_op = calculate_average(list_of_av_op) tmp_st_dev = calculate_st_deviation(list_of_en) list_of_av_values_of_av_op = append(list_of_av_values_of_av_op ; tmp_av_av_op) list_of_st_dev_of_en = append(list_of_st_dev_of_en; tmp_st_dev) PRINT(av_opinion.txt) t, tmp_av_av_op PRINT(heat_capacity.txt) t, tmp_st_dev ENDDO Max_energy_st_dev = MAXIMAL_VALE(list_of_st_dev_of_en) t_c = FIND_CORRESPONDING_POSITION(Max_energy_st_dev, list_of_st_dev_of_en) *(t_max/t_max_int) RETURN t_c ``` - ustalamy k i bierzemy różne n - wyliczyć temp krytyczną dla różnych kombinacji k, n i stworzyć histogram