THMMY.gr

Μαθήματα Βασικού Κύκλου => Δομημένος Προγραμματισμός => Topic started by: istar on April 28, 2011, 21:40:41 pm



Title: [Δομημένος Πρ.] ΕΡΓΑΣΙΑ C
Post by: istar on April 28, 2011, 21:40:41 pm
Εργαστήριο C

Ένα νευρωνικό δίκτυο αποτελείται από νευρώνες οι οποίοι συνδέονται μεταξύ τους με συνάψεις. Για κάθε νευρώνα ορίζεται αρχικά μια κατάσταση η οποία μπορεί να έχει τιμή 1 ή -1 ενώ για κάθε σύναψη ορίζεται ένα βάρος. Κατά τη λειτουργία του δικτύου, για κάθε νευρώνα, αθροίζονται τα βάρη των συνάψεων που τον συνδέουν με τους άλλους νευρώνες πολλαπλασιασμένα με την κατάσταση του νευρώνα που βρίσκεται στο άλλο άκρο της σύναψης. Αν το άθροισμα που προκύπτει είναι μεγαλύτερο ή ίσο με το 0, ως νέα κατάσταση για τον νευρώνα, ορίζεται το 1, διαφορετικά η κατάσταση του ορίζεται ως -1. Οι νευρώνες επαναπροσδιορίζουν την κατάστασή τους, μέσα από μια επαναληπτική διαδικασία, έως ότου αυτή να παραμένει αναλλοίωτη για όλους τους νευρώνες του δικτύου. Σε αυτήν την περίπτωση το δίκτυο βρίσκεται σε ένα stable state.

Να γραφεί το πρόγραμμα το οποίο να υλοποιεί το πιο πάνω νευρωνικό δίκτυο και το οποίο να αποτελείται από το πολύ 10 νευρώνες. Στο πρόγραμμα να ορίζεται ένας πίνακας δύο διαστάσεων, τύπου 10x10, σε κάθε γραμμή και σε κάθε στήλη του οποίου να αντιστοιχεί και ένας νευρώνας. Ως τιμή για το στοιχείο του πίνακα που βρίσκεται στην i γραμμή και την j στήλη του πίνακα να καταχωρείται το βάρος της σύναψης που συνδέει τον νευρώνα i με τον νευρώνα j. Αν δεν υπάρχει σύναψη μεταξύ των νευρώνων i και j, ως βάρος να καταχωρείται το 0. Το πρόγραμμα, αφού διαβάσει τα βάρη των συνάψεων και την αρχική κατάσταση των νευρώνων, να υλοποιεί την λειτουργία του δικτύου έως ότου αυτό να βρεθεί σε ένα stable state για το οποίο να εκτυπώνει την κατάσταση των νευρώνων.

 Επειδή υπάρχει πιθανότητα το δίκτυο να μην συγκλίνει σε stable state, ο επαναπροσδιορισμός της κατάστασης των νευρώνων να γίνεται για έναν συγκεκριμένο αριθμό επαναλήψεων. Στην περίπτωση που δεν συνέκλινε το δίκτυο να τυπώνεται σχετικό μήνυμα και η κατάσταση των νευρώνων μετά τον τελευταίο επαναπροσδιορισμό τους.


Title: Re: [Δομημένος Πρ.] ΕΡΓΑΣΙΑ C
Post by: mafalda on April 29, 2011, 10:48:31 am
Εγώ πάντως ακόμα δεν μπορώ να βρώ την εκφώνηση στο ethmmy...Μόνο η λύση εμφανίζεται 8))


Title: Re: [Δομημένος Πρ.] ΕΡΓΑΣΙΑ C
Post by: teslaaaa on April 29, 2011, 11:14:18 am
Εγώ πάντως ακόμα δεν μπορώ να βρώ την εκφώνηση στο ethmmy...Μόνο η λύση εμφανίζεται 8))
https://alexander.ee.auth.gr:8443/eTHMMY/cms.labParams.data.do?method=jsplist&PRMID=102
δες εδω στο κατω μερος της σελ ;)


Title: Re: [Δομημένος Πρ.] ΕΡΓΑΣΙΑ C
Post by: shadows_fall on April 29, 2011, 11:29:01 am
 
Εγώ πάντως ακόμα δεν μπορώ να βρώ την εκφώνηση στο ethmmy...Μόνο η λύση εμφανίζεται 8))
Καλη φαση,μακαρι και στις επομενες να κανει το ιδιο :D


