Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- % 1. NALOGA
- % Minimiziraj funkcijo:
- % x = fminsearch(fun,x0)
- % f x = x1 − 0.5 x +1 + x +1 x −1 .
- % Ali ima funkcija samo en lokalni minimum oziroma maksimum? Če jih ima morda več, jih poišči!
- % Kolikšna je vrednost funkcije v točki minimuma. Pomagaš si lahko z risanjem funkcije.
- % Hiter zapis funkcije v obliki anonimne funkcije, brez potrebe po ločenem
- % fajlu
- f = @(x) (x(1)-0.5)^2 * (x(1)+1)^2 + ((x(2)+1)^2)*((x(2)-1)^2);
- for x = -2:2
- for y = -2:2
- x0 = [x,y];
- val = fminsearch(f,x0);
- % Minimalni x1,x2
- fprintf('Rezultat: [%.4f %.4f]\n', val);
- % Funkcijska vrednost
- fprintf('Vrednost: %.4f\n', f(val));
- end
- end
- % Maksimum
- f = @(x) -f(x);
- % Tu je treba pazit, če fminsearch ne konvergira (MaxIter exceeded),
- % potem je očitno search prostor prevelik tak da moraš nekak "po občutku"
- % zožat, dokler ne začnejo kovergirat vrednosti....
- for x = -0.6:0.6
- for y = -0.6:0.6
- x0 = [x,y];
- val = fminsearch(f,x0);
- % Maksimalni x1,x2
- fprintf('Rezultat: [%.4f %.4f]\n', val);
- % Funkcijska vrednost
- fprintf('Vrednost: %.4f\n', f(val));
- end
- end
- % 2. NALOGA Maksimiziraj funkcijo in izračunaj njeno vrednost v točki maksimuma:
- % x = fminsearch(fun,x0)
- f = @(x) (x(1)^2+2*x(2)^2)*exp(-1*(x(1)^2+x(2)^2));
- for x = -0.6:0.6
- for y = -0.6:0.6
- x0 = [x,y];
- val=fminsearch(@(x)-f(x), x0);
- % Maksimalni x1,x2
- fprintf('Rezultat: [%.4f %.4f]\n', val);
- % Funkcijska vrednost
- fprintf('Vrednost: %.4f\n', f(val));
- end
- end
- % 3. NALOGA
- % Določi minimum funkcije in njeno vrednost v točki minimuma
- % x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon)
- f = @(x) (x(1)-2)^2 + (x(2)-1)^2;
- % -x1-x2+2 >= 0
- % x1+x2-2 <= 0
- A = [1 1];
- b = [2];
- for x = -2:2
- for y = -2:2
- x0 = [x,y];
- [xval,fval] = fmincon(f,x0,A,b,[],[],[],[],@naloga3f);
- % Minimalni x1,x2
- fprintf('Rezultat: [%.2f %.2f]\n', xval);
- % Funkcijska vrednost
- fprintf('Vrednost: %.2f\n', fval);
- end
- end
- % 4. NALOGA
- % Poišči vse ničle enačbe:
- resitev = roots([1 -6 -92 402 91 -396]);
- % 5. NALOGA
- % Letalska družba kupuje gorivo za letala pri treh različnih prodajalcih. Družba potrebuje v
- % naslednjem mesecu na vsakem od treh letališč, kjer pristaja, naslednje količine goriva: 100000 litrov na
- % letališču 1, 180000 litrov na letališču 2 ter 350000 litrov na letališču 3. Gorivo prodajajo trije
- % prodajalci, njihovo ceno goriva na posameznem letališču podaja naslednja tabela (cene so v centih na
- % liter):
- % Letališče 1 Letališče 2 Letališče 3
- % Prodajalec 1 92 89 90
- % Prodajalec 2 91 91 95
- % Prodajalec 3 87 90 92
- % Vsak prodajalec pa ima na voljo omejene količine goriva, ki ga skupno lahko dostavi v posameznem
- % mesecu. Te količine so 320000 litrov prvi prodajalec, 270000 litrov drugi ter 190000 litrov tretji
- % prodajalec. Določi pravilo za nakup goriva letalske družbe, ki bo zadovoljilo njihovim potrebam na
- % vsakem od letališč ter bo ekonomsko čimbolj ugodno.
- % Kriterijska funkcija:
- % 92 91 86 89 91 90 90 95 92
- % Omejitve
- % 1 1 1 0 0 0 0 0 0 = 100000
- % 0 0 0 1 1 1 0 0 0 = 180000
- % 0 0 0 0 0 0 1 1 1 = 350000
- % 1 0 0 1 0 0 1 0 0 <= 320000
- % 0 1 0 0 1 0 0 1 0 <= 270000
- % 0 0 1 0 0 1 0 0 1 <= 190000
- f = [92 91 86 89 91 90 90 95 92];
- A = [1 0 0 1 0 0 1 0 0;0 1 0 0 1 0 0 1 0;0 0 1 0 0 1 0 0 1];
- b = [320000 270000 190000];
- Aeq = [1 1 1 0 0 0 0 0 0; 0 0 0 1 1 1 0 0 0; 0 0 0 0 0 0 1 1 1];
- beq = [100000 180000 350000];
- [x,val] = intlinprog(f, [], A,b,Aeq,beq,zeros(9),[]);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement