From 45a5b07bdad52026b10cd81442e55ce683ef37a9 Mon Sep 17 00:00:00 2001 From: mirimatcode Date: Wed, 29 Jan 2025 14:03:46 +0100 Subject: [PATCH] messo codice che segna i punti invece delle rette --- grafico.h | 16 +++++- layer_multi | Bin 25688 -> 25768 bytes layer_multi.c | 15 +++++- layer_multi_addestrato | Bin 0 -> 21696 bytes layer_multi_addestrato.c | 101 +++++++++++++++++++++++++++++++++++++ layer_singolo | Bin 21592 -> 21672 bytes layer_singolo.c | 6 ++- layer_singolo_addestrato | Bin 0 -> 21704 bytes layer_singolo_addestrato.c | 68 +++++++++++++++++++++++++ percettrone.h | 24 ++++++--- tempCodeRunnerFile.c | 1 + 11 files changed, 219 insertions(+), 12 deletions(-) create mode 100755 layer_multi_addestrato create mode 100644 layer_multi_addestrato.c create mode 100755 layer_singolo_addestrato create mode 100644 layer_singolo_addestrato.c create mode 100644 tempCodeRunnerFile.c diff --git a/grafico.h b/grafico.h index a480725..0c45add 100644 --- a/grafico.h +++ b/grafico.h @@ -2,6 +2,11 @@ #include #include +typedef struct { + double x; + double y; +} Punto; + // Segmento che parte dalle coordinate x,y di "inizio" a quelle di "fine" typedef struct { @@ -13,8 +18,9 @@ void disegna_assi(); void cls(int, int); void disegna_punti(int); void traccia_retta(double, double, int); -int *coordinate(int, int); +int *coordinate(double, double); void stampa_epoca(int); +void traccia_inputs(Punto, int); /* void main() { allegro_init(); @@ -67,6 +73,12 @@ void traccia_retta(double m, double q, int colore) sleep(0.1); } +void traccia_inputs(Punto punto, int colore) { + int *point = coordinate(punto.x, punto.y); + //printf("Ho generato coordinate: %dx%d", point[0], point[1]); + circlefill(screen, point[0], point[1], 1.5, colore); +} + void disegna_assi() { // determino il centro @@ -215,7 +227,7 @@ void disegna_punti(int tipo) } // Mi da le coordinate in pixel dati i punti in ingresso -int *coordinate(int x, int y) +int *coordinate(double x, double y) { // determino il centro int center_x = SCREEN_W / 2; // Coordinata x del centro diff --git a/layer_multi b/layer_multi index a95a7d5cf093e8834e77b8d1c092c6865a25151d..bd2fa6c961a699f53150f63c324bf00cc97e67cd 100755 GIT binary patch delta 6460 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 literal 0 HcmV?d00001 diff --git a/layer_multi_addestrato.c b/layer_multi_addestrato.c new file mode 100644 index 0000000..d26f079 --- /dev/null +++ b/layer_multi_addestrato.c @@ -0,0 +1,101 @@ +#include +#include "percettrone.h" +#include "grafico.h" + +int MAX_TRY = 10000; + +/* + il tipo indica quali punti vogliamo disegnare nel grafico: + 0: AND + 1: OR + 2: XOR + 3: NAND + 4: NOR + 5: XNOR +*/ +int tipo = 0; + +// Soglia sigmoide +double soglia_funzione_attivazione = 0.5; + +void sleep_ms(int); + +void main() +{ + srand(time(NULL)); + + allegro_init(); + install_keyboard(); + set_gfx_mode(GFX_AUTODETECT_WINDOWED, 800, 600, 0, 0); + cls(tipo, 1); + + int colore_rosso = makecol(255, 0, 0); + int colore_verde = makecol(0, 255, 0); + + Percettrone p_ext_1; + Percettrone p_ext_2; + Percettrone pout; + + //AND + /* p_ext_1.w1 = 1.332870; + p_ext_1.w2 = -0.628797; + p_ext_1.bias = 0.729138; + + p_ext_2.w1 = 0.459249; + p_ext_2.w2 = 0.394682; + p_ext_2.bias = 0.833102; + + pout.w1 = -0.004388; + pout.w2 = 0.090205; + pout.bias = -0.067931; */ + + //XOR + p_ext_1.w1 = 1.423181; + p_ext_1.w2 = -1.798159; + p_ext_1.bias = -1.757881; + + p_ext_2.w1 = -0.828619; + p_ext_2.w2 = 0.410466; + p_ext_2.bias = -0.087439; + + pout.w1 = 0.145840; + pout.w2 = 0.194722; + pout.bias = -0.114644; + + for (int i = 0; i < MAX_TRY; i++) + { + //printf("\nCiclo %d\n", i); + + Punto input; + input.x = randomico(); + input.y = randomico(); + + + double y_ext_1 = funzione_sigmoide(p_ext_1, input.x, input.y); + double y_ext_2 = funzione_sigmoide(p_ext_2, input.x, input.y); + double yout = funzione_sigmoide(pout, y_ext_1, y_ext_2); + + int previsione = -1; + + if (yout >= soglia_funzione_attivazione) { + previsione = 1; + } + else { + previsione = 0; + } + + /* Punto output; + output.x = y_ext_1; + output.y = y_ext_2; */ + + printf("Inputs: %f:%f -> previsione: %d\n", input.x, input.y, previsione); + + if (previsione == 1) + traccia_inputs(input, colore_verde); + else + traccia_inputs(input, colore_rosso); + } + + sleep_ms(10); + readkey(); +} \ No newline at end of file diff --git a/layer_singolo b/layer_singolo index 53793353a880205008e3ddbdf07f588e14cdacaa..2da4287fd0ac87186572dcf71e825f6671e35af2 100755 GIT binary patch delta 5952 zcmai24OCQR8oqbnDzL~5$p7HaC_f{}pP+z=f-pJ#V48B&*4F$vn&pZb8kT_WNH*R; z>dVbKmfE(fwQWDLcGNIIQ>4;^+h)|k6!f)YFW1kjUvAZx)#0|f&M~*&>Ew@AyQQ;BZz!Of63dn5pP_Li zyEyz%#_pe-POEA$a4l=4GTtajR(r!?8DTjdfKat`+fPFfr3olp$0XJmY)bOiSYE^$ z%CVgsJJKC{{WkXy&K8G+1fHjdN+n1D9N*k#Q$rHUFGadJeOBN*T@f|83m+H4(MZ73 zsuuPy*PGASFSwv*HK>jP$`Me9OW5jeXRHv0b734JYIBzkfwa2uWTDmmEks`mk;B0B zp{AG*H6TyAz7N2MUBFrm_-P+AgpOu4p}~<=8mkgOnuQz+JQD>^VV6Tq{;WWYMLrXb8N--7A|h=O*)M3xwVydcjYv-VZ@HT`Ac%(mausG~CKV>I8|)-E_83+b zK0aANRCY^0WbGM3B?#k77^|CGV7}7oY*&srae;jxgIx`e8vixi;ptCq3NLYmW>1Aj zGFWOvOBAe_%2_>Dbz&ANt4ciS74%ze9X^jabM1|}_FnsWYh}oNVIs5b zJ#1S<^o(E_uv@x$xju5jizw;OJ;d%kN}P}I)7V!yyWdvYA+67buXiSKUwbC8T50LFRu1b6q3F)hYX$}-$AxZQ>m3up zMx)c@*f3T%i&~$<#XGmbFsCp9EjjTY)%W=-&pF~eH1;yBmMY{oGm zk>vLT;Fr@S$$o*FsG*x3HCl9a-As-ODSs0N5SXYqMItKx0%ubzl|a!I(JG9!h-U3> zSB~x$5oHquO-Is#PFKMiMZx$q+k=6CZ}kTeuC261(QiBLBV|acrNvqqTtTk!Ca?jh zdh4vaP~s;^Np5mtY20Xp{abhzE9374M@@P-+@h;)PIh?253o^KHkH0V?GWJXCacXJDU{D*N z0{fT1ch&Lp3G8`Oi0>Q3Qk9((SZ;Jg+^rxyA&IV=qDEKKhLUlf`ZMH*?`bCZNXg