Title: Re: [Δομημένος Πρ.] ΕΡΓΑΣΙΑ C
Post by: zidan on April 29, 2011, 17:50:33 pm
δηλαδη κανουμε αντιγραφη κ αυτο ειναι???


Title: Re: [Δομημένος Πρ.] ΕΡΓΑΣΙΑ C
Post by: ultraviolet on April 29, 2011, 19:32:38 pm
δηλαδη κανουμε αντιγραφη κ αυτο ειναι???
Και οταν την παραδωσουμε και την εχουμε ολοι ολοιδια?? :( :o


Title: Re: [Δομημένος Πρ.] ΕΡΓΑΣΙΑ C
Post by: ΚΗΜΜΥ on April 29, 2011, 19:47:01 pm
Bαλτε κανα σχολιο :D


Title: Re: [Δομημένος Πρ.] ΕΡΓΑΣΙΑ C
Post by: erato on May 02, 2011, 17:17:31 pm
δηλαδή ρε παιδιά είναι όντως η λύση που χρειαζόμαστε??? δεν κάνουν πουλάκια τα μάτια μου???


Title: Re: [Δομημένος Πρ.] ΕΡΓΑΣΙΑ C
Post by: istar on May 02, 2011, 20:17:59 pm
Η εργασία δίνει σωστά αποτελέσματα. Απλά δεν κατάλαβα γιατί έχει τόσες πολλες εισαγωγές στον πίνακα, δηλαδή ζητάει την απόσταση 1-2 και την 2-1, οι οποίες είναι ίδιες σωστά;


Title: Re: [Δομημένος Πρ.] ΕΡΓΑΣΙΑ C
Post by: ICE-CUBE on May 04, 2011, 01:52:41 am
που ειναι η λυση βρε παιδια ?? εγω δεν την βρισκω καπου..


Title: Re: [Δομημένος Πρ.] ΕΡΓΑΣΙΑ C
Post by: Nerevar on May 04, 2011, 12:13:21 pm
Την κατεβασε.


Title: Re: [Δομημένος Πρ.] ΕΡΓΑΣΙΑ C
Post by: zidan on May 04, 2011, 13:41:08 pm
diladi den prolabame??


Title: Re: [Δομημένος Πρ.] ΕΡΓΑΣΙΑ C
Post by: erato on May 05, 2011, 13:22:05 pm
εμένα πάντως η λύση που έδινε μου φαίνεται ότι έχει λαθάκι! γιατί στην εκφώνηση λέει  "Αν το άθροισμα που προκύπτει είναι μεγαλύτερο ή ίσο με το μηδέν, ως νέα κατάσταση για το νευρώνα, ορίζεται το 1, διαφορετικά η κατάστασή του ορίζεται ως -1."
άμα τρέξεις το αρχείο που σου δίνει βγάζει σαν νέες καταστάσεις και το 1 και το -1 και το 0!! κ αυτό γιατί στο τέλος αφού κάνει τα αθροίσματα και τους πολλαπλασιασμούς από τους γειτονικούς νευρώνες το αποτέλεσμα το πολλαπλασιάζει και με την κατάσταση του συγκεκριμένου νευρώνα που νομίζω ότι είναι λάθος γιατί τότε όλοι οι νευρώνες που έχουν κατάσταση 0 θα παραμένουν με 0.
γι αυτό το λόγο εγώ θα το αλλάξω, πείτε κ σεις τις γνώμες σας!!!


Title: Re: [Δομημένος Πρ.] ΕΡΓΑΣΙΑ C
Post by: elen// on May 05, 2011, 15:04:58 pm
ερατω το ιδιο νομιζω και εγω...
τα παρακατω κομματια της εκφωνησης πως υλοποιουνται?δεν εχω πολυκαταλαβει τι θελει να κανουμε...
Οι νευρώνες επαναπροσδιορίζουν την κατάστασή τους, μέσα από μια επαναληπτική διαδικασία, έως ότου αυτή να παραμένει αναλλοίωτη για όλους τους νευρώνες του δικτύου. Σε αυτήν την περίπτωση το δίκτυο βρίσκεται σε ένα stable state.  και

 Επειδή υπάρχει πιθανότητα το δίκτυο να μην συγκλίνει σε stable state, ο επαναπροσδιορισμός της κατάστασης των νευ-ρώνων να γίνεται για έναν συγκεκριμένο αριθμό επαναλήψεων. Στην περίπτωση που δεν συνέκλινε το δίκτυο να τυπώνεται σχε-τικό μήνυμα και η κατάσταση των νευρώνων μετά τον τελευταίο επαναπροσδιορισμό τους.


Title: Re: [Δομημένος Πρ.] ΕΡΓΑΣΙΑ C
Post by: erato on May 05, 2011, 16:02:08 pm
elen η αλήθεια είναι ότι δεν ξέρω ακριβώς τι να κάνω για το επόμενο κομμάτι... δεν είμαι και μεγάλη φαν του προγραμματισμού!!
οπότε λέω να το κρατήσω ως έχει...
η μετατροπή που έκανα εγώ είναι στο εξής κομμάτι:

for(k=0;k<m;k++){
    fl=1;
      for(i=0;i<n;i++){
      sum=0;
      for(j=0;j<n;j++)
   sum+=sinap[j]*state[j];
      if(sum<1){
        fl=0;
        state=-1;}
     else {state=1;}

      }
   
    if(fl)break;

από κει κ κάτω είναι το ίδιο με αυτό που έδωσε.
μάλλον έτσι θα το αφήσω..


Title: Re: [Δομημένος Πρ.] ΕΡΓΑΣΙΑ C
Post by: mafalda on May 06, 2011, 08:51:26 am
Η εργασία του Κορτέση (σε rar, μιας που δεν γινεται να το ανεβασω με επεκταση cpp)


Title: Re: [Δομημένος Πρ.] ΕΡΓΑΣΙΑ C
Post by: Nerevar on May 06, 2011, 20:23:17 pm
ερατω το ιδιο νομιζω και εγω...
τα παρακατω κομματια της εκφωνησης πως υλοποιουνται?δεν εχω πολυκαταλαβει τι θελει να κανουμε...
Οι νευρώνες επαναπροσδιορίζουν την κατάστασή τους, μέσα από μια επαναληπτική διαδικασία, έως ότου αυτή να παραμένει αναλλοίωτη για όλους τους νευρώνες του δικτύου. Σε αυτήν την περίπτωση το δίκτυο βρίσκεται σε ένα stable state.  και

 Επειδή υπάρχει πιθανότητα το δίκτυο να μην συγκλίνει σε stable state, ο επαναπροσδιορισμός της κατάστασης των νευ-ρώνων να γίνεται για έναν συγκεκριμένο αριθμό επαναλήψεων. Στην περίπτωση που δεν συνέκλινε το δίκτυο να τυπώνεται σχε-τικό μήνυμα και η κατάσταση των νευρώνων μετά τον τελευταίο επαναπροσδιορισμό τους.

Xρειαζεσαι 1 πινακα s[] για τις αρχικες καταστασεις των νευρωνων,1 πινακα w[][] για τα βαρη των νευρωνων μεταξυ τους.Το γινομενο αυτων των 2 πινακων δινει τον πινακα a[] των αθροισματων.Αναλογα με την τιμη του καθε στοιχειου του τριτου πινακα (>=0,<0),ο πινακας s[] αποκτα νεες τιμες (1,-1)

H παραπανω συναρτηση (το κειμενο με μπλε χρωμα) μπορει να οριστει ως μια διαδικασια που επαναλαμβανεται e φορες (οριζεται απο τον χρηστη) σε 1 loop,μεχρι ο πινακας s[] να παψει να μεταβαλλεται (τα στοιχεια του παραμενουν ιδια,stable state).


Title: Re: [Δομημένος Πρ.] ΕΡΓΑΣΙΑ C
Post by: erato on May 07, 2011, 23:10:01 pm
τελικά μετά από πολλή σκέψη και προβληματισμό και επηρεαζόμενη από το γεγονός ότι όποιος έγραψε αυτό το προγραμματάκι σίγουρα ξέρει πολύ περισσότερα από μένα  :D  κατέληξα ότι αυτό που μας δώσανε είναι σωστό!!!  :) :)


