Exemplo n.º 1
0
  /**
   * コンストラクタ(geniusから呼び出し)
   *
   * @param utilitySpace 自分の効用空間
   * @param deadlines 交渉の制限時間
   * @param timeline 経過時間(0~1)
   * @param randomSeed 乱数用シード
   */
  public AgentHP(
      UtilitySpace utilitySpace, Deadline deadlines, Timeline timeline, long randomSeed) {

    // 親クラスコンストラクタ
    super(utilitySpace, deadlines, timeline, randomSeed);

    // 予約値取得
    reservationValue = utilitySpace.getReservationValueUndiscounted();

    // 初期化
    partyNum = 0;
    issueNum = 0;
    targetBid = null;
    underlimitUtility = 0.0;
    logNum = null;
    TemplateLogBidCountHash = null;
    TemplateLogBidValueHash = null;
    logBid = null;
    logBidCountHash = null;
    logBidValueHash = null;
    participantList = null;
    compareSize = 0;
    compareResultArray = null;
    issueWeightArray = null;
    estimateCount = null;
    weightUtilSpace = 0.0;
    addupValueHash = null;
    addupWeightArray = null;
    prevAddupTiming = 0;
    sumUtility = null;
    sumUtility2 = null;
    estimateMax = 0.0;
    utilityBarometer = 0.0;

    // 論点数取得
    issueNum = utilitySpace.getDomain().getIssues().size();

    // 提案保存Hashテンプレ&合算効用空間保存Hash作成
    TemplateLogBidCountHash = new HashMap[issueNum];
    TemplateLogBidValueHash = new HashMap[issueNum];
    addupValueHash = new HashMap[issueNum];
    for (Issue tmp : utilitySpace.getDomain().getIssues()) {

      int issue_num = tmp.getNumber(); // 論点番号
      IssueDiscrete tmpDiscrete = (IssueDiscrete) tmp;

      TemplateLogBidValueHash[issue_num - 1] = new HashMap<String, Double>();
      TemplateLogBidCountHash[issue_num - 1] = new HashMap<String, Integer>();
      addupValueHash[issue_num - 1] = new HashMap<String, Double>();
      for (int j = 0; j < tmpDiscrete.getNumberOfValues(); j++) {
        TemplateLogBidValueHash[issue_num - 1].put(tmpDiscrete.getValue(j).toString(), 0.0);
        TemplateLogBidCountHash[issue_num - 1].put(tmpDiscrete.getValue(j).toString(), 0);
        addupValueHash[issue_num - 1].put(tmpDiscrete.getValue(j).toString(), 0.0);
      }
    }

    // 参加者名と配列要素数対応Hash作成
    participantList = new HashMap<String, Integer>();

    // 提案作成最低効用値初期値
    underlimitUtility = 1.0;

    // 効用空間合算の自分の重み初期値
    weightUtilSpace = 1.0;
  }