Anteprima
Vedrai una selezione di 14 pagine su 61
Un modello di PLI e un'euristica risolutiva per un problema si scheduling a singola macchina soggetta a rotture e vincoli di precedenza Pag. 1 Un modello di PLI e un'euristica risolutiva per un problema si scheduling a singola macchina soggetta a rotture e vincoli di precedenza Pag. 2
Anteprima di 14 pagg. su 61.
Scarica il documento per vederlo tutto.
Un modello di PLI e un'euristica risolutiva per un problema si scheduling a singola macchina soggetta a rotture e vincoli di precedenza Pag. 6
Anteprima di 14 pagg. su 61.
Scarica il documento per vederlo tutto.
Un modello di PLI e un'euristica risolutiva per un problema si scheduling a singola macchina soggetta a rotture e vincoli di precedenza Pag. 11
Anteprima di 14 pagg. su 61.
Scarica il documento per vederlo tutto.
Un modello di PLI e un'euristica risolutiva per un problema si scheduling a singola macchina soggetta a rotture e vincoli di precedenza Pag. 16
Anteprima di 14 pagg. su 61.
Scarica il documento per vederlo tutto.
Un modello di PLI e un'euristica risolutiva per un problema si scheduling a singola macchina soggetta a rotture e vincoli di precedenza Pag. 21
Anteprima di 14 pagg. su 61.
Scarica il documento per vederlo tutto.
Un modello di PLI e un'euristica risolutiva per un problema si scheduling a singola macchina soggetta a rotture e vincoli di precedenza Pag. 26
Anteprima di 14 pagg. su 61.
Scarica il documento per vederlo tutto.
Un modello di PLI e un'euristica risolutiva per un problema si scheduling a singola macchina soggetta a rotture e vincoli di precedenza Pag. 31
Anteprima di 14 pagg. su 61.
Scarica il documento per vederlo tutto.
Un modello di PLI e un'euristica risolutiva per un problema si scheduling a singola macchina soggetta a rotture e vincoli di precedenza Pag. 36
Anteprima di 14 pagg. su 61.
Scarica il documento per vederlo tutto.
Un modello di PLI e un'euristica risolutiva per un problema si scheduling a singola macchina soggetta a rotture e vincoli di precedenza Pag. 41
Anteprima di 14 pagg. su 61.
Scarica il documento per vederlo tutto.
Un modello di PLI e un'euristica risolutiva per un problema si scheduling a singola macchina soggetta a rotture e vincoli di precedenza Pag. 46
Anteprima di 14 pagg. su 61.
Scarica il documento per vederlo tutto.
Un modello di PLI e un'euristica risolutiva per un problema si scheduling a singola macchina soggetta a rotture e vincoli di precedenza Pag. 51
Anteprima di 14 pagg. su 61.
Scarica il documento per vederlo tutto.
Un modello di PLI e un'euristica risolutiva per un problema si scheduling a singola macchina soggetta a rotture e vincoli di precedenza Pag. 56
Anteprima di 14 pagg. su 61.
Scarica il documento per vederlo tutto.
Un modello di PLI e un'euristica risolutiva per un problema si scheduling a singola macchina soggetta a rotture e vincoli di precedenza Pag. 61
1 su 61
D/illustrazione/soddisfatti o rimborsati
Disdici quando
vuoi
Acquista con carta
o PayPal
Scarica i documenti
tutte le volte che vuoi
Estratto del documento

DENSITÀgrafo8: andamento dello scostamento per λ=0,001.

Come già fatto per il caso studiato precedentemente caratterizzato da probabilità uniformi anche in questo caso è riportata (grafo9) l’analisi dell’andamento del tempo di risoluzione della Programmazione Lineare Intera.

6000
5000
4000
3000 velocità PLI
2000
1000
0,1 0,183 0,208 0,217 0,242 0,243 0,25 0,29

densitàgrafo9: andamento del tempo di risoluzione della PLI nel caso λ=0,001

Il grafo riportato conferma i risultati ottenuti dall’analisi del caso con probabilità uniformi ovvero il progressivo aumento del tempo di risoluzione della PLI per valori sempre più bassi della densità del grafo delle precedenze. Per istanze caratterizzate da grafi con densità maggiori del 24% il tempo di risoluzione diminuisce notevolmente oscillando in un intervallo compreso tra i 10 ed i 30 secondi (grafo10).

3880
7060
6050
4030
2010
0,217 0,242 0,243