Title: Re: [Δομημένος Πρ.] ΕΡΓΑΣΙΑ C
Post by: Άντι ιστ κρίιγκ on May 08, 2011, 21:56:19 pm
Είναι όντως σωστό, και το κομμάτι
Code:
     if(sum*state[i]<0){
fl=0;
state[i]=-state[i];
      }

είναι και πολύ μαγκιά!


Title: Re: [Δομημένος Πρ.] ΕΡΓΑΣΙΑ C
Post by: Kargas on May 08, 2011, 22:00:07 pm
ahhh wraia ekfonisi exei ergasia, i like!   ^yue^


Title: Re: [Δομημένος Πρ.] ΕΡΓΑΣΙΑ C
Post by: Silvershot on May 08, 2011, 22:23:15 pm
Aν το sum=0 και state=-1 τοτε το γινομενο δινει 0 που ειναι >=0 οποτε συμφωνα με την εκφωνηση το state πρεπει να γινει 1. Ομως ετσι πως ειναι γραμμενο δε θα μπει στην επαλανηψη και δε θα το αλλαξει σε 1 :/. Μηπως μου διαφευγει κατι?


Title: Re: [Δομημένος Πρ.] ΕΡΓΑΣΙΑ C
Post by: Άντι ιστ κρίιγκ on May 08, 2011, 23:02:51 pm
Aν το sum=0 και state=-1 τοτε το γινομενο δινει 0 που ειναι >=0 οποτε συμφωνα με την εκφωνηση το state πρεπει να γινει 1. Ομως ετσι πως ειναι γραμμενο δε θα μπει στην επαλανηψη και δε θα το αλλαξει σε 1 :/. Μηπως μου διαφευγει κατι?


