Ασκηση 1η:

Θέλετε να ελαχιστοποιήσετε τη συνάρτηση τριών μεταβλητών f(x,y,z). Η μεταβλητή x παίρνει τιμές  στο διάστημα     [-20.0, 125.0], η μεταβλητή y στο διάστημα [0, 1.2 x 106] και η μεταβλητή z στο διάστημα [-1.0, 1.0]. Η επιθυμητή ακρίβεια (δηλαδή το βήμα μεταβολής της μεταβλητής) είναι 0.5, 104 και 0.001 αντίστοιχα. Να κατασκευάσετε μια ενιαία δυαδική κωδικοποίηση για το πρόβλημα αυτό. Ποιος είναι ο ελάχιστος αριθμός δυαδικών ψηφίων που απαιτούνται για να επιτευχθεί η επιθυμητή ακρίβεια; Με την κωδικοποίηση που πραγματοποιήσατε, να καθορίσετε τις συμβολοσειρές, οι οποίες αναπαριστούν κάθε ένα από τα ακόλουθα σημεία: (-20, 0, -1), (125, 1.2Ε6, 1) και (50, 100000, 0.597). Προκύπτει πρόβλημα περιορισμών στην παραπάνω κωδικοποίηση;


Λυση:

Για τη δυαδική κωδικοποίηση της μεταβλητής x έχουμε:

Αφού παίρνει τιμές στο διάστημα [-20.0, 125.0] το μήκος του διαστήματος είναι 125-(-20)=145. Αφού το βήμα μεταβολής θέλουμε να είναι 0.5, προκύπτουν 290 διαστήματα. Άρα, εάν απαιτούνται m ψηφία για την κωδικοποποίησή του πρέπει να ισχύει: 2m-1<290≤2m.

Επομένως:  δυαδικά ψηφία.

Ομοίως για τις μεταβλητές y και z έχουμε:

Για την y:  δυαδικά ψηφία.

Για την z:  δυαδικά ψηφία.          

 

Επομένως για την κωδικοποίηση των x, y, z απαιτείται χρωμόσωμα μήκους 34 δυαδικών ψηφίων, όπου τα πρώτα 9 αντιστοιχούν στην μεταβλητή x, τα επόμενα 14 στην μεταβλητή y και τα τελευταία 11 στην μεταβλητή z.

 

Η κωδικοποίηση και η αποκωδικοποίηση των x, y, z γίνεται με τη χρήση των παρακάτω συναρτήσεων:

 

, , .

όπου  είναι οι κωδικοποιημένες τιμές των x, y, z στο δεκαδικό σύστημα.

 

Για το σημείο (-20, 0, 1) έχουμε:

x΄=(-20+20)(29-1)/145=0

y΄=0·(214-1)/1.2·106=0

z΄=(-1+1)(211-1)/2=0

 

Άρα η συμβολοσειρά που προκύπτει αποτελείται από 34 μηδενικά:

.

 

Για το σημείο (125, 1.2×106, 1) έχουμε:

x΄=(25+20)(29-1)/145=29-1

y΄=(1.2·106)(214-1)/1.2·106=214-1

z΄=(1+1)(211-1)/2=211-1

 

Άρα η συμβολοσειρά που προκύπτει αποτελείται από 34 άσους:

.

 

Για το σημείο (50, 105, 0.597) έχουμε:

x΄=(50+20)(29-1)/145=246.68247

y΄=105(214-1)/1.2·106=1365.251365

z΄=(0.597+1)(211-1)/2=1634.531635

 

Άρα η συμβολοσειρά που προκύπτει είναι η εξής:

.

 

Στην παραπάνω κωδικοποίηση δεν προκύπτει πρόβλημα περιορισμών, αφού οι μεταβλητές x, y, z είναι ανεξάρτητες μεταξύ τους και δεν υπάρχουν μη έγκυρες τιμές.