Utility Function

package park2;


public class utility{

double partpointer,range;

evallen[] deelen;

Character[] partfav;

Character[]partgreedy;

evaluate[]database;

evaluate newevaluate;

double myx,myy,tgchange,compet;

utsort[] US;

//ArrayList<Character> utsoort;

Character[] utsoort;

int bound;


public utility(Character[] partfav,double partpointer,evaluate[]database, double myx,double myy,double compet,double tgchange){

this.partpointer=partpointer;

this.range=(double)partfav.length;

this.range=partfav.length;

this.partfav=new Character[(int) (range-partpointer)];

this.database=new evaluate[(int) (partfav.length-partpointer)];

this.compet=compet;

this.tgchange=tgchange;

this.partfav=partfav;

this.database=database;

this.myx=myx;

this.myy=myy;

partgreedy=new Character[(int) (partfav.length-partpointer)];

US=new utsort[(int) (partfav.length-partpointer)];

utsoort=new Character[(int) (partfav.length-partpointer)];

}

public Character[] DetGreedy(){

Character[] greedy=new Character[(int) (range-partpointer)];

evaluate tlev;

evallen loD;

double m;

deelen=new evallen[(int) (this.partfav.length-partpointer)];

for(int ii=0;ii<this.partfav.length-partpointer;ii++){

tlev=new evaluate();

tlev=this.database[ii];

m=CalDis(myx,tlev.selfx,myy,tlev.selfy);

// System.out.println("the value of x and y are "+myx+" "+myy);

// System.out.println("the value of m is "+m);

loD=new evallen();

loD.setLength(m);

loD.LD=tlev;

loD.mychar=this.partfav[ii];

deelen[ii]=loD;

}

evallen te;

for(int i=0;i<this.partfav.length-partpointer;i++) {

te=deelen[i];

int j;

for(j=i-1;j>=0 && te.length<deelen[j].length;j--)

deelen[j+1]= deelen[j];

deelen[j+1]= te;

}

for(int i=0;i<this.partfav.length-partpointer;i++)

{

greedy[i]=deelen[i].mychar;

// System.out.println("Greedy the value of array "+greedy[i]+" at index "+i);

}

return greedy;

}

public double CalDis(double x1,double x2,double y1,double y2)

{

double xDiffloc,yDiffloc,xSqrloc,ySqrloc,outputloc;

xDiffloc =x1-x2;

xSqrloc = Math.pow(xDiffloc, 2);

yDiffloc = y1-y2;

ySqrloc = Math.pow(yDiffloc, 2);

outputloc= Math.sqrt(xSqrloc + ySqrloc);

return outputloc;

}

public Character[] getutiliy(){

double UT,DEMAND = 0,ALPHA;

evaluate temp;

int j=0;

utsort nus;

double x,y;

partgreedy=DetGreedy();

ALPHA=this.tgchange/this.compet;

for(int i=0;i<this.partfav.length-partpointer;i++){

nus=new utsort();

// same=partfav.get(i);

// int j;

// double CMP;

for(int p=0;p<this.partfav.length-partpointer;p++)

if(this.partfav[i].equals(partgreedy[p]))

j=p;

temp=new evaluate();

temp=this.database[i];

DEMAND=temp.size-(temp.pointer+temp.demand);

x=y=0;

// double CMP;

if(DEMAND==temp.size){

DEMAND=1;

// CMP=0;

}

else {if(DEMAND>0)

{

DEMAND=DEMAND/temp.size;

// CMP=DEMAND;

}

else{ DEMAND=0;

//CMP=0;

}

}

if(DEMAND==0)

UT=-1;

else{

x=0.9*(DEMAND)*(range-partpointer)/range;

y=0.1*((partpointer/range)*(ALPHA)*((double)temp.size/(double)(temp.size-temp.pointer)));

UT=(x*((this.partfav.length-partpointer)-i)/(this.partfav.length-partpointer))+(y*((this.partfav.length-partpointer)-j)/(this.partfav.length-partpointer));

}

nus.eval=temp;

nus.ut=UT;

nus.mychar=this.partfav[i];

US[i]=nus;

US[i].len=j;

US[i].x=x;

US[i].y=y;

System.out.println("the DEMAND value is "+DEMAND+" and ALPHA value is "+ALPHA );

}

utsort MUS;

for(int i=0;i<this.partfav.length-partpointer;i++) {

MUS=new utsort();

MUS=US[i];

int mv;

for(mv=i-1;mv>=0 && MUS.ut>US[mv].ut;mv--)

US[mv+1]=US[mv];

US[mv+1]=MUS;

}

for(int i=0;i<this.partfav.length-partpointer;i++) {

utsoort[i]=US[i].mychar;

System.out.println(" US ellement in index "+i+" and the character is "+utsoort[i]+" and the j value is "+US[i].len+" and utility is "+US[i].ut+" X= "+US[i].x+" Y= "+US[i].y);

}

//US.get(0).mychar

return utsoort;

}


}