Πάρε όλες τις περιπτώσεις με τη σειρά. Το 0, θεωρείται θετικό.

Αν το sum=θετικό και state=θετικό, δε χρειάζεται αλλαγή κατάστασης. [το if είναι ψευδές, το fl παραμένει 1, δηλαδή έχουμε stable state].

Αν το sum=αρνητικό και state=αρνητικό, επίσης δε χρειάζεται αλλαγή κατάστασης. Επειδή πρόκειται για αρνητικό sum, η κατάσταση πρέπει να είναι και αυτή αρνητική. Αλλά είναι ήδη! Άρα δεν έγινε αλλαγή κατάστασης. [πάλι, το if είναι ψευδές, το fl παραμένει 1, δηλαδή έχουμε stable state].

Αν το sum=θετικό και το state αρνητικό, πρέπει η κατάσταση να γίνει από -1, +1. Άρα έγινε αλλαγή, πράγμα που σημαίνει ότι το fl γίνεται 0 για να μας δείξει ότι δεν έχουμε stable state.

Το ίδιο και για την τελευταία περίπτωση, με sum=αρνητικό και το state θετικό, πρέπει το state να γίνει -1 άρα έχει αλλάξει ΑΡΑ δεν έχουμε stable state.

Ουσιαστικά είναι ένας έξυπνος τρόπος να κάνει την αλλαγή άμεσα και να την καταχωρήσει και ως συμπέρασμα ως προς το stable state [τον οποίο εγώ πιθανότατα δε θα σκεφτόμουν, θα έβαζα 4 περιπτώσεις :Ρ]. Αν δε βοήθησε ούτε αυτό, προσπάθησε να το δεις σαν πύλη αποκλειστικού OR.
 8))



Title: Re: [Δομημένος Πρ.] ΕΡΓΑΣΙΑ C
Post by: Silvershot on May 08, 2011, 23:10:25 pm
Αυτα που εγραψες τα ειχα σκεφτει κ γω ακριβως ετσι αλλα για sum=0 δε μου καθεται. Μα αν ειναι 0 το γινομενο βγαζει 0 δηλαδη δε θα μπει στο ιf για να αλλαξει το state απο -1 σε 1.. Τεσπα οκ αν το ψαξατε παραπανω ετσι θα ειναι δε μπορω να σκεφτω κατι αλλο εγω.


Title: Re: [Δομημένος Πρ.] ΕΡΓΑΣΙΑ C
Post by: Άντι ιστ κρίιγκ on May 11, 2011, 20:58:21 pm
Ναι. Μου φαίνεται ότι έχεις δίκιο! Είναι μία περίπτωση που δεν ισχύει ο κώδικας. Διορθώνεται εύκολα με ένα δεύτερο if μεσα στο αρχικό, αν δεν κάνω λάθος. Σόρυ δεν κατάλαβα με την πρώτη φορά που το είπες. :}