Introducció
La programació lineal és una tècnica d'optimització matemàtica que s'utilitza per maximitzar o minimitzar una funció objectiu subjecta a un conjunt de restriccions lineals. Aquesta tècnica és àmpliament utilitzada en àrees com la investigació operativa, l'economia, l'enginyeria i la gestió.
Conceptes Clau
- Funció Objectiu: La funció que es vol maximitzar o minimitzar.
- Variables de Decisió: Les variables que afecten la funció objectiu.
- Restriccions: Les limitacions o condicions que les variables de decisió han de complir.
- Regió Feasible: L'espai de solucions que compleixen totes les restriccions.
Formulació d'un Problema de Programació Lineal
Un problema de programació lineal es pot expressar de la següent manera:
\[ \text{Maximitzar o Minimitzar } Z = c_1x_1 + c_2x_2 + \cdots + c_nx_n \]
Subjecte a:
\[ a_{11}x_1 + a_{12}x_2 + \cdots + a_{1n}x_n \leq b_1 \] \[ a_{21}x_1 + a_{22}x_2 + \cdots + a_{2n}x_n \leq b_2 \] \[ \vdots \] \[ a_{m1}x_1 + a_{m2}x_2 + \cdots + a_{mn}x_n \leq b_m \]
\[ x_1, x_2, \ldots, x_n \geq 0 \]
Exemple Pràctic
Suposem que una empresa fabrica dos productes, A i B. Cada producte A genera un benefici de 3 unitats i cada producte B genera un benefici de 5 unitats. La producció de cada producte està limitada per les següents restriccions:
- Cada producte A requereix 1 unitat de matèria primera i 2 hores de mà d'obra.
- Cada producte B requereix 2 unitats de matèria primera i 1 hora de mà d'obra.
- La disponibilitat de matèria primera és de 8 unitats.
- La disponibilitat de mà d'obra és de 10 hores.
Formularem aquest problema com un problema de programació lineal.
Funció Objectiu
\[ \text{Maximitzar } Z = 3x_1 + 5x_2 \]
Restriccions
\[ x_1 + 2x_2 \leq 8 \] (matèria primera) \[ 2x_1 + x_2 \leq 10 \] (mà d'obra) \[ x_1, x_2 \geq 0 \]
Mètodes de Solució
Mètode Gràfic
El mètode gràfic és útil per a problemes amb dues variables de decisió. Consisteix en:
- Dibuixar les restriccions en un pla cartesià.
- Identificar la regió feasible.
- Determinar la funció objectiu i trobar el punt que maximitza o minimitza aquesta funció dins de la regió feasible.
Mètode Simplex
El mètode Simplex és un algorisme iteratiu que es fa servir per resoldre problemes de programació lineal amb més de dues variables. Els passos bàsics són:
- Convertir les desigualtats en igualtats afegint variables de slack.
- Construir una taula Simplex inicial.
- Iterar fins que es trobi la solució òptima.
Exemple de Mètode Simplex
Considerem el problema anterior. Convertim les desigualtats en igualtats afegint variables de slack \(s_1\) i \(s_2\):
\[ x_1 + 2x_2 + s_1 = 8 \] \[ 2x_1 + x_2 + s_2 = 10 \]
La taula Simplex inicial seria:
Base | \(x_1\) | \(x_2\) | \(s_1\) | \(s_2\) | Solució |
---|---|---|---|---|---|
\(s_1\) | 1 | 2 | 1 | 0 | 8 |
\(s_2\) | 2 | 1 | 0 | 1 | 10 |
\(Z\) | -3 | -5 | 0 | 0 | 0 |
Iterem fins trobar la solució òptima.
Exercicis Pràctics
Exercici 1
Formuleu i resolgueu el següent problema de programació lineal utilitzant el mètode gràfic:
Una empresa fabrica dos tipus de joguines, X i Y. Cada joguina X genera un benefici de 4 unitats i cada joguina Y genera un benefici de 3 unitats. Les restriccions són:
- Cada joguina X requereix 2 unitats de material i 1 hora de mà d'obra.
- Cada joguina Y requereix 1 unitat de material i 2 hores de mà d'obra.
- La disponibilitat de material és de 10 unitats.
- La disponibilitat de mà d'obra és de 8 hores.
Solució
- Funció Objectiu: Maximitzar \( Z = 4x_1 + 3x_2 \)
- Restriccions: \[ 2x_1 + x_2 \leq 10 \] \[ x_1 + 2x_2 \leq 8 \] \[ x_1, x_2 \geq 0 \]
Dibuixeu les restriccions en un pla cartesià, identifiqueu la regió feasible i determineu el punt que maximitza la funció objectiu.
Resum
En aquesta secció, hem après els conceptes bàsics de la programació lineal, com formular un problema de programació lineal, i els mètodes per resoldre aquests problemes, incloent el mètode gràfic i el mètode Simplex. També hem vist un exemple pràctic i hem proposat un exercici per reforçar els conceptes apresos.
Algoritmes Avançats
Mòdul 1: Introducció als Algoritmes Avançats
Mòdul 2: Algoritmes d'Optimització
- Programació Lineal
- Algoritmes d'Optimització Combinatòria
- Algoritmes Genètics
- Optimització de Colònia de Formigues
Mòdul 3: Algoritmes en Grafs
- Representació de Grafs
- Cerca en Grafs: BFS i DFS
- Algoritmes de Camins Mínims
- Algoritmes de Flux Màxim
- Algoritmes d'Aparellament en Grafs
Mòdul 4: Algoritmes de Cerca i Ordenació
Mòdul 5: Algoritmes d'Aprenentatge Automàtic
- Introducció a l'Aprenentatge Automàtic
- Algoritmes de Classificació
- Algoritmes de Regressió
- Xarxes Neuronals i Deep Learning
- Algoritmes de Clustering
Mòdul 6: Casos d'Estudi i Aplicacions
- Optimització en la Indústria
- Aplicacions de Grafs en Xarxes Socials
- Cerca i Ordenació en Grans Volums de Dades
- Aplicacions d'Aprenentatge Automàtic en la Vida Real