C{p`p$w!RLY{c)?SX!ovuPQ&mDWN5aEJ zZwf2s$7GMNUW5|BKZEZ|{wAw7h5DW#j;hoo^W38hB6kD9=`}Umdm#5WAQMieaVN?1 zxD&TDdajGeCJ|C}{BH-8df04JWL$u!&flN||JU`xk8p5^u*qkWJbGl6X8&z~q4Q_1 z$o-JSYiJ;@Lh>-PU5pZn^>wcJ&9-jZh**q&-Ys9tvIu24WCAi_ynHQ z@mar;=n+{3v}o2(!HSmoH5ziI3a(^+l`FZ0HicZNN-5WI&3eA@u+S6yQ-|6#tcT_uuasadvbls5v%YaaDVQsn$8#mO+&^vSk@<5SSMHxnltyBEf=Bai2bik+ zi9ZkeBnUa;VX@0&qhep@8g8AKE6l$IzAN$968Nka5ldAbNuXKJy6_v3`LSyv^LDw~ zb zFQ#n8AvpNOHd_s*c1YgRu@`YHv#MebrdU$z#BO>GD7@KiAdacH9r5z^rbEOSd?Z=z zrv)g4q)iTXBW6U-YzGcf%C>RZaR<72*pO9aJvg>rY@J`hmA%ewba-;Cg<*TeChXe{6_4T$o^%{949T(LJ6^xd;%R|+dX{=1+gF^Xs~aj- zX)0F>@shF~BMaX8icaXOT*kkADls3}$b7`Xrs)c+iW^t{x@h##4HauN8||g4@?qRy zhEHOjRJjzpe|@XB)sAzEWiw6y2qMSl*F{!UQg>21_Adwe(?P3Tz-@IhYPamBv)p-n z8D;qqJ_&8yi7XIz@woNRt%VJT30Yr#4Bs7Y*&M3yAuA!n>%jK$`E72nz zU4l=+7aeDcWBIHs*Bg1W)u~+L4#><{cGf(-{4GojUIe4D!piEs9pY zLd&in^ku`M_|ae<+Bwj&x1pj0e(6G?EW4KLlP%Tj`~{c39NPWFm|}8Sb&K)E7_cXM z>s(HL1+tnT9MOg)(@HUZ2VVty)k7stOs|=>jWdjT1^q@TxC~I_Svl>^OYvr%O=0!%Y32EtHcB1!F%+EX(*Ler z%%5i;QRU)cnf@j~<>0|!;U9tjN2iDH$XqAKN9+3H7~#WKrz^kHk2qzY{I^(6Ha_FB z?HKijm%gfvHz2JeSyjr$N>Y~AfG^{}gI~N}vSFq1~xlZegL`)bn-V&=V4G^gx(B#3bYs0uMPUx;6DY;1T|cNK4^J91|=Ar!Yu9r^+FpR z2CW5c1`WbS(F?j0=k#zavlVy~W`f=Zoew%6g)3nZX>qcZ<)($n@393K%WO;9D0v~< zmp00@9Vtvj3Q}%>;Tc`tupt}$hti%Ag&(DRfYqlN75WMeWtTDP$LJ|0ryG?h1U`Rk8wBL3*=6=FWqQq!6*iAk*S~q zNUtoJpoHuPKMxf-a)+hA4_JyqC0dv~(O5o(YJ-~D@OmD!ROailv=H+3IOYE14ohbT zENy~34h_QYkXH@JcSHUPJ4o9e}dPyl3Pbwl6P3mmbBw z&P$q*O^t`kB8apU#R!rDr0rB0Ts&3KwZzv2NKJ`sa{h*hVR*~Z#WMwM($xOI8uR1i zA?*C!Va&%8g)fN!X$d}y=;HkVI+~d*VG)T)g`~lnbSB40QU<%3AC@{@lU~yN@QML( zpT^I_pBQvm;Fqoiq=lSGcPB6gDMHGbEo83yK20|XpPh7x^({&7a^0hJzvl}L^K7`l z@b1E}P2+FDe+YEd3L^ce@o#DPyR~?9Q~^1h?y2!uF%-`lk9d;7rwU|83S+!KF`UMA zXYzXl-6NK83*l0Yl@y&S-f&X5evTe zgMi|7ija)oa!lKT*?oZ-K5RyxYF3h8TcR+9mOMD?ZcJR?tmMF7 z{722QW+w+`rU|HvHq~sLT`tSZSl@#gax_bwGY$8(b7siR?8ux9-%P83f5rOdWcUT% NFP=hWHo0Kre*sE=yyXA@ delta 5281 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 literal 0 HcmV?d00001 diff --git a/layer_singolo_addestrato.c b/layer_singolo_addestrato.c new file mode 100644 index 0000000..8309d04 --- /dev/null +++ b/layer_singolo_addestrato.c @@ -0,0 +1,68 @@ +#include +#include "percettrone.h" +#include "grafico.h" + +int MAX_CICLI = 10000; +/* + il tipo indica quali punti vogliamo disegnare nel grafico: + 0: AND + 1: OR + 2: XOR + 3: NAND + 4: NOR + 5: XNOR +*/ +int tipo = 1; + +// Soglia sigmoide +double soglia_funzione_attivazione = 0.5; + +void sleep_ms(int); + +void main() +{ + srand(time(NULL)); + + allegro_init(); + install_keyboard(); + set_gfx_mode(GFX_AUTODETECT_WINDOWED, 800, 600, 0, 0); + cls(tipo, 0); + + Percettrone p; + p.w1 = 0.042967; + p.w2 = 0.029020; + p.bias = -0.019373; + + int colore_rosso = makecol(255, 0, 0); + int colore_verde = makecol(0, 255, 0); + + for (int i = 0; i < MAX_CICLI; i++) + { + //printf("\nCiclo: %d\n", i); + + Punto input; + input.x = randomico_positivo(); + input.y = randomico_positivo(); + + double y = funzione_sigmoide(p,input.x, input.y); + + int previsione = -1; + + if (y >= soglia_funzione_attivazione) { + previsione = 1; + } + else { + previsione = 0; + } + + printf("Inputs: %f:%f -> previsione: %d\n", input.x, input.y, previsione); + + if(previsione == 1) + traccia_inputs(input, colore_verde); + else + traccia_inputs(input, colore_rosso); + } + + sleep_ms(100); + readkey(); +} \ No newline at end of file diff --git a/percettrone.h b/percettrone.h index 0adac87..9a0e24c 100644 --- a/percettrone.h +++ b/percettrone.h @@ -21,6 +21,7 @@ int x[4][2] = { // Dichiarazione dei metodi Percettrone crea_percettrone(); double randomico(); +double randomico_positivo(); double funzione_sigmoide(Percettrone, double, double); void correggi_pesi(Percettrone*, double, double, double); @@ -46,6 +47,11 @@ double randomico() { return ((double)(rand() % 101 * 0.01 * 2 ) -1); } +double randomico_positivo() { + // Genero numeri nell'intervallo [0,1] + return ((double)(rand() % 101 * 0.01)); +} + double funzione_sigmoide(Percettrone p, double x1, double x2) { double funzione = (x1 * p.w1) + (x2 * p.w2) + p.bias; double potenza_e = exp(-funzione); @@ -85,10 +91,16 @@ void stampa_risultati_layer_singolo(Percettrone p) { } void stampa_risultati_layer_multi(Percettrone p1, Percettrone p2, Percettrone pout) { - printf("\nPercettrone 1:\n"); - printf("\t W1: %f, W2: %f, bias: %f\n", p1.w1, p1.w2, p1.bias); - printf("Percettrone 2:\n"); - printf("\t W1: %f, W2: %f, bias: %f\n", p2.w1, p2.w2, p2.bias); - printf("Percettrone OUT:\n"); - printf("\t W1: %f, W2: %f, bias: %f\n", pout.w1, pout.w2, pout.bias); + printf("\nPercettroni 1, 2 e out:\n"); + printf("\np_ext_1.w1 = %f;", p1.w1); + printf("\np_ext_1.w2 = %f;", p1.w2); + printf("\np_ext_1.bias = %f;\n", p1.bias); + + printf("\np_ext_2.w1 = %f;", p2.w1); + printf("\np_ext_2.w2 = %f;", p2.w2); + printf("\np_ext_2.bias = %f;\n", p2.bias); + + printf("\npout.w1 = %f;", pout.w1); + printf("\npout.w2 = %f;", pout.w2); + printf("\npout.bias = %f;\n", pout.bias); } \ No newline at end of file diff --git a/tempCodeRunnerFile.c b/tempCodeRunnerFile.c new file mode 100644 index 0000000..b930919 --- /dev/null +++ b/tempCodeRunnerFile.c @@ -0,0 +1 @@ +_positivo \ No newline at end of file