El teu projecte funciona, mesura i millora la línia base. Falta l'últim tram, que és el que diferencia un exercici privat d'una feina professional: comunicar-lo de manera que una altra persona el pugui entendre, jutjar i reproduir. En aquesta lliçó final escriuràs l'informe del projecte amb una plantilla concreta, prepararàs el repositori perquè qualsevol el pugui executar, t'avaluaràs amb una rúbrica seriosa —la mateixa amb què avaluarem, amb les seves llums i les seves ombres, el projecte de referència de Rutalia— i, si tens ocasió de presentar-lo en viu, tindràs un guió de deu minuts. I com que aquesta és l'última lliçó del curs, acabarem on ha d'acabar un curs: mirant enrere al camí complet i endavant al que ve després.

Contingut

  1. L'informe final: estructura i plantilla
  2. Justificar les decisions: la taula "per què aquest algorisme i no un altre"
  3. Presentar resultats amb honestedat
  4. El README i el repositori reproduïble
  5. Rúbrica d'autoavaluació
  6. El projecte de referència, avaluat
  7. Presentació oral breu (si escau)
  8. Conclusió del curs

L'informe final

L'informe no és un diari del que vas fer; és un document per a un lector que no hi era. De 4 a 8 pàgines (o el seu equivalent en Markdown), amb aquesta estructura fixa:

# <Títol del projecte>

## 1. Problema
Què es resol, per a qui (fictici) i per què importa. Una frase
amb l'objectiu numèric ("reduir >= 30 % el temps total de ruta").

## 2. Dades
Origen (sintètiques/públiques), volum, camps, com es generen
(llavor inclosa) i què NO representen (limitacions del sintètic).

## 3. Mètodes
El pipeline fase a fase. Per a cada fase: quina tècnica, de quina
lliçó del curs ve i PER QUÈ aquesta i no una altra (taula de
decisions, vegeu la secció següent). Complexitat teòrica de cada peça.

## 4. Experiments
Quines variants es comparen, sobre quines instàncies, amb quantes
llavors, i quina mètrica exacta decideix.

## 5. Resultats
Taula principal (variant x mètrica, amb mitjana i rang entre
llavors). Gràfica si aporta. Inclou el que NO va funcionar.

## 6. Limitacions
Quins supòsits simplifiquen la realitat i què passaria sense ells.

## 7. Treball futur
2-4 línies de millora concretes, amb la tècnica que faries servir.

## 8. Referències
Lliçons del curs utilitzades i qualsevol font externa.

Consell d'escriptura: redacta primer les seccions 4-5 (ja tens el CSV i les taules de 07-02) i després la resta. Els resultats són l'esquelet; la narrativa es construeix al voltant.

La taula de decisions

La secció de mètodes guanya o perd credibilitat en un punt: vas triar cada algorisme per una raó o perquè era l'últim que havies estudiat? La manera més eficaç de demostrar-ho és una taula que confronti cada decisió amb les alternatives que vas descartar — aquí és on brilla el DECISIONS.md que vas anar anotant a 07-02. La del projecte de referència:

Decisió Escollit Alternatives considerades Per què
Model de temps Regressió lineal amb trets (05-03) k-NN (05-01), xarxa neuronal (05-04) Relació gairebé lineal distància→temps a les dades; interpretable; la xarxa (MAE 3,0 vs 3,1) no justifica el seu cost d'ajust
Agrupació de comandes k-means (05-05) DBSCAN, jeràrquic (05-05) Necessitem exactament k=5 grups de mida similar; DBSCAN no controla k
Assignació grups-repartidors Hongarès (03-06) Voraç per proximitat Òptim en O(k³) amb k=5: gratis; el voraç pot quedar a >10 % en casos adversos
Ordre de ruta NN + 2-opt (06-01) B&B exacte (02-03), genètic (02-04), colònia de formigues (02-05) m≈16 parades: exacte inviable (16! estats), les metaheurístiques guanyen <2 % al 2-opt en proves i multipliquen el temps
Avaluació Simulador amb temps veritables Avaluar amb prediccions Evitar la fuga de dades: l'àrbitre no pot ser el mateix model (06-04)

Fixa't en el patró de cada fila: alternativa anomenada, criteri explícit (qualitat, cost, risc) i, quan existeix, un número. "Vaig triar X perquè m'agrada" no hi apareix mai.

Presentar resultats amb honestedat

