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

📄 trafficvolume.java

📁 人工智能中Agent开发包。多 Agent 系统是处理自治 Agent 之间知识层的协作问题
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
   public synchronized String[] getDistributionByAgentLabels() {
      String[] labels = new String[allTraffic.size()];
      Enumeration enum = allTraffic.keys();
      for(int i = 0; i < labels.length; i++ )
         labels[i] = (String)enum.nextElement();
      return labels;
   }

   public String[] getDistributionByAgentKeys() {
      return Performative.MESSAGE_TYPES;
   }

   public synchronized double[][] getDistributionByAgentData() {
      if ( allTraffic.isEmpty() ) return null;

      double[][] result =
         new double[allTraffic.size()][Performative.MESSAGE_TYPES.length];
      for(int i = 0; i < result.length; i++ )
      for(int j = 0; j < result[i].length; j++ )
         result[i][j] = 0.0;

      Enumeration enum = allTraffic.elements();
      Hashtable inner;
      for(int i = 0; i < result.length; i++ ) {
         inner = (Hashtable) enum.nextElement();
         Enumeration elements = inner.elements();
         int[] data;
         while( elements.hasMoreElements() ) {
            data = (int[])elements.nextElement();
            for(int j = 0; j < result[i].length; j++ )
               result[i][j] += data[j];
         }
      }
      return result;
   }

   public synchronized String[] getCurrentGoals() {
      String[] goals = new String[goalTraffic.size()];
      Enumeration enum = goalTraffic.keys();
      for(int i = 0; i < goals.length; i++ )
         goals[i] = (String)enum.nextElement();
      return goals;
   }

   public String[] getDistributionByGoalKeys() {
      return Engine.COORDINATION_MESSAGE_TYPES;
   }

   public synchronized String[] getDistributionByGoalLabels(String[] goals) {
      if ( goals == null || goals.length == 0 ) return null;
      Vector List = new Vector();
      for(int i = 0; i < goals.length; i++ ) {
         Hashtable outer = (Hashtable)goalTraffic.get(goals[i]);
         if ( outer != null ) {
            Enumeration enum = outer.keys();
            while( enum.hasMoreElements() ) {
               String sender = (String)enum.nextElement();
               if ( !List.contains(sender) )
                  List.addElement(sender);
            }
         }
      }
      return Misc.stringArray(List);
   }

   public synchronized Hashtable getNegotiationGoals() {
      Hashtable output = new Hashtable();
      String rootId, goalId, Id;
      Hashtable outer, inner;
      HSet entry;
      Enumeration goals, agents;
      Enumeration enum = negotiationTraffic.keys();
      while( enum.hasMoreElements() ) {
         rootId = (String)enum.nextElement();
	 outer = (Hashtable)negotiationTraffic.get(rootId);
         goals = outer.keys();
         entry = new HSet();
         while( goals.hasMoreElements() ) {
            goalId = (String)goals.nextElement();
            inner = (Hashtable)outer.get(goalId);
            agents = inner.keys();
            while( agents.hasMoreElements() ) {
               Id = (String)agents.nextElement();
               entry.add(goalId + " " + Id);
            }
         }
         output.put(rootId,entry);
      }
      return output;
   }

   public synchronized double[][] getDistributionByNegotiationDialogueXData(
      String[] user_goals) {

      if ( user_goals == null || user_goals.length == 0 ) return null;

      /*
         user_goals[0] : rootId
         user_goals[1] : goalId[Fact] sender receiver
      */

      MsgContentHandler hd = new MsgContentHandler(user_goals[1]);
      String goalId = hd.tag();
      String Id = hd.data();
      String sender = hd.data(0);
      String receiver = hd.data(1);

      Hashtable outer = (Hashtable)negotiationTraffic.get(user_goals[0]);
      Hashtable inner = (Hashtable)outer.get(goalId);
      Hashtable innermost = (Hashtable)inner.get(Id);
      Vector senderList = (Vector)innermost.get(sender);
      Vector receiverList = (Vector)innermost.get(receiver);

      int senderSize = (senderList != null) ? senderList.size() : 0;
      int receiverSize = (receiverList != null) ? receiverList.size() : 0;
      int num = Math.max(senderSize,receiverSize);

      if ( num == 0 ) return null;

      double[][] output = new double[2][num];
      for(int i = 0; i < output.length; i++ )
      for(int j = 0; j < output[i].length; j++ )
         output[i][j] = (double)j;
      return output;
   }

   public synchronized String[] getDistributionByNegotiationDialogueKeys(
      String[] user_goals) {
      if ( user_goals == null || user_goals.length == 0 )
         return null;

      /*
         user_goals[0] : rootId
         user_goals[1] : goalId[Fact] sender receiver
      */

      MsgContentHandler hd = new MsgContentHandler(user_goals[1]);
      String sender = hd.data(0);
      String receiver = hd.data(1);

      String[] output = new String[2];
      output[0] = sender;
      output[1] = receiver;
      return output;
   }

   public synchronized double[][] getDistributionByNegotiationDialogueData(
      String[] goals) {

      if ( goals == null || goals.length == 0 ) return null;

      MsgContentHandler hd = new MsgContentHandler(goals[1]);
      String goalId = hd.tag();
      String Id = hd.data();
      String sender = hd.data(0);
      String receiver = hd.data(1);

      Hashtable outer = (Hashtable)negotiationTraffic.get(goals[0]);
      Hashtable inner = (Hashtable)outer.get(goalId);
      Hashtable innermost = (Hashtable)inner.get(Id);
      Vector senderList = (Vector)innermost.get(sender);
      Vector receiverList = (Vector)innermost.get(receiver);

      double[][] result = new double[2][];
      Double value;

      int senderSize = (senderList != null) ? senderList.size() : 0;
      result[0] = new double[senderSize];
      for(int i = 0; senderList != null && i < senderSize; i++ ) {
         value = (Double)senderList.elementAt(i);
         result[0][i] = value.doubleValue();
      }

      int receiverSize = (receiverList != null) ? receiverList.size() : 0;
      result[1] = new double[receiverSize];
      for(int i = 0; receiverList != null && i < receiverSize; i++ ) {
         value = (Double)receiverList.elementAt(i);
         result[1][i] = value.doubleValue();
      }
      return result;
   }

   public synchronized double[][] getDistributionByGoalData(String[] goals) {
      if ( goals == null || goals.length == 0 ) return null;
      String[] senders = getDistributionByGoalLabels(goals);
      if ( senders == null || senders.length == 0 ) return null;

      double[][] result = new double[senders.length][Engine.COORDINATION_MESSAGE_TYPES.length];
      for(int i = 0; i < result.length; i++ )
      for(int j = 0; j < result[i].length; j++ )
         result[i][j] = 0.0;

      Hashtable outer, inner;
      int[] data;
      for(int i = 0; i < goals.length; i++ ) {
         outer = (Hashtable)goalTraffic.get(goals[i]);
         if ( outer != null ) {
            for(int j = 0; j < senders.length; j++ ) {
               inner = (Hashtable)outer.get(senders[j]);
               if ( inner != null ) {
                  Enumeration enum = inner.elements();
                  while( enum.hasMoreElements() ) {
                     data = (int[])enum.nextElement();
                     for(int k = 0; k < data.length; k++ )
                        result[j][k] += data[k];
                  }
               }
            }
         }
      }
      return result;
   }
   public synchronized String[] getInterAgentTrafficLabels() {
      String[] labels = new String[allTraffic.size()];
      Enumeration enum = allTraffic.keys();
      for(int i = 0; i < labels.length; i++ )
         labels[i] = (String)enum.nextElement();
      return labels;
   }
   public synchronized double[][] getInterAgentTrafficData() {
      if ( allTraffic.isEmpty() ) return null;

      String[] labels = getInterAgentTrafficLabels();
      double[][] result = new double[labels.length][labels.length];
      for(int i = 0; i < result.length; i++ )
      for(int j = 0; j < result[i].length; j++ )
         result[i][j] = 0.0;

      Hashtable inner;
      int[] data;
      int sum;
      for(int i = 0; i < result.length; i++ ) {
         inner = (Hashtable) allTraffic.get(labels[i]);
         for(int j = 0; j < result[i].length; j++ ) {
            sum = 0;
            data = (int[])inner.get(labels[j]);
            if ( data != null ) {
               for(int k = 0; k < data.length; k++ )
                  sum += data[k];
            }
            result[i][j] = sum;
         }
      }
      return result;
   }

}

⌨️ 快捷键说明

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