Optymalizacja to proces znajdowania ekstremum (minimum lub maksimum) funkcji, często pod pewnymi ograniczeniami. W programie Scilab funkcja optim
pozwala na rozwiązywanie różnych problemów optymalizacyjnych, w tym:
• optymalizacji bez ograniczeń,
• optymalizacji z ograniczeniami,
• problemów nieliniowych.
Rozwiązanie problemu optymalizacji wymaga obliczenie gradientu funkcji celu.
Funkcja optim
jest centralnym narzędziem w Scilab do optymalizacji. Wspiera różne metody optymalizacji, a jej składnia różni się w zależności od rodzaju problemu.
[fopt, xopt] = optim(cost_function, x0)
Argumenty:
• cost_function
: Funkcja celu, którą chcemy zminimalizować.
• x0
: Wektor początkowy dla zmiennych decyzyjnych.
Funkcja optim
zwraca następujące wartości:
• xopt
: Wektor optymalnych wartości zmiennych decyzyjnych.
• fopt
: Minimalna wartość funkcji celu.
Znajdź ekstremum funkcji $f(x) = x^2 + 3x + 4$.
function [f, g, ind] = cost_function(x,ind)
f = x^2 + 3*x + 4; //funkcja
g = 2*x + 3 //pochodna
endfunction
//
x0 = 0; // Wartość początkowa
[fopt, xopt] = optim(cost_function, x0);
disp(xopt)
disp(fopt)
clc
clear
//definicja funkcji
function [f, g, ind]=cost(x, ind)
xref = [1; 2; 3];
f = 0.5 * norm(x - xref)^2;
g = x - xref;
endfunction
// punkt startowy
x0 = [1; -1; 1];
[fopt, xopt] = optim(cost, x0)
disp(xopt)
W przypadku optymalizacji z ograniczeniami wywołanie funkcje optim
jest następujące
[xopt, fopt] = optim(cost_function,"b", lb, up, x0)
gdzie
- lb
to ograniczenie dolne
- up
to ograniczenie górne
Znajdź ekstremum funkcji $f(x) = x^2 + 3x + 4$ z ograniczeniem $ -1 < x < 1 $.
function [f, g, ind] = cost_function(x,ind)
f = x^2 + 3*x + 4;
g = 2*x + 3
endfunction
x0 = 0;
[fopt, xopt] = optim(cost_function,"b",-1,1,x0)
disp(xopt)
disp(fopt)