sarà minore, mentre per grafi più densi il tempo di risoluzione sarà maggiore. Questo è evidente anche dal grafico, dove si può notare un aumento del tempo di risoluzione all'aumentare della densità del grafo. E1/PLI E2/PLI 10,99 50,99 0,98 50,97 50,96 50,95 50,95 50,94 50,94 50,93 50,93 50,92 50,91 50,90 50,90 SCOSTAMENTO 0,05 0,08 3 0,22 5 0,23 3 0,24 3 0,25 8 0,26 7 0,27 5 DENSITÀgrafo11: andamento dello scostamento con λ=0,0139 Anche in questo caso l'analisi del tempo di risoluzione, riportata nel grafico12, conferma come questo sia funzione della densità del grafo delle precedenze. Per istanze caratterizzate da grafi poco densi il tempo di risoluzione sarà minore, mentre per grafi più densi il tempo di risoluzione sarà maggiore.

aumentanotevolmente.12001000800secondi 600 velocità PLI4002000 0,05 0,083 0,225 0,233 0,24 0,243 0,258 0,267 0,275densitàgrafo12: andamento del tempo di risoluzione per λ=0,01

Andando ad analizzare istanze con grafi caratterizzati da densità maggiori del 22,5% la PLI risulta particolarmente veloce nella risoluzione del problema.54,543,53secondi 2,521,510,50 0,225 0,233 0,24 0,243 0,258 0,267 0,275densità40grafo13: velocità di risoluzione nel caso λ=0,01 per densità maggiori del 22,5%

Caso3:Viene qui riportato l’ultimo caso studiato in questo elaborato ovvero quello in cui λ=0,1. Le istanze caratterizzate da questo valore di λ presentano probabilità e valori della funzione obiettivo molto bassi. Anche in questo caso viene riportatal’analisi dell’andamento dello scostamento e del tempo impiegato dalla PLI perla risoluzione del problema. Partendo con l’analisi dello scostamento, andando

analizzare il grafo14, si riscontra ancora una volta come le soluzioni trovate dall'Euristica1 non solo siano migliori (nella maggior parte dei casi) di quelle trovate dalla seconda ma sono inoltre molto vicine alla soluzione ottima ottenuta dalla PLI.

10,98

9,60

9,40

9,20

9,00

8,80

8,86

SECONDI

0,84

0,82

E1/PLI

0,80

0,78

E2/PLI

0,76

0,74

0,72

0,70

0,68

0,66

0,05

0,117

0,15

0,208

0,233

0,242

0,275

0,292

DENSITÀ

grafo14: andamento dello scostamento con λ=0,1

41

Essendo un problema caratterizzato da valori di π non elevati la velocità di risoluzione della PLI è molto alta. Si può notare come per istanze con grafi poco densi il tempo di risoluzione aumenta in modo impercettibile.

1,9

1,8

1,7

1,6

secondi

1,5

velocità PLI

1,4

1,3

1,2

0,05

0,117

0,15

0,208

0,233

0,242

0,275

0,292

densità

grafo15: andamento del tempo di risoluzione nel caso λ=0,14

24.5

Conclusioni

Scopo principale dell'elaborato era andare a definire ed analizzare dei metodi di risoluzione per

un problema di scheduling a singola macchina soggetta a rotturee vincoli di precedenza. Dopo aver definito i metodi risolutivi ideati per questotipo di problema è necessario identificare quale risulti il migliore. Dai risultatiriportati nei paragrafi precedenti si può concludere che, in generale, l'Euristica1risulta migliore dell'Euristica2. L'Euristica1 risulta sempre essere abbastanzavicina al valore ottimo ottenuto dalla risoluzione della PLI eccetto per quelleistanze in cui le probabilità sono molto alte, ovvero in un intervallo compreso tra[0.9;1]. Con probabilità alte infatti le prestazioni dell'Euristica1 risultanoleggermente più scarse che negli altri casi, tuttavia, rimangono in generalesuperiori all'Euristica2.Un altro risultato importante viene riportato dall'analisi del tempo di risoluzionedella PLI per il problema in esame. In tutti i casi studiati infatti è risultato che iltempo di risoluzione.

della Programmazione Lineare Intera dipende da due diversi fattori:

I valori delle probabilità π: il tempo di risoluzione aumenta per istanze caratterizzate da valori di π maggiori;

La densità del grafo delle precedenze: il tempo di risoluzione aumenta notevolmente per istanze caratterizzate da grafi delle precedenze poco densi.

La combinazione dei due fattori comporta un peggioramento significativo della velocità di risoluzione della PLI nella risoluzione del problema.

CAPITOLO 5

Appendice

Si riportano i codici in C++ e CPLEX utilizzati per l'implementazione delle euristiche e della PLI.

Implementazione delle euristiche, generazione dei dati e risultato ottenuto dalle euristiche (C++):

