?? ahptest.java
字號:
package Ahp;
public class ahptest
{
int colwidth;
int rowhigth;
double x1[]=new double[20];
double x2[]=new double[20];
double s1[]=new double[20];
double standval[][]=new double[20][20];
double input[][]=new double[20][20];
double rollput[][]=new double[20][20];
double[][] myrollput;
double[] verifyput=new double[20];
double RI[]={0,0,0.52,0.89,1.12,1.26,1.36,1.41,1.46,1.49,1.52,1.54,1.56,1.58,1.59};
//RI數據不夠,至少需要20個數
public void setValue(int v1,double[][] v2){
colwidth=v1;
rowhigth=v1;
input=v2;
}
public double getcolsum(int colid,double[] inputval)//求數組中各列值之和
{
double x;
int i;
for(i=0;i<colwidth;i++){
x1[colid]=x1[colid]+inputval[i];
//System.out.println(x1[colid]);
}
x=x1[colid];
return x;
}
public double[] standardvalue(double gene,double[] inputval)//標準化
{
int i;
for(i=0;i<colwidth;i++){
s1[i]=inputval[i]/gene;
//System.out.println(s1[i]+"&");
}
return s1;
}
public double eigenvector(int rowid,double[] inputval)//計算特征向量
{
double x;
int i;
for(i=0;i<colwidth;i++){
//System.out.println(rowid);
x1[rowid]=x1[rowid]+inputval[i];
}
x=x1[rowid];
//System.out.println(x);
return x/colwidth;
}
public double[][] rollput()//轉置
{
int i,j;
for(i=0;i<rowhigth;i++){
for(j=0;j<colwidth;j++){
rollput[j][i]=input[i][j];
//System.out.println(rollput[j][i]+"&"+i+"&"+j);
}
}
return rollput;
}
public double[] getValue(){
int i,j,k;
myrollput=rollput();//數組轉置
for(i=0;i<colwidth;i++){
x1[i]=getcolsum(i,myrollput[i]);
//System.out.println(x1[i]);
}
//求和
for(i=0;i<colwidth;i++){
standval[i]=standardvalue(x1[i],myrollput[i]);
for(j=0;j<colwidth;j++){
//System.out.println(standval[i][j]+"&"+i+"&"+j);
for(k=0;k<rowhigth;k++){
if(k==j){
x2[k]=x2[k]+standval[i][j];
//System.out.println(x2[k]+"&"+standval[i][j]+k);
}
}
}
}
//標準化
for(i=0;i<colwidth;i++){
x2[i]=x2[i]/colwidth;
}
//計算特征向量
return x2;
//for(i=0;i<colwidth;i++){
// System.out.println(x2[i]);
//}
}
public boolean getVerify(){
int i,j;
double[] xver;
double CI,CR=0;
double MIN_VALUE=0.1;
double myverify=0;
xver=getValue();
for(i=0;i<colwidth;i++){
for(j=0;j<colwidth;j++){
verifyput[i]=verifyput[i]+input[i][j]*xver[j];
}
}
//計算賦權之和
for(i=0;i<colwidth;i++){
verifyput[i]=verifyput[i]/xver[i];
}
for(i=0;i<colwidth;i++){
myverify=myverify+verifyput[i];
}
myverify=myverify/colwidth;
//計算平均值
CI=(myverify-colwidth)/(colwidth-1);
i=0;
if(i<2){
return true;
}
else{
for(i=0;i<colwidth;i++){
if(i+1==colwidth){
CR=CI/RI[i];
}
}
//計算一致性率
if(CR<MIN_VALUE)
{
return true;
}
else
{
return false;
}
}
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -