Metody Obliczeniowe

Wprowadzenie

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.

Optymalizacja bez ograniczeń

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.


# Przykład

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)

# Przykład

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)

Optymalizacja z ograniczeniami

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


# Przykład

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)