Προς το περιεχόμενο

Βελτιστοποίηση ενισχυτή πολλών βαθμίδων με matlab


MariaAmaliaM58

Προτεινόμενες αναρτήσεις

Δημοσ. (επεξεργασμένο)
Έχω γράψει τον ακόλουθο κώδικα για τη βελτιστοποίηση ενός ενισχυτή 5 σταδίων, χρησιμοποιώντας το fmincon solver, το οποίο περιέχεται στο εργαλείο βελτιστοποίησης MATLAB, δοκιμάζω επίσης τους διάφορους αλγορίθμους λύσεων που προσφέρονται (Εσωτερικό σημείο, SQP, Active set, Trust region reflective ) Υπάρχει πρόβλημα με τον κώδικά μου, υποθέτω ότι είναι στο δεύτερο μέρος. Εάν κάποιος έχει κάποια ιδέα θα ήμουν ευγνώμων.

 
%myfun.m
function D = myfun(A)
%First Part
N0 = 0;
N1 = A(1)*sqrt(N0^2 + 10^-10);
N2 = A(2)*sqrt(N1^2 + 10^-6);
N3 = A(3)*sqrt(N2^2 + 10^-4);
N4 = A(4)*sqrt(N3^2 + 10^-4);
N5 = A(5)*sqrt(N4^2 + 10^-2);
N5 = Nout;

%Second Part
Sin1 = 0.1/A(1);
Sin2 = 3/A(1)*A(2);
Sin3 = 5/A(1)*A(2)*A(3);
Sin4 = 8/A(1)*A(2)*A(3)*A(4));
Sin5 = 12/A(1)*A(2)*A(3)*A(4)*A(5);
smin = min(Sin1,Sin2,Sin3,Sin4,Sin5);
smin = Smax;
D = Smax/Nout;


%mycon.m
function [c,ceq] = mycon(A)
c = [];
ceq (1) = A(1)*A(2)*A(3)*A(4)*A(5) = 10000;
Επεξ/σία από MariaAmaliaM58
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Μηπως να τα εκανες με πινακες αντι να τα περνάς ενα-ενα στοιχειο, αυτο απλα για να γινει "καλυτερος" ο κωδικας; Επίσης το "Nout" δεν το εχεις ορισει κατι και αφου γραφεις "Ν5=Νout" δεν έχει νοημα η ανάθεση. Ομοία το έχεις κάνει και για το "smin" αυτο το λαθος. Φτιάξε αυτά και ξανά δοκίμασε, επίπλεον αν μας έδινες κάποιο input/output, πιθανόν να μπορούσαμε να βοηθήσουμε κι άλλο.

 

  • Thanks 1
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...