uni
Questo è l’algoritmo pre trovare la soluzione ottima di un Problema di Programmazione Lineare (PL), facendo uso della Teoria della Dualità.
Dato un problema PL in primale standard:
Ne trovo il duale complementare
Parto da una soluzione di base ammissibile del primale, ovvero un vertice.
Data la sua base , ne calcolo la soluzione nel duale, secondo le modalità descritte nella Teoria della Dualità, se la soluzione duale è ammissibile (tutte ) questo vertice è soluzione, altrimenti devo fare un Passo del Simplesso.
Se parto da una base con soluzione non ammissibile nel primale, che è invece soluzione ammissibile nel duale, devo fare un Passo del Simplesso Duale.

Passo del Simplesso

  1. Determino l’indice uscente : il minore indice (di base) la cui .
    si prende sempre il minore per la Regola Anticiclo di Blend.
    e
  2. Determino e è una colonna di determinata dalla -esima riga di , in particolare considero , ovvero la colonna di determinata dalla -esima (con indice uscente) riga di .
  3. Calcolo per ogni indice non di base il prodotto scalare e scarto gli indici per cui tale rapporto è negativo
  4. Rimpiazzo con l’indice non di base che produce il minimo del seguente prodotto:
  • se due indici hanno lo stesso scelgo l’indice minore.
  • se tutti gli indici portano ad allora la soluzione è illimitata.

Passo del Simplesso Duale

In questo caso partiamo da un Formato Duale Standard, prendiamo un vertice, scopriamo che non è ammissibile nel primale e quindi dobbiamo applicare il Simplesso Duale.

  1. data una base , trovo la soluzione di base e scopriamo che è ammissibile (tutte componenti di )
  2. Trovo quindi la complementare , se trovo che questa non è ammissibile nel primale (non rispetta tutti i vincoli, quindi ) allora sappiamo che la nostra non è Ottimo (fallisce il Test di Ottimalità del degli Scarti Complementari).
  3. Allora (esiste almeno una riga violata), sia la prima riga violata (indice minore - Regole Anticiclo di Blend), l’indice entrante.
  4. Calcoliamo
  5. Calcoliamo con e elimino gli indici per i quali viene positivo (se tutti gli indici portano a prodotto positivo il minimo è )
  6. Costruisco i rapporti con e prendo l’indice che porta al rapporto minore, e lo chiamo , indice uscente e questo viene rimpiazzato da (se due sono uguali prendo l’indice minore).

Algoritmo verifica Poliedro Vuoto

Questo algoritmo serve per sapere se il poliedro è vuoto o meno:

  1. Costruisco il suo Duale Ausiliario (DA)
    partendo da un problema in duale std
costruisco il suo Duale Associato + tante epsilon quante sono le righe del duale moltiplicandole per l'identità $( i )$ 

che equivale a prendere il poliedro nella sua forma ed aggiungere ad ogni riga di una , quindi le sono tante quante lo sono le righe di (ovvero numero di colonne di ).

  1. Cerco il Valore Ottimo del (VO) tramite il Passo del Simplesso Duale (mi aspetto che le due epsilon escano)
  2. Controllo il segno di VO:
    • se allora poliedro del duale (D) è vuoto
    • se allora non è vuoto, e una base ammissibile per si costruisce a partire da una base ottima per .