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;
}
}