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
|
* @author Tomek
|
||||||
*/
|
*/
|
||||||
public class AlgorytmNajblizszeWezwanie implements IAlgorytm{
|
public class AlgorytmNajblizszeWezwanie implements IAlgorytm{
|
||||||
int pietroWindy = 1;
|
int pietroWindy = 0;
|
||||||
int maxPietro;
|
int maxPietro=11;
|
||||||
int minPietro = 1;
|
int minPietro = 0;
|
||||||
int stop = 0;
|
int stop = 0;
|
||||||
int start = 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){
|
public List<Pietro> Trasa(List<Pasazer> pasazerowie){
|
||||||
|
|
||||||
List<Pietro> trasa = new ArrayList();
|
List<Pietro> trasa = new ArrayList();
|
||||||
int [] t = new int[2*pasazerowie.size()+1];
|
int licznik = 0;
|
||||||
int[][] ttt = new int[2*pasazerowie.size()+1][3];
|
//List<Pasazer> pas_tmp = new ArrayList();
|
||||||
int tab_len = 0;
|
|
||||||
int iluPasazerow = 0;
|
|
||||||
t[tab_len] = pietroWindy;
|
|
||||||
tab_len++;
|
|
||||||
int zmiana = 0;
|
int zmiana = 0;
|
||||||
|
|
||||||
int i = 0;
|
int i = 0;
|
||||||
while(i < pasazerowie.size()){
|
|
||||||
Pietro pietro = new Pietro();
|
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));
|
|
||||||
|
|
||||||
}
|
int ile = 0;
|
||||||
for(int w=0;w<g;w++){
|
while(i < pasazerowie.size()){
|
||||||
t[tab_len] = ppp[w].GetStop();
|
|
||||||
tab_len++;
|
|
||||||
pietroWindy = ppp[w].GetStop();
|
|
||||||
|
|
||||||
ppp[w].SetStart(-1);
|
Pietro pietro2 = new Pietro();
|
||||||
ppp[w].SetStop(-1);
|
Pietro []pietro3 = new Pietro[12];
|
||||||
i+=1;
|
List<Pietro> pietro_tmp= new ArrayList();
|
||||||
}
|
List<Pasazer> pas_tmp = new ArrayList();
|
||||||
|
boolean dodano = false;
|
||||||
for(int y = 0; y < trasa.size(); y++){
|
boolean is = false;
|
||||||
for(s = 0; s < trasa.get(y).pasazerowieWysiadajacy.size(); s++){
|
ile=0;
|
||||||
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;
|
|
||||||
for(int j = 0; j < pasazerowie.size(); j++){
|
for(int j = 0; j < pasazerowie.size(); j++){
|
||||||
if(pietroWindy + k == pasazerowie.get(j).GetStart()){
|
if(pietroWindy == pasazerowie.get(j).GetStart()){
|
||||||
pp[e] = pasazerowie.get(j); e++;
|
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++){
|
pas_tmp.add(pasazerowie.get(j));
|
||||||
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));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(zmiana == 1)
|
pietroWindy = pas_tmp.get(pas_tmp.size()-1).GetStop();
|
||||||
break;
|
trasa.add(licznik,pietro); licznik++;
|
||||||
|
i++;
|
||||||
if(pietroWindy - k >= minPietro){
|
for(int k = 0; k < pas_tmp.size()-1; k++){
|
||||||
Pasazer[] pp = new Pasazer[2*pasazerowie.size()];
|
pietro2.numerPietra = pas_tmp.get(k).GetStop();
|
||||||
int e=0;
|
//System.out.println("L:"+pietro2.numerPietra);
|
||||||
for(int j = 0; j < pasazerowie.size(); j++){
|
pietro2.pasazerowieWysiadajacy.add(pas_tmp.get(k));
|
||||||
if(pietroWindy - k == pasazerowie.get(j).GetStart()){
|
trasa.add(licznik,pietro2); licznik++;
|
||||||
pp[e] = pasazerowie.get(j); e++;
|
i++;
|
||||||
}
|
|
||||||
}
|
|
||||||
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));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
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) {
|
public void SetMaxPietro(int maxPietro) {
|
||||||
this.maxPietro = 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