#include <iostream>
#include <cstdlib>
#include <string>
#include <vector>
#include <chrono>
#include <random>
#include <algorithm>
#include <fstream>
#include <iomanip>
using namespace std;
class Process{
protected:
string
Il testo formattato con i tag HTML è il seguente:

name;int NumeroPredecessori;float rj;float pj;float zj;vector<Process> ancestor;bool done=false;bool operator==(const Process &c){ return this->getName()==c.getName()&&this->zj==c.zj;}inline double prob(default_random_engine b){ std::uniform_real_distribution<double> distribution (0.1,1.0);return distribution(b);} 44public :Process(){ rj=rand() % 100;pj=0;zj=(rj*pj)/(1-pj);};Process(string name,default_random_engine a){ rj=rand() % 100;pj=prob(a);zj=(rj*pj)/(1-pj);setName(name);};Process(string name,float ri,float pi){ rj=ri;pj=pi;zj=(float)(rj*pj)/(float)(1-pj);setName(name);};Process(const Process& pro){ rj=pro.rj;pj=pro.pj;zj=pro.zj;name=pro.name;ancestor=pro.ancestor;done=pro.done;}~Process(){ ancestor.clear();}const bool isDone() {return done;} constvoid finished() {done= true;}void addAncestor(const Process p){ ancestor.push_back(p);NumeroPredecessori++;}inline vector<Process> getAncestor() const{ 45return this->ancestor;}float

```html getValues(const int val ) const{ switch (val){ //PJ=0 RJ=1 ZJ=2case 0://return this->pj;case 1:return this->rj;case 2:return this->zj;default:throw string("Error bad value");}}void setValues(const float value,const int tipe){ switch(tipe){case 0:this->pj=value;zj=(rj*pj)/(1-pj);break;case 1:this->rj=value;zj=(rj*pj)/(1-pj);break;case 2://debugthis->zj=value;break;}cout << "ZJ = "<<this->zj<<endl;}void setName(string Nome){ name=Nome;}string getName() const{ return this->name;}bool killAncestor(string Name){ bool success=false;for( int i=0;i<(int)this->ancestor.size();i++)46{ if(this->ancestor[i].getName().compare(Name)==0){ ancestor.erase(ancestor.begin()+i );success=true;NumeroPredecessori--;}}return success;}inline int getNAncestor() const{ return NumeroPredecessori;}};class Generator{ private:Process** elements;int dim;default_random_engine rng;inline vector<double> prob(default_random_engine b,int l){ ```
vector<double> a;
std::uniform_real_distribution<double> distribution (0.0,1.0);
for(int i=0;i<l;i++)
    a.push_back(distribution(b));
return a;
}

inline vector<double> prob(int l,int lambda){
    vector<double> a;
    for(int i=0;i<l;i++)
        a.push_back(trunc((exp(-lambda))*100)/100);
    return a;
}

int maxindex(vector<Process> p,vector<Process> order){
    int maximum_zj;
    for(unsigned int k=0;k<p.size();k++){
        if(!checkName(p[k].getName(),order)){
            maximum_zj=k;
            break;
        }
    }
    for(unsigned int i=1;i<p.size();i++){
        if(p[i].getValues(2)>p[maximum_zj].getValues(2)&&!checkName(p[i].getName(),order)){
            maximum_zj=i;
        }
    }
    return maximum_zj;
}

public:
Generator (int dimensions,default_random_engine a){
    rng=a;
    dim=dimensions;
    elements=new Process*[dim];
    vector<double> valori;
    valori=prob(a,dim*dim);
    for(int i=0;i<dim;i++){
        elements[i]=new Process[dim];
    }
    for (int i=0;i<dim;i++){
        for(int j=0;j<dim;j++){
            elements[i][j].setValues(valori.back(),0);
            valori.pop_back();
            cout
<< elements[i][j].getValues(0)<<endl;
elements[i][j].setName(to_string((i*dim) + j));
}}}
Generatorv(int dimensions,double lambda){
    dim=dimensions;
    elements=new Process*[dim];
    for(int i=0;i<dim;i++){
        elements[i]=new Process[dim];
    }
    for (int i=0;i<dim;i++){
        for(int j=0;j<dim;j++){
            elements[i][j].setValues(exp(-lambda*elements[i][j].getValues(1)),0);
            cout<<elements[i][j].getValues(1)<<endl;
            cout << elements[i][j].getValues(0)<<endl;
            elements[i][j].setName(to_string((i*dim) + j));
        }
    }
}
inline vector<Process>
Dettagli
A.A. 2018-2019
61 pagine
SSD Scienze matematiche e informatiche MAT/09 Ricerca operativa

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher Valentina.Bonaccini di informazioni apprese con la frequenza delle lezioni di metodi di ottimizzazione della ricerca operativa e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Università degli Studi di Siena o del prof Scienze matematiche Prof.