Advertisement
ikov34

Untitled

Jan 13th, 2021
985
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MatLab 3.70 KB | None | 0 0
  1. % 1. NALOGA
  2. % Minimiziraj funkcijo:
  3. % x = fminsearch(fun,x0)
  4. % f x = x1 − 0.5 x +1 + x +1 x −1 .
  5.  
  6. % Ali ima funkcija samo en lokalni minimum oziroma maksimum? Če jih ima morda več, jih poišči!
  7. % Kolikšna je vrednost funkcije v točki minimuma. Pomagaš si lahko z risanjem funkcije.
  8.  
  9. % Hiter zapis funkcije v obliki anonimne funkcije, brez potrebe po ločenem
  10. % fajlu
  11. f = @(x) (x(1)-0.5)^2 * (x(1)+1)^2 + ((x(2)+1)^2)*((x(2)-1)^2);
  12.  
  13. for x = -2:2    
  14.     for y = -2:2
  15.         x0 = [x,y];
  16.         val = fminsearch(f,x0);                
  17.         % Minimalni x1,x2
  18.         fprintf('Rezultat: [%.4f %.4f]\n', val);
  19.         % Funkcijska vrednost
  20.         fprintf('Vrednost: %.4f\n', f(val));
  21.     end    
  22. end
  23.  
  24. % Maksimum
  25. f = @(x) -f(x);
  26. % Tu je treba pazit, če fminsearch ne konvergira (MaxIter exceeded),
  27. % potem je očitno search prostor prevelik tak da moraš nekak "po občutku"
  28. % zožat, dokler ne začnejo kovergirat vrednosti....
  29. for x = -0.6:0.6
  30.     for y = -0.6:0.6
  31.         x0 = [x,y];
  32.         val = fminsearch(f,x0);                
  33.         % Maksimalni x1,x2
  34.         fprintf('Rezultat: [%.4f %.4f]\n', val);
  35.         % Funkcijska vrednost
  36.         fprintf('Vrednost: %.4f\n', f(val));
  37.     end    
  38. end
  39.  
  40.  
  41. % 2. NALOGA Maksimiziraj funkcijo in izračunaj njeno vrednost v točki maksimuma:
  42. % x = fminsearch(fun,x0)
  43. f = @(x) (x(1)^2+2*x(2)^2)*exp(-1*(x(1)^2+x(2)^2));
  44. for x = -0.6:0.6
  45.     for y = -0.6:0.6
  46.         x0 = [x,y];        
  47.         val=fminsearch(@(x)-f(x), x0);        
  48.         % Maksimalni x1,x2
  49.         fprintf('Rezultat: [%.4f %.4f]\n', val);
  50.         % Funkcijska vrednost
  51.         fprintf('Vrednost: %.4f\n', f(val));
  52.     end    
  53. end
  54.  
  55. % 3. NALOGA
  56. % Določi minimum funkcije in njeno vrednost v točki minimuma
  57. % x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon)
  58. f = @(x) (x(1)-2)^2 + (x(2)-1)^2;
  59. % -x1-x2+2 >= 0
  60. % x1+x2-2 <= 0
  61. A = [1 1];
  62. b = [2];
  63.  
  64. for x = -2:2    
  65.     for y = -2:2
  66.         x0 = [x,y];
  67.         [xval,fval] = fmincon(f,x0,A,b,[],[],[],[],@naloga3f);
  68.         % Minimalni x1,x2
  69.         fprintf('Rezultat: [%.2f %.2f]\n', xval);
  70.         % Funkcijska vrednost
  71.         fprintf('Vrednost: %.2f\n', fval);
  72.     end    
  73. end
  74.  
  75. % 4. NALOGA
  76. % Poišči vse ničle enačbe:
  77. resitev = roots([1 -6 -92 402 91 -396]);
  78.  
  79. % 5. NALOGA
  80. % Letalska družba kupuje gorivo za letala pri treh različnih prodajalcih. Družba potrebuje v
  81. % naslednjem mesecu na vsakem od treh letališč, kjer pristaja, naslednje količine goriva: 100000 litrov na
  82. % letališču 1, 180000 litrov na letališču 2 ter 350000 litrov na letališču 3. Gorivo prodajajo trije
  83. % prodajalci, njihovo ceno goriva na posameznem letališču podaja naslednja tabela (cene so v centih na
  84. % liter):
  85. % Letališče 1 Letališče 2 Letališče 3
  86. % Prodajalec 1 92 89 90
  87. % Prodajalec 2 91 91 95
  88. % Prodajalec 3 87 90 92
  89. % Vsak prodajalec pa ima na voljo omejene količine goriva, ki ga skupno lahko dostavi v posameznem
  90. % mesecu. Te količine so 320000 litrov prvi prodajalec, 270000 litrov drugi ter 190000 litrov tretji
  91. % prodajalec. Določi pravilo za nakup goriva letalske družbe, ki bo zadovoljilo njihovim potrebam na
  92. % vsakem od letališč ter bo ekonomsko čimbolj ugodno.
  93.  
  94. % Kriterijska funkcija:
  95. % 92 91 86 89 91 90 90 95 92
  96.  
  97. % Omejitve
  98. % 1 1 1 0 0 0 0 0 0 = 100000
  99. % 0 0 0 1 1 1 0 0 0 = 180000
  100. % 0 0 0 0 0 0 1 1 1 = 350000
  101. % 1 0 0 1 0 0 1 0 0 <= 320000
  102. % 0 1 0 0 1 0 0 1 0 <= 270000
  103. % 0 0 1 0 0 1 0 0 1 <= 190000
  104.  
  105. f = [92 91 86 89 91 90 90 95 92];
  106. 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];
  107. b = [320000 270000 190000];
  108. 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];
  109. beq = [100000 180000 350000];
  110.  
  111. [x,val] = intlinprog(f, [], A,b,Aeq,beq,zeros(9),[]);
  112.  
  113.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement