void generate() {

      cores = new Vertex[numCore];
      for(int i=0; i<numCore; i++) {
        cores[i] = new Vertex( 1, i);
      }

      tors = new Vertex[numTor];
      for(int i=0; i<numTor; i++) {
        tors[i] = new Vertex( 2, i);
      }

      nodes = new Vertex[numNodePerTor*numTor];
      for(int i=0; i<numNodePerTor*numTor; i++) {
        nodes[i] = new Vertex( 3, i);
      }

      slots = new Vertex[numSlotPerNode*numNodePerTor*numTor];
      for(int i=0; i<numSlotPerNode*numNodePerTor*numTor; i++){
        slots[i] = new Vertex( 4, i);
      }

      for(int i=0; i<numCore; i++) {
        Vertex core = cores[i];
        
        for(int j=0; j<numTor; j++) {
          core.connectWith( tors[j], bwCT);
        }
      }

      for(int i=0; i<numTor; i++){
        Vertex tor = tors[i];

        for(int j=0; j<numNodePerTor; j++) {
          Vertex node = nodes[i*numNodePerTor+j];
          tor.connectWith( node, bwTN);

          for(int k=0; k<numSlotPerNode; k++) {
            node.connectWith( slots[(i*numNodePerTor+j)*numSlotPerNode+k], bwNS);
          }
        }
      }

    }