La temptació en escriure resultats és ensenyar només l'execució bona. És la versió editorial del cherry-picking que vam criticar a les mètriques de 05-02, i un lector competent ho ensuma de lluny. Tres regles:

  • Reporta variabilitat, no un número. "−41 % de mitjana sobre 10 instàncies × 5 llavors, rang [−33 %, −47 %]" diu la veritat; "fins a un 47 % de millora" és màrqueting. Si hi ha una instància on el teu mètode perd, apareix a la taula.
  • Explica el que no va funcionar. A Rutalia: l'hongarès amb prou feines va moure l'agulla (tots els repartidors surten del mateix dipòsit) i una xarxa neuronal per als temps no va superar la regressió. Documentar-los tots dos suma credibilitat: demostra que vas provar alternatives i vas mesurar abans de decidir.
  • Compara sempre en igualtat de condicions. Mateixes instàncies, mateixes llavors de dades per a totes les variants, mateixa mètrica calculada pel mateix avaluador. Si una variant fa servir informació que una altra no té, digues-ho.

Format de la taula principal de l'informe (la que vas dissenyar per endavant a 07-01):

Variant Cost mitjà (min) Rang Millora mitjana Còmput mitjà
Línia base 604 [571, 648] < 0,01 s
+ regressió + NN 466 [439, 502] −23 % 0,4 s
+ k-means + hongarès 385 [352, 421] −36 % 0,6 s
+ 2-opt (final) 356 [318, 397] −41 % 2,2 s

El README i el repositori

L'informe convenç; el repositori demostra. L'estàndard és simple: una persona amb Python i sense context ha de passar de git clone a reproduir la teva taula principal en menys de deu minuts. El README mínim:

# Planificador de repartiment amb predicció de temps (Rutalia)

Projecte final del curs Algorismes Avançats. Planifica jornades de
repartiment combinant regressió de temps, clustering, assignació
òptima i millora local de rutes. Millora mitjana del 41 % sobre la
planificació ingènua (detalls a informe/INFORME.md).

## Requisits
Python >= 3.10. Instal·lar: pip install -r requirements.txt
(numpy, scipy, matplotlib)

## Reproduir els resultats
1. python dades/generador.py            # crea dades/instancies/*.npz
2. python experiments/exp_capes.py      # ~3 min; escriu resultats/capes.csv
3. python experiments/taula_final.py    # imprimeix la taula de l'informe

## Estructura
dades/ algorismes/ avaluacio/ experiments/ tests/  (vegeu informe, secc. 3)

## Tests
python -m pytest tests/

Checklist del repositori abans de donar-lo per tancat:

  • [ ] requirements.txt amb versions; res instal·lat "de memòria".
  • [ ] Cap ruta absoluta ni dependència de la teva màquina.
  • [ ] Llavors fixades: dues execucions donen la mateixa taula.
  • [ ] Les dades es generen amb un script (o hi ha instruccions de descàrrega); no hi pugis datasets pesants ni, sota cap concepte, dades personals.
  • [ ] L'informe és dins del repositori (informe/INFORME.md).
  • [ ] Prova de foc: clona'l en un directori net i segueix el teu propi README al peu de la lletra.

Rúbrica d'autoavaluació

Avalua't amb aquesta rúbrica abans de considerar el projecte acabat; cada nivell és acumulatiu (el "bo" inclou el de l'"acceptable").

Criteri Insuficient Acceptable Bo Excel·lent
Correcció El pipeline falla o produeix solucions invàlides Funciona en el cas principal; validesa comprovada a ull Tests de propietats invariants i un cas petit verificat a mà A més, comportament davant de casos límit documentat (0 comandes, 1 repartidor, empats)
Integració de mòduls Una sola tècnica del curs 2 mòduls, encadenats de manera forçada 2-3 mòduls on la sortida d'un alimenta el següent amb sentit 3+ mòduls, i les alternatives de cada fase es van considerar i descartar amb criteri
Mesurament Sense línia base o sense mètrica numèrica Línia base i mètrica, una sola instància/llavor Diverses instàncies i llavors, mitjana i rang reportats A més, cost teòric predit i contrastat amb el mesurat; el que no va funcionar, documentat
Codi Un script monolític irreproducible Mòduls separats, s'executa amb instruccions Estructura dades/algorismes/avaluació/experiments, llavors i configuració centralitzades A més, reproducció completa en ≤ 3 ordres i tests automatitzats
Comunicació Sense informe o sense README Informe amb les 8 seccions, README executable A més, taula de decisions justificades i resultats amb variabilitat A més, limitacions honestes i treball futur concret i realista

Interpretació pràctica: tot en "acceptable" és un projecte aprovat; l'objectiu raonable per a 20-40 hores és "bo" en tots els criteris i "excel·lent" en els dos que més s'alineïn amb el teu projecte. Un "insuficient" en qualsevol criteri mana: es corregeix abans de polir res més.

