En aquest tema, explorarem les tècniques d'optimització en MATLAB, que són fonamentals per resoldre problemes en els quals es busca minimitzar o maximitzar una funció objectiu subjecta a certes restriccions. Aquestes tècniques són àmpliament utilitzades en camps com l'enginyeria, l'economia, la investigació operativa i la ciència de dades.

Objectius d'Aprenentatge

Al final d'aquest tema, hauràs de ser capaç de:

  1. Comprendre els conceptes bàsics d'optimització.
  2. Utilitzar funcions d'optimització en MATLAB.
  3. Aplicar tècniques d'optimització a problemes pràctics.
  4. Interpretar els resultats obtinguts de les funcions d'optimització.

  1. Introducció a l'Optimització

Conceptes Bàsics

  • Funció Objectiu: La funció que es vol minimitzar o maximitzar.
  • Variables de Decisió: Les variables que es poden ajustar per optimitzar la funció objectiu.
  • Restriccions: Condicions que les variables de decisió han de complir.

Tipus d'Optimització

  • Optimització No Lineal: Quan la funció objectiu o les restriccions no són lineals.
  • Optimització Lineal: Quan tant la funció objectiu com les restriccions són lineals.
  • Optimització Conjunta: Quan es vol optimitzar més d'una funció objectiu simultàniament.

  1. Funcions d'Optimització en MATLAB

MATLAB ofereix diverses funcions per a l'optimització. A continuació, es presenten algunes de les més utilitzades:

fminunc

Optimització no restringida per a funcions no lineals.

% Definició de la funció objectiu
fun = @(x) x(1)^2 + x(2)^2;

% Punt inicial
x0 = [1, 2];

% Crida a la funció d'optimització
[x, fval] = fminunc(fun, x0);

% Resultats
disp(['Punt òptim: ', num2str(x)]);
disp(['Valor de la funció objectiu: ', num2str(fval)]);

fmincon

Optimització restringida per a funcions no lineals.

% Definició de la funció objectiu
fun = @(x) x(1)^2 + x(2)^2;

% Punt inicial
x0 = [1, 2];

% Restriccions lineals
A = [1, 1];
b = 1;

% Crida a la funció d'optimització
[x, fval] = fmincon(fun, x0, A, b);

% Resultats
disp(['Punt òptim: ', num2str(x)]);
disp(['Valor de la funció objectiu: ', num2str(fval)]);

linprog

Optimització lineal.

% Coeficients de la funció objectiu
f = [-1, -2];

% Restriccions lineals
A = [1, 1; -1, 2; 2, 1];
b = [2; 2; 3];

% Crida a la funció d'optimització
[x, fval] = linprog(f, A, b);

% Resultats
disp(['Punt òptim: ', num2str(x)]);
disp(['Valor de la funció objectiu: ', num2str(fval)]);

  1. Aplicació Pràctica

Exemple: Optimització d'una Funció Quadràtica

Suposem que volem minimitzar la funció \( f(x) = x_1^2 + x_2^2 \) subjecta a la restricció \( x_1 + x_2 \leq 1 \).

% Definició de la funció objectiu
fun = @(x) x(1)^2 + x(2)^2;

% Punt inicial
x0 = [0.5, 0.5];

% Restriccions lineals
A = [1, 1];
b = 1;

% Crida a la funció d'optimització
[x, fval] = fmincon(fun, x0, A, b);

% Resultats
disp(['Punt òptim: ', num2str(x)]);
disp(['Valor de la funció objectiu: ', num2str(fval)]);

Exercici Pràctic

Minimitza la funció \( f(x) = (x_1 - 1)^2 + (x_2 - 2)^2 \) subjecta a les restriccions \( x_1 + x_2 \leq 3 \) i \( x_1 \geq 0 \).

Solució

% Definició de la funció objectiu
fun = @(x) (x(1) - 1)^2 + (x(2) - 2)^2;

% Punt inicial
x0 = [0, 0];

% Restriccions lineals
A = [1, 1; -1, 0];
b = [3; 0];

% Crida a la funció d'optimització
[x, fval] = fmincon(fun, x0, A, b);

% Resultats
disp(['Punt òptim: ', num2str(x)]);
disp(['Valor de la funció objectiu: ', num2str(fval)]);

  1. Errors Comuns i Consells

Errors Comuns

  • Punts Inicials Poc Adequats: Triar punts inicials lluny de la solució pot dificultar la convergència.
  • Restriccions Mal Definides: Assegura't que les restriccions estiguin ben formulades.
  • Funcions Objectiu No Suavitzades: Les funcions amb discontinuïtats poden causar problemes en l'optimització.

Consells

  • Normalitza les Variables: Això pot ajudar a millorar la convergència.
  • Utilitza Opcions d'Optimització: MATLAB permet ajustar opcions com la tolerància i el nombre màxim d'iteracions.

Conclusió

En aquest tema, hem explorat les tècniques d'optimització en MATLAB, incloent-hi les funcions més utilitzades i com aplicar-les a problemes pràctics. Amb aquesta base, estaràs preparat per abordar problemes d'optimització més complexos i interpretar els resultats de manera efectiva.

© Copyright 2024. Tots els drets reservats