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

📄 multiexpcoscurvefitting.java

📁 基于差分进化与粒子群混合算法优化源程序,这是一个java语言编制的源程序,很实用.
💻 JAVA
字号:
/**
 * Description: Curve fitting function
 *
 * @ Author        Create/Modi     Note
 * Xiaofeng Xie    Jun 26, 2008
 *
 * @version 1.0
 * @Since MAOS1.0
 *
 */

package problem.custom;

import Global.*;

public class MultiExpCosCurveFitting extends AbstractCurveFitting {
  private int NG = 2;

  //temp
  private static final int Neach = 4;

  public MultiExpCosCurveFitting() throws Exception {
    super(2*Neach);
  }

  public void initEncoder() throws Exception {
    if (NG!=2) initParams(NG*Neach);
    super.initEncoder();
    setDefaultXRanges();
  }

  public boolean setParameter(String name, String value) {
    if (super.setParameter(name, value)) return true;
    else if (name.equalsIgnoreCase("NG"))  NG=new Integer(value).intValue();
    else return false;
    return true;
  }

  private void setDefaultXRanges() {
    double maxY = BasicArray.getMaxValue(responseValues);
    double minY = BasicArray.getMinValue(responseValues);
    double minX = BasicArray.getMinValue(oneDparamPoints);
    double maxX = BasicArray.getMaxValue(oneDparamPoints);
    for(int i=0; i<NG; i++) {
      setDefaultXAt(i*Neach,   minY, maxY);
      setDefaultXAt(i*Neach+1, 0, 1000);
      setDefaultXAt(i*Neach+2, -(maxX-minX)/2, (maxX-minX)/2);
      setDefaultXAt(i*Neach+3, -10, 10);
    }
  }

  protected double MultiGuassianFuncValue(double x, double[] VX, int startID, int guassN) {
    double realV = 0;
    for (int i=0; i<guassN; i++) {
      realV+= getGuassianFuncValue(VX[startID+i*Neach], VX[startID+1+i*Neach], VX[startID+2+i*Neach], VX[startID+3+i*Neach], x);
    }
    return realV;
  }

  // y = sum_(i=1,...,N) a_i*exp[-b_i* (1 + c_i * cos(n_i*x + d_i)) ]
  protected double getGuassianFuncValue(double a, double b, double d, double n, double x) {
    return a*Math.exp(-b*(1+Math.cos(n*x+d)));
  }

  protected double getFuncValue(double x, double[] VX) {
    return MultiGuassianFuncValue(Math.abs( x), VX, 0, NG);
  }

}

⌨️ 快捷键说明

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