El projecte de referència, avaluat

Passem la rúbrica al planificador de Rutalia tal com va quedar a 07-02, amb l'honestedat que demanàvem un parell de seccions més amunt:

Criteri Nivell Justificació
Correcció Bo Tests de pla vàlid, 2-opt monòton i matriu positiva; cas de 4 comandes verificat a mà. Li falta per a excel·lent: no provem casos límit (0 comandes?, n no divisible entre k?)
Integració Excel·lent Cinc fases de quatre mòduls diferents (5, 3, 6, 1) encadenades; alternatives descartades amb números a la taula de decisions
Mesurament Excel·lent 10 instàncies × 5 llavors, mitjana i rang, cost teòric contrastat, i dos "no va funcionar" documentats (hongarès amb dipòsit únic, xarxa neuronal)
Codi Bo Estructura neta, config i llavors centralitzades, 3 ordres per reproduir. Li falta per a excel·lent: cobertura de tests baixa (3 tests) i el generador barreja generació i E/S
Comunicació Bo Informe complet amb decisions i variabilitat. Li falta per a excel·lent: la secció de limitacions és curta — el sintètic assumeix temps simètrics i independents entre trams, i això mereixia més anàlisi

Punts forts honestos: el mesurament i la integració, que era justament el que el curs més ha entrenat. Punts febles honestos: les vores — casos límit sense provar i limitacions de la dada sintètica poc discutides. És un projecte "bo amb dos excel·lents", i aquesta frase, amb la seva justificació, és exactament el que hauries de poder escriure del teu.

Presentació oral breu

