private void PrintToFile(int[] assignments ,Boolean fromDict)
        {
            List<String> panelKey = new List<string>();
            List<String> keyLines = new List<string>();
             List<List<String>> data = new List<List<string>>();
             List<String> indexNumbers = ph.IndexNumberVector;
             int cuttentTemplateNumber = 0;
             List<String> indexList = new List<string>();
             Boolean addLine = false;
            for (int i = 0; i < panelSlots.Count; i++)
            {
                if (panelSlots[i].TemplateNumber == cuttentTemplateNumber)
                {
                    int index;
                    if (fromDict)
                    {
                        assignedData.TryGetValue(panelSlots[i], out index);
                    }
                    else
                    {
                        index = assignments[i];
                    }

                    if ((index < 0) || (index >= indexNumbers.Count))
                    {
                        //dataLine.Add("nill");
                    }
                    else
                    {
                        indexList.Add(indexNumbers[index]);
                    }

                }
                else
                {
                    addLine = true;
                }

                if ((i == (panelSlots.Count - 1)) || (addLine))
                {
                    keyLines.Add(""+panelSlots[i - 1].Category);
                    List<String> dataLine = new List<string>();
                    dataLine.Add(panelSlots[i - 1].GetInternalEvaluatorString());
                    dataLine.Add(panelSlots[i - 1].GetExternalEvaluatorString());
                    dataLine.AddRange(indexList);
                    indexList = new List<string>();
                    ////////////////////////
                    int index;
                    if (fromDict)
                    {
                        assignedData.TryGetValue(panelSlots[i], out index);
                    }
                    else
                    {
                        index = assignments[i];
                    }

                    if ((index < 0) || (index >= indexNumbers.Count))
                    {
                        //dataLine.Add("nill");
                    }
                    else
                    {
                        indexList.Add(indexNumbers[index]);
                    }
                    ////////////////////////////////////////////

                   // Console.WriteLine(cuttentTemplateNumber + " " + panelSlots[i].TemplateNumber);
                    cuttentTemplateNumber = panelSlots[i].TemplateNumber;
                    data.Add(dataLine);
                    addLine =false;
                }
                //String panelName = "Instance " + i;
                //panelKey.Add(panelName);
                //String line = panelName + " -> " + panelSlots[i].ToString();
                //keyLines.Add(line);

                //List<String> dataLine = new List<string>();
                //int index;
                //if (fromDict)
                //{
                //    assignedData.TryGetValue(panelSlots[i], out index);
                //}
                //else
                //{
                //    index = assignments[i];
                //}

                //if ((index < 0) || (index >= indexNumbers.Count))
                //{
                //    dataLine.Add("nill");
                //}
                //else
                //{
                //    dataLine.Add(indexNumbers[index]);
                //}
                //data.Add(dataLine);
            }
            //Write the key
            FileWriter keyWriter = new FileWriter("key.txt");
            keyWriter.writeLines(keyLines);
            //Write the matrix
            FileWriter valueWriter = new FileWriter("value.csv");
            List<String> title = new List<string>();
            title.Add("Assignment");
            title.Add("Internal");
            title.Add("External");

            valueWriter.writeMatrix(title, keyLines, data);
        }