-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathparticle.h
54 lines (50 loc) · 1.53 KB
/
particle.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
/*
* File: particle.h
* Author: diepeerk
*
* Created on 4 de octubre de 2010, 11:47 AM
*/
#ifndef PARTICLE_H
#define PARTICLE_H
class particle {
public:
particle(int,int,int);
particle(const particle& orig);
virtual ~particle();
int **getPosition();
void init();
void calculateFitness();
int getFitness();
void cobertureConstraint(int**); //restriccion de cobertura
int daysOffTogether(int); //restriccion de dias libres juntos
int preferenceConstraint(int**); //restriccion de preferencias de las enfermeras
void update(int **g_best);
void printPosition(int nurses, int days, int shifts);
int **getPositionMatrix();
void setPsoParameters(float c1, float c2, float r1, float r2, float w);
void setCoverageMatrix(int**);
void setPreferenceMatrix(int**);
void minDaysOffPerWeek();
int maxShiftsPerDay(int);
void setPositionMatrix(int**); //metodo de prueba
void printCoverageMatrix();
void printPreferenceMatrix();
void improveResult1(int,int,int);
void improveResult2();
void swapDay(int,int);
void fixDay(int,int,int);
void repairFitness(int,int,int);
//void fixDay2();
int maxNightShifts(int);
void makeFeasible(int,int,int);
private:
int **position, **l_best;
int days, shifts, nurses, fitness, l_fitness;
float v_0, v_1, d1_0, d1_1, d2_0, d2_1;
float w, c1, r1, c2, r2; //pso parameters
int **coverage, **preference;
int *daysOffArray;
int shift_hours[4];
int **shiftsPerDayArray;
};
#endif /* PARTICLE_H */