Si tens ocasió de presentar el projecte (una reunió d'equip, un meetup, una entrevista tècnica), deu minuts basten si s'estructuren així:

Minuts Contingut Regla d'or
0-1 El problema i l'objectiu numèric Sense la història del teu procés: el problema, no la teva biografia
1-3 El pipeline en un diagrama (un de sol) Cada caixa = una tècnica + per què aquesta
3-6 Resultats: la taula principal i una gràfica Comença per la línia base; el contrast fa el relat
6-8 El que no va funcionar i limitacions És la part que més credibilitat et dona: no la retallis
8-9 Demo mínima (opcional): una ordre, una taula Mai una demo en viu de més de 60 segons
9-10 Treball futur i tancament Acaba amb el número clau, no amb "i això és tot"

Assaja-la una vegada amb rellotge: l'error universal és gastar sis minuts en context i córrer als resultats, que és justament el que el públic venia a veure.

Errors Comuns i Consells

  • Error: l'informe-diari. "Primer vaig provar X, després em vaig adonar que Y…" — el lector vol el resultat organitzat, no la cronologia. El procés només apareix quan justifica una decisió.
  • Error: cherry-picking involuntari. Regenerar resultats "una última vegada" i quedar-te amb l'execució que ha sortit millor. Els números de l'informe surten del CSV d'experiments, amb les seves llavors fixades, i de cap altre lloc.
  • Error: README aspiracional. Instruccions que "haurien de funcionar" però que ningú no ha seguit des de zero. La prova del clon net no és opcional.
  • Error: autoavaluar-se a l'alça. La rúbrica només serveix si el nivell es justifica amb evidència assenyalable (on són aquests tests?, on és aquest rang entre llavors?). Avalua com si el projecte fos d'una altra persona.
  • Consell: demana una lectura externa. Un company que llegeixi només l'informe ha de poder respondre: quin problema resol, quant millora i com ho sé? Si en falla alguna, l'informe —no el lector— té el problema.
  • Consell: el repositori és el teu porfoli. Un projecte reproduïble amb mesurament seriós diu més en una entrevista tècnica que deu certificats. Poleix-lo pensant en aquest lector.

Exercicis

Les tres fites finals del teu projecte — i del curs.

Exercici 1: informe complet

Escriu l'informe del teu projecte amb la plantilla de 8 seccions, incloent-hi la taula de decisions (mínim 3 files amb alternatives reals) i la taula de resultats amb mitjana i rang entre llavors.

Exercici 2: repositori reproduïble

Deixa el repositori en estat final: README amb passos de reproducció, requirements, llavors fixades, i supera la prova del clon net seguint les teves pròpies instruccions.

Exercici 3: autoavaluació amb la rúbrica

Avalua el teu projecte criteri a criteri amb la rúbrica, justificant cada nivell amb evidència concreta, i identifica: (a) el teu criteri més fort, (b) el més feble i (c) l'única millora que faries amb 4 hores més.

Solucions

Exercici 1 — criteris d'autoavaluació. Test del lector extern: algú que no conegui el teu projecte ha de poder extreure de l'informe el problema, la millora numèrica i com es va mesurar, en menys de cinc minuts. Verifica a més: cada fila de la taula de decisions anomena una alternativa real i un criteri (no "era la més adequada"); la secció de resultats conté almenys un resultat negatiu o neutre; cap número de l'informe no és impossible de rastrejar fins al teu CSV d'experiments.

Exercici 2 — solució orientativa. L'estàndard és literal: clon en un directori net, seguir el README paraula per paraula, obtenir la taula principal. Fallades típiques que descobreix aquesta prova: un import que depenia del teu PYTHONPATH, un fitxer de dades que existia a la teva màquina però no es genera, una dependència sense versió que ja no s'instal·la igual. Si reproduir triga més de 10 minuts de feina humana (el còmput pot trigar el que calgui), simplifica els passos, no les instruccions.

Exercici 3 — criteris d'autoavaluació. Una autoavaluació creïble gairebé mai no és plana: el normal és una barreja de nivells, com la del projecte de referència. Sospita de tu mateix si t'has posat "excel·lent" en tot (revisa-ho amb l'evidència a la mà) i també si t'has posat "acceptable" en tot (probablement estàs sent injust en el teu criteri fort). La resposta a (c) és la més valuosa: si la millora que triaries és de codi o de mesurament, el teu instint d'enginyeria està ben calibrat; si és "afegir una altra tècnica més", rellegeix la secció de quan parar de 07-02.

Conclusió

I amb el teu informe escrit, el teu repositori reproduïble i la teva rúbrica omplerta, el curs s'acaba.

Mira el camí recorregut. Vas començar al mòdul 1 aprenent a posar nom al cost de les coses —notació asimptòtica, anàlisi de complexitat, recursió i programació dinàmica, les estructures que ho fan possible— quan Rutalia era només una empresa amb paquets per lliurar i nosaltres ni tan sols sabíem mesurar quant costava lliurar-los. Al mòdul 2 vas aprendre a optimitzar: programació lineal, motxilles i viatjants (aquell òptim de 35,22 km), backtracking, genètics i formigues competint sobre els mateixos problemes. El mòdul 3 va convertir la ciutat en un graf de nou zones i et va donar BFS, Dijkstra, arbres d'expansió, fluxos i aparellaments. El mòdul 4 va afinar la cerca i l'ordenació, de la cerca binària sobre la resposta fins a A*. El mòdul 5 va afegir la peça que faltava —aprendre de les dades: regressió, classificació, xarxes neuronals des de zero, clustering sobre 2000 lliuraments— i el mòdul 6 ho va barrejar tot en casos reals, del dia operatiu amb el seu 72 % de millora a l'ètica dels models amb conseqüències. I en aquest mòdul 7 vas deixar de seguir el cas d'estudi i el vas construir tu: especificació, desenvolupament per capes, mesurament honest i comunicació professional.

Això és el que ara saps fer, i convé dir-ho sense embuts: saps modelar un problema difús com un problema formal, triar l'algorisme amb criteri (i descartar alternatives amb números), predir el cost abans d'executar, mesurar contra una línia base amb variabilitat, i comunicar el resultat de manera reproduïble. Aquesta cadena completa —no cap algorisme solt— és la competència que separa qui ha estudiat algorismes de qui resol problemes amb ells.

Propers passos, concrets:

  • Programació competitiva (Codeforces, AtCoder, Advent of Code) per guanyar velocitat i reflexos amb les tècniques dels mòduls 1-4; comença per problemes de dificultat mitjana i dona't temps.
  • OR-Tools de Google per a optimització industrial: a 06-01 el vam deixar citat; ara tens la base per fer servir els seus solvers de VRP i programació entera entenent què fan per dins.
  • Els clàssics: Introduction to Algorithms (CLRS) com a referència de profunditat, The Algorithm Design Manual (Skiena) per a l'instint de modelatge, i Algorithms (Sedgewick) si prefereixes partir del codi.
  • Especialització: si et va atrapar el mòdul 5, continua amb un curs seriós de machine learning i porta els teus models a producció amb les cauteles de 06-04; si et van atrapar els mòduls 2 i 3, la investigació operativa i l'optimització combinatòria tenen profunditat per a anys.

Rutalia era fictícia; el que hi has construït al damunt, no. La propera vegada que algú et porti un problema embolicat —rutes, horaris, recomanacions, dades que no caben— en reconeixeràs el patró: modelar, combinar, mesurar. Les eines són teves i ja saps fer-les servir. Ha estat un plaer fer aquest viatge amb tu. Fins a la propera, i bon codi.

© Copyright 2026. Tots els drets reservats