Line Search με Περιορισμούς
Υπάρχουν δυο ειδών περιορισμοί:
Περιορισμός της μορφής C(x) = 0.
Περιορισμός της μορφής C(x) > 0 ή C(x) < 0
Για την εύρεση ακρότατου με κάποιον από τους δυο περιορισμούς επιλύουμε τον μετασχηματισμό
g(x) της συνάρτησης f(x)
(δες Line Search) ανάλογα την περίπτωση:
-
PENALTY: C1(x) = 0
g(x) = f(x) + rC1(x)^2
-
BARRIER: C2(x) >= 0
g(x) = f(x) – rlog[C2(x)]
ή συνδυασμό τους:
g(x) = f(x)-rlog[C2(x)]+rC1(x)^2
PENALTY
Ο σκοπός του μετασχηματισμού αυτού είναι να προσθέσουμε έναν όρο της μορφής rC2(x) ο οποίος για μεγάλες τιμές του r (ο r είναι πραγματικός αριθμός) δημιουργεί απόκλιση της συνάρτησης από το ελάχιστο όταν δεν ικανοποιείται η σχέση C(x)=0.
Καθώς C -> 0 η επίδραση του όρου αυτού γίνεται αμελητέα, άρα ο περιορισμός γίνεται αποδεκτός
BARRIER
Ο σκοπός του μετασχηματισμού αυτού είναι να προσθέσουμε έναν όρο της μορφής -rlog[C(x)] ο οποίος όταν C(x) -> 0 ο όρος αυτός τείνει στο άπειρο (άρα να δημιουργεί ένα τοίχος για να μην προχωρήσει η έρευνα προς αυτή την διεύθυνση).
ΠΡΟΒΛΗΜΑ
Αν f(x1, x2) = (x1*x2 - 3)^2 + (x2 - 5)^2,
θεωρούμε τους περιορισμούς:
a. C1(x) = x1^2 + x2^2 + x1 + x2 = 0
b. C2(x) = x2^2 - x1 >= 0
Ζητούμενο: Να βρεθεί το ελάχιστο της συνάρτησης f(x1, x2) με τη μέθοδο Αναζήτησης Γραμμής για,
Α. Τον περιορισμό a.
B. Τον περιορισμό b.
C. Τον περιορισμό a & b ταυτόχρονα.
Το πρόβλημα να επιλυθεί με τη χρήση VBA για Excel.
Για την επίλυση ακολουθούμε τα βήματα του προβλήματος χωρίς περιορισμούς,
στα οποία διαφοροποιούμε τον ορισμό της g(x) ανάλογα.
Η λύση για το παραπάνω Παράδειγμα σε κώδικα VBA μπορείτε να το κατεβάστε από ΕΔΩ