Skip to content
Snippets Groups Projects
Commit ea0df2aa authored by BrunoDatoMeneses's avatar BrunoDatoMeneses
Browse files

ADD: context overlaps view

parent 28e915f3
Branches
No related tags found
1 merge request!1Merge Master
...@@ -8,6 +8,7 @@ import mas.agents.Agent; ...@@ -8,6 +8,7 @@ import mas.agents.Agent;
import mas.agents.percept.ContextProjection; import mas.agents.percept.ContextProjection;
import mas.agents.percept.Percept; import mas.agents.percept.Percept;
import mas.agents.context.Context; import mas.agents.context.Context;
import mas.agents.context.ContextOverlap;
import mas.agents.context.Range; import mas.agents.context.Range;
import mas.agents.localModel.TypeLocalModel; import mas.agents.localModel.TypeLocalModel;
import mas.init.amoeba.AMOEBAFactory; import mas.init.amoeba.AMOEBAFactory;
...@@ -129,6 +130,12 @@ public class AMOEBA_UI { ...@@ -129,6 +130,12 @@ public class AMOEBA_UI {
context.computeOverlapsByPercepts(); context.computeOverlapsByPercepts();
context.getNearestNeighbours(); context.getNearestNeighbours();
for(ContextOverlap contextOverlap : context.contextOverlaps) {
usedAmoeba.getScheduler().getView().getTabbedPanel().getPanelTwoDimStandard().drawRectangle(contextOverlap);
}
} }
displayContextInfo(usedAmoeba); displayContextInfo(usedAmoeba);
...@@ -162,7 +169,7 @@ public class AMOEBA_UI { ...@@ -162,7 +169,7 @@ public class AMOEBA_UI {
for(Context context : getContextsAsContexts(usedAmoeba)) { for(Context context : getContextsAsContexts(usedAmoeba)) {
System.out.println("********************************** CONTEXT **********************************"); System.out.println("********************************** CONTEXT **********************************");
System.out.println(context.getName()+" neighbours : "+context.neigbours.size()); System.out.println(context.getName()+" neighbours : "+context.overlaps.size());
...@@ -199,9 +206,9 @@ public class AMOEBA_UI { ...@@ -199,9 +206,9 @@ public class AMOEBA_UI {
} }
} }
for(Context c: context.neigbours.keySet()){ for(Context c: context.overlaps.keySet()){
System.out.println(c.getName()+ " ---> " + context.neigbours.get(c)); System.out.println(c.getName()+ " ---> " + context.overlaps.get(c));
} }
......
...@@ -57,7 +57,10 @@ public class Context extends AbstractContext implements Serializable{ ...@@ -57,7 +57,10 @@ public class Context extends AbstractContext implements Serializable{
private HashMap<Percept, Boolean> perceptValidities = new HashMap<Percept, Boolean>(); private HashMap<Percept, Boolean> perceptValidities = new HashMap<Percept, Boolean>();
public HashMap<Context, HashMap<Percept, Boolean>> contextOverlapsByPercept = new HashMap<Context, HashMap<Percept, Boolean>>(); public HashMap<Context, HashMap<Percept, Boolean>> contextOverlapsByPercept = new HashMap<Context, HashMap<Percept, Boolean>>();
public HashMap<Context,String> neigbours = new HashMap<Context,String>(); public HashMap<Context,String> overlaps = new HashMap<Context,String>();
public ArrayList<ContextOverlap> contextOverlaps = new ArrayList<ContextOverlap>();
public HashMap<Percept , HashMap<String, Context>> nearestNeighbours; public HashMap<Percept , HashMap<String, Context>> nearestNeighbours;
public HashMap<Percept , HashMap<String, ArrayList<Context>>> sortedPossibleNeighbours = new HashMap<Percept , HashMap<String, ArrayList<Context>>>(); public HashMap<Percept , HashMap<String, ArrayList<Context>>> sortedPossibleNeighbours = new HashMap<Percept , HashMap<String, ArrayList<Context>>>();
...@@ -137,7 +140,7 @@ public class Context extends AbstractContext implements Serializable{ ...@@ -137,7 +140,7 @@ public class Context extends AbstractContext implements Serializable{
} }
neigbours = new HashMap<Context,String>(); overlaps = new HashMap<Context,String>();
} }
/** /**
...@@ -299,7 +302,19 @@ public class Context extends AbstractContext implements Serializable{ ...@@ -299,7 +302,19 @@ public class Context extends AbstractContext implements Serializable{
private void NCSDetection_Overlap() { private void NCSDetection_Overlap() {
// TODO Auto-generated method stub
computeOverlapsByPercepts();
for(Context ctxt: overlaps.keySet()) {
ctxt.getOverlapType(this);
}
}
private void getOverlapType(Context context) {
} }
...@@ -965,7 +980,19 @@ private Percept getPerceptWithLesserImpactOnVolume(ArrayList<Percept> containing ...@@ -965,7 +980,19 @@ private Percept getPerceptWithLesserImpactOnVolume(ArrayList<Percept> containing
test = test && contextOverlapsByPercept.get(context).get(percept); test = test && contextOverlapsByPercept.get(context).get(percept);
} }
if(test) { if(test) {
neigbours.put(context, "Overlap");
overlaps.put(context, "Overlap");
HashMap<Percept,HashMap<String,Double>> overlapRanges = new HashMap<Percept,HashMap<String,Double>>();
for(Percept percept : ranges.keySet()) {
overlapRanges.put(percept, new HashMap<String,Double>());
double startRange = percept.getOverlapRangesBetweenContexts(this, context).get("start");
double endRange = percept.getOverlapRangesBetweenContexts(this, context).get("end");
overlapRanges.get(percept).put("start", startRange);
overlapRanges.get(percept).put("end", endRange);
}
contextOverlaps.add(new ContextOverlap(this, context, overlapRanges));
} }
} }
...@@ -981,7 +1008,7 @@ private Percept getPerceptWithLesserImpactOnVolume(ArrayList<Percept> containing ...@@ -981,7 +1008,7 @@ private Percept getPerceptWithLesserImpactOnVolume(ArrayList<Percept> containing
test = test && contextOverlapsByPercept.get(context).get(percept); test = test && contextOverlapsByPercept.get(context).get(percept);
} }
if(test) { if(test) {
neigbours.put(context, "Overlap"); //neigbours.put(context, "Overlap");
} }
......
package mas.agents.context;
import java.util.HashMap;
import mas.agents.percept.Percept;
public class ContextOverlap {
Context context1;
Context context2;
String name;
HashMap<Percept,HashMap<String,Double>> ranges;
HashMap<String,HashMap<String,Double>> rangesByString = new HashMap<String,HashMap<String,Double>>();
public ContextOverlap(Context context1, Context context2, HashMap<Percept,HashMap<String,Double>> ranges) {
this.context1 = context1;
this.context2 = context2;
this.ranges = ranges;
this.name = context1.getName() + context2.getName();
for(Percept percept : ranges.keySet()) {
rangesByString.put(percept.getName(), new HashMap<String,Double>());
double start = ranges.get(percept).get("start");
double end = ranges.get(percept).get("end");
rangesByString.get(percept.getName()).put("start", start);
rangesByString.get(percept.getName()).put("end", end);
}
}
public HashMap<String,Double> getRanges(Object perceptString) {
return rangesByString.get(perceptString);
}
public String getName() {
return name;
}
public String toString() {
String s = "";
s += "Name : " + name + "\n";
s += "Context 1 : " + context1.getName() + "\n";
s += "Context 2 : " + context2.getName() + "\n";
for(Percept percept : ranges.keySet()) {
s += percept.getName() + "\n";
s += "Start " +ranges.get(percept).get("start") + "\n";
s += "End " +ranges.get(percept).get("end") + "\n";
}
return s;
}
}
...@@ -599,6 +599,10 @@ public class MainPanel extends JPanel{ ...@@ -599,6 +599,10 @@ public class MainPanel extends JPanel{
public ArrayList<Observation> getObservationList() { public ArrayList<Observation> getObservationList() {
return tabbedPanel.getObservationList(); return tabbedPanel.getObservationList();
} }
public MainTabbedPanel getTabbedPanel() {
return tabbedPanel;
}
......
...@@ -171,4 +171,8 @@ public class MainTabbedPanel extends JTabbedPane{ ...@@ -171,4 +171,8 @@ public class MainTabbedPanel extends JTabbedPane{
return panelTwoDimStandard.getObservationList(); return panelTwoDimStandard.getObservationList();
} }
public GrapheTwoDimPanelStandard getPanelTwoDimStandard() {
return panelTwoDimStandard;
}
} }
\ No newline at end of file
...@@ -56,6 +56,7 @@ import mas.agents.Agent; ...@@ -56,6 +56,7 @@ import mas.agents.Agent;
import mas.agents.percept.Percept; import mas.agents.percept.Percept;
import mas.agents.SystemAgent; import mas.agents.SystemAgent;
import mas.agents.context.Context; import mas.agents.context.Context;
import mas.agents.context.ContextOverlap;
import mas.agents.context.Range; import mas.agents.context.Range;
import mas.agents.head.Head; import mas.agents.head.Head;
import visualization.graphView.GraphicVisualization2Dim; import visualization.graphView.GraphicVisualization2Dim;
...@@ -924,15 +925,15 @@ private void startPanelController() { ...@@ -924,15 +925,15 @@ private void startPanelController() {
*/ */
/* Get the min-max value of each percept and update graph visualization 2-Dim */ /* Get the min-max value of each percept and update graph visualization 2-Dim */
private void getPerceptMinMaxValues2Dim() { private void getPerceptMinMaxValues2Dim() {
ArrayList<Percept> perceptList = world.getAllPercept(); ArrayList<Percept> perceps = world.getAllPercept();
for (int i=0; i<temporalGraph.get2DimGraphList().size(); i++) { for (int i=0; i<temporalGraph.get2DimGraphList().size(); i++) {
String contextID = temporalGraph.get2DimGraphList().get(i).getContextID(); String contextID = temporalGraph.get2DimGraphList().get(i).getContextID();
if (world.getAgents().get(contextID) != null) { if (world.getAgents().get(contextID) != null) {
Context c = (Context) world.getAgents().get(contextID); Context c = (Context) world.getAgents().get(contextID);
for (int j=0; j<perceptList.size(); j++) { for (int j=0; j<perceps.size(); j++) {
double min = c.getRanges().get(perceptList.get(j)).getEnd(); double min = c.getRanges().get(perceps.get(j)).getEnd();
double max = c.getRanges().get(perceptList.get(j)).getStart(); double max = c.getRanges().get(perceps.get(j)).getStart();
temporalGraph.get2DimGraphList().get(i).updateData(j*2, currentTick, min); temporalGraph.get2DimGraphList().get(i).updateData(j*2, currentTick, min);
temporalGraph.get2DimGraphList().get(i).updateData((j*2)+1, currentTick, max); temporalGraph.get2DimGraphList().get(i).updateData((j*2)+1, currentTick, max);
} }
...@@ -1044,12 +1045,13 @@ private void startPanelController() { ...@@ -1044,12 +1045,13 @@ private void startPanelController() {
} }
for (String name : world.getAgents().keySet()) { for (String name : world.getAgents().keySet()) {
SystemAgent a = world.getAgents().get(name); SystemAgent agent = world.getAgents().get(name);
if (a instanceof Context) { if (agent instanceof Context) {
Context n = (Context)a; Context context = (Context)agent;
// Store values into array list of context of observation // Store values into array list of context of observation
if (rememberState) { if (rememberState) {
obsEle.addContextList(new Context(n)); obsEle.addContextList(new Context(context));
} }
Node node; Node node;
...@@ -1059,30 +1061,21 @@ private void startPanelController() { ...@@ -1059,30 +1061,21 @@ private void startPanelController() {
graph.addNode(name); graph.addNode(name);
node = graph.getNode(name); node = graph.getNode(name);
node.addAttribute("ui.class", node.addAttribute("ui.class",
a.getClass().getSimpleName()); agent.getClass().getSimpleName());
node.addAttribute("ui.label", a.getName()); node.addAttribute("ui.label", agent.getName());
} }
node.addAttribute("EXIST", true); node.addAttribute("EXIST", true);
if (n.getRanges().size() > 0){ if (context.getRanges().size() > 0){
// System.out.println(n.getRanges().get(world.getAgents().get("Sensor")).getStart() + " " + n.getRanges().get(world.getAgents().get("SensorPerturbation")).getStart()); drawRectangle(node, context);
double lengthX = n.getRanges().get(world.getAgents().get(comboDimX.getSelectedItem())).getEnd()
- n.getRanges().get(world.getAgents().get(comboDimX.getSelectedItem())).getStart();
double lengthY = n.getRanges().get(world.getAgents().get(comboDimY.getSelectedItem())).getEnd()
- n.getRanges().get(world.getAgents().get(comboDimY.getSelectedItem())).getStart();
node.setAttribute("xyz", n.getRanges().get(world.getAgents().get(comboDimX.getSelectedItem())).getStart() + (0.5*lengthX),
n.getRanges().get(world.getAgents().get(comboDimY.getSelectedItem())).getStart() + (0.5*lengthY), 0);
// node.setAttribute("xyz", n.getRanges().get(world.getAgents().get("Sensor")).getValue(), n.getRanges().get(world.getAgents().get("SensorPerturbation")).getValue(), 0);
// node.addAttribute("ui.size", "8px");
node.addAttribute("ui.style", "size: " + doubleFormat.format(lengthX) + "gu, " + doubleFormat.format(lengthY) +"gu;");
} }
if (n.isBestContext()) {
if (context.isBestContext()) {
node.addAttribute("ui.class","BestContextSelected"); node.addAttribute("ui.class","BestContextSelected");
} else if (n.getNSelection() > 0) { } else if (context.getNSelection() > 0) {
node.addAttribute("ui.class","ContextAwaked"); node.addAttribute("ui.class","ContextAwaked");
if (n.getNSelection() == 3) { if (context.getNSelection() == 3) {
node.addAttribute("ui.class","ContextSelected"); node.addAttribute("ui.class","ContextSelected");
} }
} }
...@@ -1104,13 +1097,13 @@ private void startPanelController() { ...@@ -1104,13 +1097,13 @@ private void startPanelController() {
}*/ }*/
//TODO //TODO
n.setnSelection(0); context.setnSelection(0);
} }
if (a instanceof Head) { if (agent instanceof Head) {
Head n = (Head)a; Head head = (Head)agent;
controller = n; //TODO dirty controller = head; //TODO dirty
Node node; Node node;
if (graph.getNode(name) != null) { if (graph.getNode(name) != null) {
...@@ -1211,6 +1204,9 @@ private void startPanelController() { ...@@ -1211,6 +1204,9 @@ private void startPanelController() {
} }
//---------------------------------------------------Add scale---------------------------------------------------- //---------------------------------------------------Add scale----------------------------------------------------
// if (graph.getNode("scale") == null ) { // if (graph.getNode("scale") == null ) {
// graph.addNode("scale"); // graph.addNode("scale");
...@@ -1227,6 +1223,54 @@ private void startPanelController() { ...@@ -1227,6 +1223,54 @@ private void startPanelController() {
} }
public void drawRectangle(ContextOverlap contextOverlap){
Node node;
if (graph.getNode(contextOverlap.getName()) != null) {
node = graph.getNode(contextOverlap.getName());
} else {
graph.addNode(contextOverlap.getName());
node = graph.getNode(contextOverlap.getName());
node.addAttribute("ui.class", contextOverlap.getClass().getSimpleName());
node.addAttribute("ui.label", contextOverlap.getName());
}
node.addAttribute("EXIST", true);
double lengthX = contextOverlap.getRanges(comboDimX.getSelectedItem()).get("end")
- contextOverlap.getRanges(comboDimX.getSelectedItem()).get("start");
double lengthY = contextOverlap.getRanges(comboDimY.getSelectedItem()).get("end")
- contextOverlap.getRanges(comboDimY.getSelectedItem()).get("start");
node.setAttribute("xyz", contextOverlap.getRanges(comboDimX.getSelectedItem()).get("start") + (0.5*lengthX),
contextOverlap.getRanges(comboDimY.getSelectedItem()).get("start") + (0.5*lengthY), 0);
node.addAttribute("ui.style", "size: " + doubleFormat.format(lengthX) + "gu, " + doubleFormat.format(lengthY) +"gu;");
node.addAttribute("ui.class","Rectangle");
node.addAttribute("ui.class","ContextColorDynamic");
node.setAttribute("ui.color", 100);
}
public void drawRectangle (Node node, Context context) {
// System.out.println(n.getRanges().get(world.getAgents().get("Sensor")).getStart() + " " + n.getRanges().get(world.getAgents().get("SensorPerturbation")).getStart());
double lengthX = context.getRanges().get(world.getAgents().get(comboDimX.getSelectedItem())).getEnd()
- context.getRanges().get(world.getAgents().get(comboDimX.getSelectedItem())).getStart();
double lengthY = context.getRanges().get(world.getAgents().get(comboDimY.getSelectedItem())).getEnd()
- context.getRanges().get(world.getAgents().get(comboDimY.getSelectedItem())).getStart();
node.setAttribute("xyz", context.getRanges().get(world.getAgents().get(comboDimX.getSelectedItem())).getStart() + (0.5*lengthX),
context.getRanges().get(world.getAgents().get(comboDimY.getSelectedItem())).getStart() + (0.5*lengthY), 0);
// node.setAttribute("xyz", n.getRanges().get(world.getAgents().get("Sensor")).getValue(), n.getRanges().get(world.getAgents().get("SensorPerturbation")).getValue(), 0);
// node.addAttribute("ui.size", "8px");
node.addAttribute("ui.style", "size: " + doubleFormat.format(lengthX) + "gu, " + doubleFormat.format(lengthY) +"gu;");
}
public void highlightContextNeighbours(Context context) { public void highlightContextNeighbours(Context context) {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment