Ignore:
Timestamp:
08/23/14 17:19:39 (10 years ago)
Author:
rkrimmel
Message:

HarmonizeIterationinstancemodel? DOES need to be called after iteration detection....

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/autoquest-core-tasktrees-alignment/src/main/java/de/ugoe/cs/autoquest/tasktrees/alignment/matrix/ObjectDistanceSubstitionMatrix.java

    r1687 r1692  
    33 
    44import java.util.HashMap; 
     5import java.util.HashSet; 
    56import java.util.Iterator; 
    67 
     
    1112import de.ugoe.cs.autoquest.tasktrees.treeifc.ITask; 
    1213import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskInstance; 
    13 import de.ugoe.cs.autoquest.usageprofiles.SymbolMap; 
    1414 
    1515 
    1616public class ObjectDistanceSubstitionMatrix implements SubstitutionMatrix { 
    1717 
    18         // private ArrayList<int[][]> matrix; 
    1918        HashMap<Integer, Integer> idmapping; 
    2019        private TriangleMatrix matrix; 
    21         private SymbolMap<ITaskInstance, ITask> uniqueTasks; 
     20        private HashSet<ITask> uniqueTasks; 
    2221        private double gapPenalty;  
    2322        private int index = 0; 
     
    2625         
    2726        public ObjectDistanceSubstitionMatrix( 
    28                         SymbolMap<ITaskInstance, ITask> uniqueTasks,float positiveThreshold, int gapPenalty) { 
     27                        HashSet<ITask> uniqueTasks,float positiveThreshold, int gapPenalty) { 
    2928                this.uniqueTasks = uniqueTasks; 
    3029                this.positiveThreshold = positiveThreshold; 
     
    4948                int index2=-1; 
    5049                float distance=0; 
    51                  
    52                 //TODO: Nicht ueber Symbols sondern ueber values, wenn Eventtask -> getInstances()->get(0) 
    53                 for (Iterator<ITaskInstance> it = uniqueTasks.getSymbols().iterator(); it 
    54                                 .hasNext();) { 
    55                         Object obj1 = it.next(); 
    56                         for (Iterator<ITaskInstance> jt = uniqueTasks.getSymbols() 
    57                                         .iterator(); jt.hasNext();) { 
    58                          
     50                for (Iterator<ITask> it = uniqueTasks.iterator(); it.hasNext();) { 
     51                        ITask task1 = it.next(); 
     52                        for (Iterator<ITask> jt = uniqueTasks.iterator(); jt.hasNext();) { 
     53                                ITask task2 = jt.next(); 
     54                                ITaskInstance ti1 = null; 
     55                                ITaskInstance ti2 = null; 
     56                                //TODO This seems ugly 
     57                                if(task1.getInstances().size() > 0) { 
     58                                        ti1 = (ITaskInstance) task1.getInstances().iterator().next(); 
     59                                } 
     60                                if(task2.getInstances().size() > 0) { 
     61                                        ti2 = (ITaskInstance) task2.getInstances().iterator().next(); 
     62                                } 
    5963                                IEventTaskInstance eti1 = null; 
    60                                 ITask task1 = null; 
     64                                IEventTaskInstance eti2 = null; 
    6165                                 
    62                                 IEventTaskInstance eti2 = null; 
    63                                 ITask task2 = null; 
    6466                                 
    65                                 Object obj2 = jt.next(); 
    66                                  
    67                                 if (obj1 instanceof IEventTaskInstance && obj2 instanceof IEventTaskInstance) { 
    68                                         eti1 = (IEventTaskInstance) obj1; 
     67                                if (ti1 instanceof IEventTaskInstance && ti2 instanceof IEventTaskInstance) { 
     68                                        eti1 = (IEventTaskInstance) ti1; 
    6969                                        index1 = getIndex(eti1); 
    70                                         eti2 = (IEventTaskInstance) obj2; 
     70                                        eti2 = (IEventTaskInstance) ti2; 
    7171                                        index2 = getIndex(eti2); 
    7272                                        distance = distanceBetweenInstances(eti1,eti2); 
    7373                                } 
    74                                 else if(obj1 instanceof IEventTaskInstance &&  !(obj2 instanceof IEventTaskInstance)) { 
    75                                         task2 = ((ITaskInstance) obj2).getTask(); 
     74                                else if(ti1 instanceof IEventTaskInstance &&  !(ti2 instanceof IEventTaskInstance)) { 
     75                                        task1 = ((ITaskInstance) ti1).getTask(); 
    7676                                        index2 = getIndex(task2); 
    77                                         eti1 = (IEventTaskInstance) obj1; 
     77                                        eti1 = (IEventTaskInstance) ti1; 
    7878                                        index1 = getIndex(eti1); 
    7979                                        distance = distanceBetweenTaskAndInstance(task2,eti1); 
    8080                                } 
    81                                 else if(!(obj1 instanceof IEventTaskInstance) && obj2 instanceof IEventTaskInstance) { 
    82                                         task1 = ((ITaskInstance) obj1).getTask(); 
     81                                else if(!(ti1 instanceof IEventTaskInstance) && ti2 instanceof IEventTaskInstance) { 
    8382                                        index1 = getIndex(task1); 
    84                                         eti2 = (IEventTaskInstance) obj2; 
     83                                        eti2 = (IEventTaskInstance) ti2; 
    8584                                        index2 = getIndex(eti2); 
    8685                                        distance = distanceBetweenTaskAndInstance(task1,eti2); 
    8786                                } 
    88                                 else if(!(obj2 instanceof IEventTaskInstance) && !(obj2 instanceof IEventTaskInstance)) { 
    89                                         task1 = ((ITaskInstance) obj1).getTask(); 
     87                                else if(!(ti1 instanceof IEventTaskInstance) && !(ti2 instanceof IEventTaskInstance)) { 
    9088                                        index1 = getIndex(task1); 
    91                                         task2 = ((ITaskInstance) obj2).getTask(); 
    9289                                        index2 = getIndex(task2); 
    9390                                        distance = distanceBetweenTasks(task1,task2); 
     
    103100        } 
    104101 
    105          
     102        //TODO: Calculate distance here 
    106103        private float distanceBetweenTaskAndInstance(ITask task1, IEventTaskInstance eti) { 
    107104                return 0; 
    108105        } 
    109106         
     107        //TODO: Calculate distance here 
    110108        private float distanceBetweenTasks(ITask task1, ITask task2) { 
    111109                return 0; 
     
    158156                }  
    159157                else { 
    160                         System.out.println("Firsttask: " +taskId1); 
    161                         System.out.println("Secondtask: " + taskId2); 
    162                         System.out.println(idmapping); 
     158                         
    163159                        Integer first = idmapping.get(taskId1); 
    164160                        Integer second = idmapping.get(taskId2); 
    165                         System.out.println("First: " + first + " Second: " + second); 
    166                         System.out.println("Matrix: " + matrix.get(first, second)); 
    167161                        return matrix.get(first,second);         
    168162                } 
Note: See TracChangeset for help on using the changeset viewer.