⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 testwithsortedqueue.java

📁 构建网上购书最优联盟 此篇文章重在构建囊括最多变量因素的网上购书联盟。计算最优则变成了不断测试不断更改变量的统计型问题。而联盟要求的最低构建要素是: &#61548 联盟中心到站点的运输费
💻 JAVA
字号:
package tomato;



//不定时的会出现数组超界!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
public class TestWithSortedQueue extends TestbyIncreament {
  
 
  //再一种新的测试,失败者要排队,(首先按到BS的距离排,如相同则)按照从BS到Center再到失败者的距离之和的大小递增排列,则添加失败者时不是一次全部加入,而是试探的从头开始加一个,如不行则加两个,依次增加。
  //另外产生相同坐标点的购买者不能无限制
  //bug!!!!!!!!!!!!!!!!!
  public static void RandomTest(Bookstore bookstore,Book book,int maxper,double perKmFreight){ //递增测试。失败者进入记录,后来递增失败时与前面的记录一起再测试一次,若失败则一起加进记录中。
  
     Purchaser[] pArr = new Purchaser[1000];
     Location Alliancelocation = new Location(0,0);
     Alliance cTest = new Alliance(Alliancelocation,book,0);
       
       
     int count = 0;
     boolean isContinue = true;
       
     while (isContinue){
     
          SetRandomPurchasers(book,maxper,count,pArr);
      
          for (int i = 0; i < Alliance.incrementNumber; i++){
           
              cTest.Add(pArr[count+i]); 
     
          }
 
          cTest.EstablishAlliance(bookstore,perKmFreight);
          System.out.println();
          if ( cTest.IsAllianceReasonable(bookstore,perKmFreight) ){
    	
    	      count += Alliance.incrementNumber;
              System.out.println();
              System.out.println("The Alliance is reasonable!");
              cTest.Display(bookstore,perKmFreight); 
    
          }
          else {
    	
              System.out.println("The Alliance is NOT reasonable!"); 
       
              for (int i = 0; i < Alliance.incrementNumber; i++){
               
               cTest.Remove(pArr[count+i]); 
               if ( Alliance.d_wantjoinmember.size() != 0){
                    
                    int wantjoinmembersize = Alliance.d_wantjoinmember.size();
                    for(int index = 0; index < wantjoinmembersize ; index++){    //多了层循环
                       
                       int joinnumber = index + 1;
                       for(int index_i = 0; index_i < joinnumber; index_i++){       //变化处
                        
                         cTest.Add((Purchaser)Alliance.d_wantjoinmember.elementAt(index_i)); 
                         
                       }
                         
                       cTest.Add(pArr[count+i]); 
                       cTest.EstablishAlliance(bookstore,perKmFreight);
                       System.out.println("Try to join the previous failer!");
                       if ( cTest.IsAllianceReasonable(bookstore,perKmFreight) ){
    	
    	                    count += Alliance.incrementNumber;
    	                    count += Alliance.d_wantjoinmember.size();
    	                    
    	                    for(int index_i = 0; index_i < joinnumber; index_i++){     //变化处
                        
                               Alliance.d_wantjoinmember.removeElement((Purchaser)Alliance.d_wantjoinmember.elementAt(index_i));  
                         
                            }
                       
                            System.out.println();
                            System.out.println("The Alliance is reasonable!");
                            cTest.Display(bookstore,perKmFreight); 
                            break;
    
                       }
                       
                       else {
                            
                            cTest.Remove(pArr[count+i]); 

                            for(int index_i = 0; index_i < joinnumber; index_i++){    //变化处
                        
                                 cTest.Remove((Purchaser)Alliance.d_wantjoinmember.elementAt(index_i)); 
                         
                            } 
                            
                            for(int index_i = 0; index_i < joinnumber; index_i++){    //变化处
                        
                        
                                double everyoneToBSdistance = ((Purchaser)Alliance.d_wantjoinmember.elementAt(index_i)).GetLocation().CalculateDistance(bookstore.GetLocation());
                                double pArrToBSdistance = pArr[count+i].GetLocation().CalculateDistance(bookstore.GetLocation());
                                if (pArrToBSdistance > everyoneToBSdistance){
                                               Alliance.d_wantjoinmember.addElement(pArr[count+i]);

                                }
                            
                            } 
                            
                          
                            
                       }
                     
                    }  
                  }
                  
                  else 
                      Alliance.d_wantjoinmember.addElement(pArr[count+i]);
     
              }
           
              System.out.println("The join is failed!");

          }
          
          System.out.println();
       
      }
  }
  
  public static void Test(){ 
     
    Alliance.SetMapBound();	
    Alliance.SetBookstore();
    RandomTest(Alliance.d_bookstore,Alliance.d_bookstore.SelectBook(Alliance.SettargetBook()),Alliance.Setmaxper(),Bookstore.SetperKmFreight());
     
  }
  
  public static void main(String[]args){
    
    Test();

  }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -