nie działa!!!
nie wiem czemu przy wywołaniu pętli: for(int k = 0; k < pas_tmp.size()-1; k++){ pietro2.numerPietra = pas_tmp.get(k).GetStop(); //System.out.println("L:"+pietro2.numerPietra); pietro2.pasazerowieWysiadajacy.add(pas_tmp.get(k)); trasa.add(licznik,pietro2); licznik++; i++; } tak jakby nadpisuje cały czas pietro2 i cały czas to samo się dodaje to trasa
This commit is contained in:
parent
2c7c2762c2
commit
9b3ac59286
1 changed files with 157 additions and 122 deletions
|
@ -13,147 +13,142 @@ import java.util.List;
|
|||
* @author Tomek
|
||||
*/
|
||||
public class AlgorytmNajblizszeWezwanie implements IAlgorytm{
|
||||
int pietroWindy = 1;
|
||||
int maxPietro;
|
||||
int minPietro = 1;
|
||||
int pietroWindy = 0;
|
||||
int maxPietro=11;
|
||||
int minPietro = 0;
|
||||
int stop = 0;
|
||||
int start = 0;
|
||||
Pasazer p = new Pasazer(0,0,0);
|
||||
int NpietroWindy = 0;
|
||||
Pasazer p = new Pasazer(-1,-1,-1);
|
||||
|
||||
|
||||
public List<Pietro> Trasa(List<Pasazer> pasazerowie){
|
||||
|
||||
List<Pietro> trasa = new ArrayList();
|
||||
int [] t = new int[2*pasazerowie.size()+1];
|
||||
int[][] ttt = new int[2*pasazerowie.size()+1][3];
|
||||
int tab_len = 0;
|
||||
int iluPasazerow = 0;
|
||||
t[tab_len] = pietroWindy;
|
||||
tab_len++;
|
||||
int licznik = 0;
|
||||
//List<Pasazer> pas_tmp = new ArrayList();
|
||||
int zmiana = 0;
|
||||
|
||||
int i = 0;
|
||||
while(i < pasazerowie.size()){
|
||||
Pietro pietro = new Pietro();
|
||||
int z = 0; int s;
|
||||
Pasazer[] ppp = new Pasazer[2*pasazerowie.size()]; int g=0;
|
||||
for(int l = 0; l < pasazerowie.size(); l++){
|
||||
if(pietroWindy == pasazerowie.get(l).GetStart()){
|
||||
z = 1;
|
||||
ppp[g] = pasazerowie.get(l); g++;
|
||||
}
|
||||
else{
|
||||
z = 0;
|
||||
}
|
||||
}
|
||||
|
||||
if(z == 1){
|
||||
for(int q=0;q<g;q++){
|
||||
t[tab_len] = ppp[q].GetStart();
|
||||
tab_len++;
|
||||
pietro.numerPietra = ppp[q].GetStart();
|
||||
pietro.pasazerowieWsiadający.add(pasazerowie.get(q));
|
||||
|
||||
}
|
||||
for(int w=0;w<g;w++){
|
||||
t[tab_len] = ppp[w].GetStop();
|
||||
tab_len++;
|
||||
pietroWindy = ppp[w].GetStop();
|
||||
int ile = 0;
|
||||
while(i < pasazerowie.size()){
|
||||
|
||||
ppp[w].SetStart(-1);
|
||||
ppp[w].SetStop(-1);
|
||||
i+=1;
|
||||
}
|
||||
|
||||
for(int y = 0; y < trasa.size(); y++){
|
||||
for(s = 0; s < trasa.get(y).pasazerowieWysiadajacy.size(); s++){
|
||||
if(pietroWindy == trasa.get(y).pasazerowieWysiadajacy.get(s).GetStop()){
|
||||
pietro.pasazerowieWysiadajacy.add(trasa.get(y).pasazerowieWysiadajacy.get(s));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
zmiana = 0;
|
||||
|
||||
for(int k = 0; k < maxPietro; k++){
|
||||
if(pietroWindy + k <= maxPietro){
|
||||
Pasazer[] pp = new Pasazer[2*pasazerowie.size()];
|
||||
int e=0;
|
||||
Pietro pietro2 = new Pietro();
|
||||
Pietro []pietro3 = new Pietro[12];
|
||||
List<Pietro> pietro_tmp= new ArrayList();
|
||||
List<Pasazer> pas_tmp = new ArrayList();
|
||||
boolean dodano = false;
|
||||
boolean is = false;
|
||||
ile=0;
|
||||
for(int j = 0; j < pasazerowie.size(); j++){
|
||||
if(pietroWindy + k == pasazerowie.get(j).GetStart()){
|
||||
pp[e] = pasazerowie.get(j); e++;
|
||||
if(pietroWindy == pasazerowie.get(j).GetStart()){
|
||||
if(j==0){
|
||||
pietro.numerPietra = pietroWindy;
|
||||
}
|
||||
//is = true;
|
||||
pietro.pasazerowieWsiadający.add(pasazerowie.get(j));
|
||||
//pietro.pasazerowieWysiadajacy.add(p);
|
||||
for(int k = 0; k < trasa.size(); k++){
|
||||
for(int l = 0; l < trasa.get(k).pasazerowieWysiadajacy.size();l++){
|
||||
if(pietro.numerPietra == trasa.get(k).pasazerowieWysiadajacy.get(l).GetStop()){
|
||||
pietro.pasazerowieWysiadajacy.add(trasa.get(k).pasazerowieWysiadajacy.get(l));
|
||||
trasa.get(k).pasazerowieWysiadajacy.get(l).SetStop(-1);
|
||||
}
|
||||
}
|
||||
for(int q=0;q<e;q++){
|
||||
t[tab_len] = pp[q].GetStart();
|
||||
tab_len++;
|
||||
pietro.numerPietra = ppp[q].GetStart();
|
||||
pietro.pasazerowieWsiadający.add(pasazerowie.get(q));
|
||||
}
|
||||
for(int w=0;w<e;w++){
|
||||
t[tab_len] = pp[w].GetStop();
|
||||
tab_len++;
|
||||
pas_tmp.add(pasazerowie.get(j));
|
||||
|
||||
pietroWindy = pp[w].GetStop();
|
||||
|
||||
pp[w].SetStart(-1);
|
||||
pp[w].SetStop(-1);
|
||||
i+=1;
|
||||
zmiana = 1;
|
||||
}
|
||||
for(int y = 0; y < trasa.size(); y++){
|
||||
for(s = 0; s < trasa.get(y).pasazerowieWysiadajacy.size(); s++){
|
||||
if(pietroWindy == trasa.get(y).pasazerowieWysiadajacy.get(s).GetStop()){
|
||||
pietro.pasazerowieWysiadajacy.add(trasa.get(y).pasazerowieWysiadajacy.get(s));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(zmiana == 1)
|
||||
break;
|
||||
|
||||
if(pietroWindy - k >= minPietro){
|
||||
Pasazer[] pp = new Pasazer[2*pasazerowie.size()];
|
||||
int e=0;
|
||||
for(int j = 0; j < pasazerowie.size(); j++){
|
||||
if(pietroWindy - k == pasazerowie.get(j).GetStart()){
|
||||
pp[e] = pasazerowie.get(j); e++;
|
||||
}
|
||||
}
|
||||
for(int q=0;q<e;q++){
|
||||
t[tab_len] = pp[q].GetStart();
|
||||
tab_len++;
|
||||
pietro.numerPietra = ppp[q].GetStart();
|
||||
pietro.pasazerowieWsiadający.add(pasazerowie.get(q));
|
||||
}
|
||||
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;
|
||||
}
|
||||
for(int y = 0; y < trasa.size(); y++){
|
||||
for(s = 0; s < trasa.get(y).pasazerowieWysiadajacy.size(); s++){
|
||||
if(pietroWindy == trasa.get(y).pasazerowieWysiadajacy.get(s).GetStop()){
|
||||
pietro.pasazerowieWysiadajacy.add(trasa.get(y).pasazerowieWysiadajacy.get(s));
|
||||
}
|
||||
}
|
||||
}
|
||||
pietroWindy = pas_tmp.get(pas_tmp.size()-1).GetStop();
|
||||
trasa.add(licznik,pietro); licznik++;
|
||||
i++;
|
||||
for(int k = 0; k < pas_tmp.size()-1; k++){
|
||||
pietro2.numerPietra = pas_tmp.get(k).GetStop();
|
||||
//System.out.println("L:"+pietro2.numerPietra);
|
||||
pietro2.pasazerowieWysiadajacy.add(pas_tmp.get(k));
|
||||
trasa.add(licznik,pietro2); licznik++;
|
||||
i++;
|
||||
}
|
||||
|
||||
if(zmiana == 1)
|
||||
break;
|
||||
|
||||
|
||||
for(int m = 0; m < maxPietro; m++){
|
||||
if(pietroWindy + m <= maxPietro){
|
||||
for(int n = 0; n < pasazerowie.size(); n++){
|
||||
if(pietroWindy + m == pasazerowie.get(n).GetStart()){
|
||||
if(n==0){
|
||||
pietro.numerPietra = pietroWindy+m;
|
||||
}
|
||||
//is = true;
|
||||
pietro.pasazerowieWsiadający.add(pasazerowie.get(n));
|
||||
//pietro.pasazerowieWysiadajacy.add(p);
|
||||
for(int k = 0; k < trasa.size(); k++){
|
||||
for(int l = 0; l < trasa.get(k).pasazerowieWysiadajacy.size();l++){
|
||||
if(pietro.numerPietra == trasa.get(k).pasazerowieWysiadajacy.get(l).GetStop()){
|
||||
pietro.pasazerowieWysiadajacy.add(trasa.get(k).pasazerowieWysiadajacy.get(l));
|
||||
trasa.get(k).pasazerowieWysiadajacy.get(l).SetStop(-1);
|
||||
}
|
||||
}
|
||||
}
|
||||
pas_tmp.add(pasazerowie.get(n));
|
||||
}
|
||||
}
|
||||
pietroWindy = pas_tmp.get(pas_tmp.size()-1).GetStop();
|
||||
trasa.add(licznik,pietro); licznik++;
|
||||
i++;
|
||||
for(int k = 0; k < pas_tmp.size()-1; k++){
|
||||
pietro2.numerPietra = pas_tmp.get(k).GetStop();
|
||||
//System.out.println("L:"+pietro2.numerPietra);
|
||||
pietro2.pasazerowieWysiadajacy.add(pas_tmp.get(k));
|
||||
trasa.add(licznik,pietro2); licznik++;
|
||||
i++;
|
||||
}
|
||||
}
|
||||
if(dodano) break;
|
||||
|
||||
if(pietroWindy - m >= minPietro){
|
||||
for(int n = 0; n < pasazerowie.size(); n++){
|
||||
if(pietroWindy - m == pasazerowie.get(n).GetStart()){
|
||||
if(n==0){
|
||||
pietro.numerPietra = pietroWindy-m;
|
||||
}
|
||||
//is = true;
|
||||
pietro.pasazerowieWsiadający.add(pasazerowie.get(n));
|
||||
//pietro.pasazerowieWysiadajacy.add(p);
|
||||
for(int k = 0; k < trasa.size(); k++){
|
||||
for(int l = 0; l < trasa.get(k).pasazerowieWysiadajacy.size();l++){
|
||||
if(pietro.numerPietra == trasa.get(k).pasazerowieWysiadajacy.get(l).GetStop()){
|
||||
pietro.pasazerowieWysiadajacy.add(trasa.get(k).pasazerowieWysiadajacy.get(l));
|
||||
trasa.get(k).pasazerowieWysiadajacy.get(l).SetStop(-1);
|
||||
}
|
||||
}
|
||||
}
|
||||
pas_tmp.add(pasazerowie.get(n));
|
||||
|
||||
}
|
||||
}
|
||||
pietroWindy = pas_tmp.get(pas_tmp.size()-1).GetStop();
|
||||
trasa.add(licznik,pietro); licznik++;
|
||||
i++;
|
||||
for(int k = 0; k < pas_tmp.size()-1; k++){
|
||||
pietro2.numerPietra = pas_tmp.get(k).GetStop();
|
||||
//System.out.println("L:"+pietro2.numerPietra);
|
||||
pietro2.pasazerowieWysiadajacy.add(pas_tmp.get(k));
|
||||
trasa.add(licznik,pietro2); licznik++;
|
||||
i++;
|
||||
}
|
||||
}
|
||||
if(dodano) break;
|
||||
|
||||
}
|
||||
|
||||
trasa.add(pietro);
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
@ -163,4 +158,44 @@ public class AlgorytmNajblizszeWezwanie implements IAlgorytm{
|
|||
public void SetMaxPietro(int maxPietro) {
|
||||
this.maxPietro = maxPietro;
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
Pasazer p1 = new Pasazer(1,2,6);
|
||||
Pasazer p2 = new Pasazer(2,9,1);
|
||||
Pasazer p3 = new Pasazer(3,0,6);
|
||||
Pasazer p4 = new Pasazer(4,6,1);
|
||||
Pasazer p5 = new Pasazer(5,0,4);
|
||||
Pasazer p6 = new Pasazer(6,0,5);
|
||||
Pasazer p7 = new Pasazer(7,9,7);
|
||||
|
||||
List<Pasazer> lp = new ArrayList();
|
||||
lp.add(p1);
|
||||
lp.add(p2);
|
||||
lp.add(p3);
|
||||
lp.add(p4);
|
||||
lp.add(p5);
|
||||
lp.add(p6);
|
||||
lp.add(p7);
|
||||
|
||||
List<Pietro> tr = new ArrayList();
|
||||
AlgorytmNajblizszeWezwanie l = new AlgorytmNajblizszeWezwanie();
|
||||
tr = l.Trasa(lp);
|
||||
|
||||
for(int h = 0; h < tr.size(); h++){
|
||||
System.out.println("Pietro: "+tr.get(h).numerPietra);
|
||||
System.out.print("Ws: ");
|
||||
for(int i =0; i <tr.get(h).pasazerowieWsiadający.size();i++){
|
||||
System.out.print(""+tr.get(h).pasazerowieWsiadający.get(i).GetName()+", ");
|
||||
}
|
||||
System.out.print("\nWy: ");
|
||||
for(int i =0; i <tr.get(h).pasazerowieWysiadajacy.size();i++){
|
||||
System.out.print(""+tr.get(h).pasazerowieWysiadajacy.get(i).GetName()+", ");
|
||||
}
|
||||
System.out.println();
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
Loading…
Reference in a new issue