📄 trafficvolume.java
字号:
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 + -