Algorytm Najbliższego wezwania by michał
This commit is contained in:
parent
8b04dc71e2
commit
c2c79084cd
1 changed files with 108 additions and 3 deletions
|
@ -10,9 +10,114 @@ package winda.logic;
|
||||||
* @author Tomek
|
* @author Tomek
|
||||||
*/
|
*/
|
||||||
public class AlgorytmNajblizszeWezwanie implements IAlgorytm{
|
public class AlgorytmNajblizszeWezwanie implements IAlgorytm{
|
||||||
|
int pietroWindy = 1;
|
||||||
|
int maxPietro = 12;
|
||||||
|
int minPietro = 1;
|
||||||
|
int stop = 0;
|
||||||
|
int start = 0;
|
||||||
|
Pasazer p = new Pasazer(0,0,0);
|
||||||
|
|
||||||
public int[] Trasa(Pasazer[] pasazerowie) {
|
public int[] Trasa(Pasazer[] pasazerowie){
|
||||||
throw new UnsupportedOperationException("Not supported yet.");
|
int [] t = new int[2*pasazerowie.length+1];
|
||||||
|
int tab_len = 0;
|
||||||
|
int iluPasazerow = 0;
|
||||||
|
t[tab_len] = pietroWindy;
|
||||||
|
tab_len++;
|
||||||
|
int zmiana = 0;
|
||||||
|
|
||||||
|
int i = 0;
|
||||||
|
while(i < pasazerowie.length){
|
||||||
|
int z = 0;
|
||||||
|
Pasazer[] ppp = new Pasazer[2*pasazerowie.length]; int g=0;
|
||||||
|
for(int l = 0; l < pasazerowie.length; l++){
|
||||||
|
if(pietroWindy == pasazerowie[l].GetStart()){
|
||||||
|
z = 1;
|
||||||
|
ppp[g] = pasazerowie[l]; g++;
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
z = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(z == 1){
|
||||||
|
for(int q=0;q<g;q++){
|
||||||
|
t[tab_len] = ppp[q].GetStart();
|
||||||
|
tab_len++;
|
||||||
|
}
|
||||||
|
for(int w=0;w<g;w++){
|
||||||
|
t[tab_len] = ppp[w].GetStop();
|
||||||
|
tab_len++;
|
||||||
|
pietroWindy = ppp[w].GetStop();
|
||||||
|
|
||||||
|
ppp[w].SetStart(-1);
|
||||||
|
ppp[w].SetStop(-1);
|
||||||
|
i+=1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
zmiana = 0;
|
||||||
|
|
||||||
|
for(int k = 0; k < maxPietro; k++){
|
||||||
|
if(pietroWindy + k <= maxPietro){
|
||||||
|
Pasazer[] pp = new Pasazer[2*pasazerowie.length];
|
||||||
|
int e=0;
|
||||||
|
for(int j = 0; j < pasazerowie.length; j++){
|
||||||
|
if(pietroWindy + k == pasazerowie[j].GetStart()){
|
||||||
|
pp[e] = pasazerowie[j]; e++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for(int q=0;q<e;q++){
|
||||||
|
t[tab_len] = pp[q].GetStart();
|
||||||
|
tab_len++;
|
||||||
|
}
|
||||||
|
for(int w=0;w<e;w++){
|
||||||
|
t[tab_len] = pp[w].GetStop();
|
||||||
|
tab_len++;
|
||||||
|
|
||||||
|
pietroWindy = pp[w].GetStop();
|
||||||
|
|
||||||
|
pp[w].SetStart(-1);
|
||||||
|
pp[w].SetStop(-1);
|
||||||
|
i+=1;
|
||||||
|
zmiana = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(zmiana == 1)
|
||||||
|
break;
|
||||||
|
|
||||||
|
if(pietroWindy - k >= minPietro){
|
||||||
|
Pasazer[] pp = new Pasazer[2*pasazerowie.length];
|
||||||
|
int e=0;
|
||||||
|
for(int j = 0; j < pasazerowie.length; j++){
|
||||||
|
if(pietroWindy - k == pasazerowie[j].GetStart()){
|
||||||
|
pp[e] = pasazerowie[j]; e++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for(int q=0;q<e;q++){
|
||||||
|
t[tab_len] = pp[q].GetStart();
|
||||||
|
tab_len++;
|
||||||
|
}
|
||||||
|
for(int w=0;w<e;w++){
|
||||||
|
t[tab_len] = pp[w].GetStop();
|
||||||
|
tab_len++;
|
||||||
|
|
||||||
|
pietroWindy = pp[w].GetStop();
|
||||||
|
|
||||||
|
pp[w].SetStart(-1);
|
||||||
|
pp[w].SetStop(-1);
|
||||||
|
i+=1;
|
||||||
|
zmiana = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(zmiana == 1)
|
||||||
|
break;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
return t;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue