📄 avg_incrrate.java
字号:
package com.strongit.bi.mbs.model;
/**
*
*/
import java.math.BigDecimal;
import java.util.List;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
/**
* <p>平均增长率模型</p>
* <p>Description:平均增长率模型的算法(发展性分析)</p>
*
*
*/
public class Avg_IncrRate {
public String stat(String xmlString)
{
Document requestDoc = null;
try {
requestDoc = DocumentHelper.parseText(xmlString);
} catch (DocumentException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
List<Element> dataList=requestDoc.selectNodes("/Submodel/Data/RowData/ColumnData");
double[] originData=new double[dataList.size()];
//获取原始数据
for(int i=0;i<dataList.size();i++)
{
if(dataList.get(i).getText()!=null&&!"".equals(dataList.get(i).getText()))
{
originData[i]=Double.valueOf(dataList.get(i).getText()).doubleValue();
}
}
//获取时间段长度
Element timespanElement=(Element)requestDoc.selectSingleNode("/Submodel/Common/Timespan");
int timespan=0;
if(timespanElement.getText()!=null&&!"".equals(timespanElement.getText()))
timespan=Integer.valueOf(timespanElement.getText()).intValue();
//获取预测时间长度
Element fcstTimespanElement=(Element)requestDoc.selectSingleNode("/Submodel/Common/FcstTimespan");
int fcstTimespan=0;
if(fcstTimespanElement.getText()!=null&&!"".equals(fcstTimespanElement.getText()))
fcstTimespan=Integer.valueOf(fcstTimespanElement.getText()).intValue();
double[] Avg_IncrRate_array = new double[timespan + fcstTimespan];//平均增长率
double Avg_IncrRate_a = 0;
Avg_IncrRate_array[0] = 0;
double k = 1.0;
for (int i = 1; i < timespan; i++) {
if(originData[0]!=0)
{
Avg_IncrRate_a = originData[i] / originData[0];
if(Avg_IncrRate_a>=0)
{
double b = 1 / k;
BigDecimal c = new BigDecimal( (Math.pow(Avg_IncrRate_a, b) - 1) * 100); //求幂
Avg_IncrRate_array[i] = c.setScale(3, BigDecimal.ROUND_HALF_UP).
doubleValue();
}
else
{
Avg_IncrRate_array[i]=0;
}
}
else
{
Avg_IncrRate_array[i] = 0;
}
k = k + 1.0;
}
// 添加应用该模型后的时序结果
Element resultDatas=requestDoc.getRootElement().element("ResultDatas");
Element timeResultData=resultDatas.addElement("ResultData").addAttribute("view","TimeSeries");
Element timeResultRow=timeResultData.addElement("RowData").addAttribute("label", "平均增长率");
for(int i=0;i<Avg_IncrRate_array.length;i++)
{
timeResultRow.addElement("ColumnData").setText(String.valueOf(Avg_IncrRate_array[i]));
}
return requestDoc.asXML();
}
// public double[] stat(double[] origin_data, String[] parameter_array,
// int amount_parameter, int timespan, int fcst_timespan, double[][] variable_index) {
//
//double[] Avg_IncrRate_array = new double[timespan + fcst_timespan];//平均增长率
//
//
//if (String.valueOf(timespan) == null || timespan < 0) {
//timespan = 1;
//}
//if (String.valueOf(fcst_timespan) == null || fcst_timespan < 0) {
//fcst_timespan = 0;
//}
//double Avg_IncrRate_a = 0;
//Avg_IncrRate_array[0] = 0;
//double k = 1.0;
//for (int i = 1; i < timespan; i++) {
//if(origin_data[0]!=0)
//{
//Avg_IncrRate_a = origin_data[i] / origin_data[0];
//if(Avg_IncrRate_a>=0)
//{
//double b = 1 / k;
//BigDecimal c = new BigDecimal( (Math.pow(Avg_IncrRate_a, b) - 1) * 100); //求幂
//Avg_IncrRate_array[i] = c.setScale(3, BigDecimal.ROUND_HALF_UP).
// doubleValue();
//}
//else
//{
// Avg_IncrRate_array[i]=0;
//}
//}
//else
//{
//Avg_IncrRate_array[i] = 0;
//}
//k = k + 1.0;
//}
//return Avg_IncrRate_array;
//}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -