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

📄 basicibound.java

📁 用于求解TSP(Traveling salesman problem
💻 JAVA
字号:
/**
 * Description: provide an integer bound, and the corresponding operations
 *
 * @ Author        Create/Modi     Note
 * Xiaofeng Xie    Apr. 12, 2003     xiaofengxie@tsinghua.org.cn
 */

package Global.basic.data.bound;

import Global.basic.*;
import Global.define.*;
import Global.methods.*;
import Global.system.*;

public class BasicIBound extends BasicObject {
  public static final int N0_UPBOUND = GlobalValue.MAXINTEGER;
  public static final int N0_LOWBOUND = GlobalValue.MININTEGER;

  public int minValue = N0_LOWBOUND;
  public int maxValue = N0_UPBOUND;
  public BasicIBound() {
  }

  public BasicIBound(int val) {
    this.setFixBound(val);
  }

  public BasicIBound(int min, int max) {
    minValue = Math.min(min, max);
    maxValue = Math.max(min, max);
  }

  public int getLength() {
    return Math.abs(maxValue-minValue);
  }

  public boolean isSatisfyCondition(int child){
    if(child > maxValue || child < minValue) {
      return(false);
    }
    return(true);
  }

  public void moveValue(int value) {
    minValue += value;
    maxValue += value;
  }

  public void setFixBound(int val) {
    minValue = val;
    maxValue = val;
  }

//  public static int boundAdjust(int realV, int minV, int maxV, String warnTitle, Object warnObj) {
//    if (realV>maxV) {
//      try {
//        new GradedInfo(warnObj, GradedInfo.WARNING, warnTitle+": "+realV+", set to maximum value "+maxV).showMessage(warnObj.toString()+warnTitle+"Max");
//      } catch (Exception e) {}
//      realV = maxV;
//    }
//    if (realV<minV) {
//      try {
//        new GradedInfo(warnObj, GradedInfo.WARNING, warnTitle+": "+realV+", set to minimum value" +minV).showMessage(warnObj.toString()+warnTitle+"Min");
//      } catch (Exception e) {}
//      realV = minV;
//    }
//    return realV;
//  }

  public int boundAdjust(int value){
    if(value > maxValue) {
      value = maxValue;
    } else if (value < minValue) {
      value = minValue;
    }
    return value;
  }

  public int periodAdjust (int value) {
    if(value > maxValue) {
      int extendsLen = (value-maxValue)%getLength();
      value = minValue+extendsLen;
    } else if (value < minValue) {
      int extendsLen = (minValue-value)%getLength();
      value = maxValue-extendsLen;
    }
    return value;
  }

  public static BasicIBound getBound(int[] data) {
    BasicIBound bound = new BasicIBound();
    if(data!=null) {
      if(data.length>0) {
        bound.minValue = data[0];
        bound.maxValue = data[0];
        for(int i=1; i<data.length; i++) {
          bound.minValue = Math.min(bound.minValue, data[i]);
          bound.maxValue = Math.max(bound.maxValue, data[i]);
        }

      }
    }
    return bound;
  }

  public int randomAdjust (int value){
    if(value > maxValue || value < minValue) {
      value =  getRandomValue();
    }
    return value;
  }
  public String toRangeString(){
    return "["+TypeConverter.toString(minValue)+","+TypeConverter.toString(maxValue)+"]";
  }

  public String toDESCString(){
    return "MIN="+TypeConverter.toString(minValue)+" MAX="+TypeConverter.toString(maxValue);
  }

  public int getRandomValue(){
    return RandomGenerator.intRangeRandom(minValue, maxValue);
  }
}

⌨️ 快捷键说明

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