Кадровый потенциал

Кадровый потенциал - совокупность способностей всех людей, которые заняты в данной организации и решают определенные задачи ...

Математическая постановка задачи.

Рис. 1 «Пример содержания данных в файле input.txt»

При запуске программы открывается форма, на которой требуется проставить флаги для тех значений параметров, значение которых для каждого проекта, требуется упорядочить по убыванию, и нажать кнопку «Запустить».

Рис. 2. «Форма, открывающаяся при запуске программы»

После нажатия на кнопку «Запустить» выполняется основной программный код, который является реализацией алгоритма поиска решений для задачи выбора наиболее выгодного проекта диверсификации. Открывается форма, на которой приведен вектор, координаты которого являются порядковыми номерами проектов, наиболее выгодных для развития. Так же на форме выводится вектор Z = (z1,…zn), где координаты zi обозначают весовые коэффициенты привлекательности проекта с порядковым номером i.

Рис. 3. «Форма, содержащая решение задачи»

Ниже приведен программный код, с комментариями.

class loadinput // Класс loadinput используется для загрузки матрицы A из файла input.txt

{double[,] in1 = new double[20,20];int m, n; // Размерность матрицы Astring[] Desc = new string[20];loadinput()

{ }void load()

{sr = new StreamReader("input.txt", System.Text.Encoding.GetEncoding(1251));= Convert.ToInt32(sr.ReadLine());= Convert.ToInt32(sr.ReadLine());(int j = 1; j < (m + 1); j++)[j] = sr.ReadLine();r1;m1;(int j = 1; j < (m+1); j++)

{line = "";= sr.ReadLine();tmp = 0;int i=0;= new Regex("(?<1>(\t+)|(\r+))", RegexOptions.IgnoreCase | RegexOptions.Compiled);(m1 = r1.Match(line); m1.Success; m1 = m1.NextMatch())

{++;[j, i] = Convert.ToDouble(line.Substring(tmp, m1.Groups["1"].Index - tmp));= m1.Groups["1"].Index;

}++;[j, i] = Convert.ToDouble(line.Substring(tmp, line.Length-tmp));

}

}

}recurs // Класс recurs используется для рекурсивного перебора элементов матрицы X

{int n = 0; //кол-во столбцов матрицы Xint y = 0; //кол-во строк матрицы Xint[] mas = new int [20];bool stop = false;recurs(int n1, int y1)

{= n1; y = y1-1;(int i = 0; i < n; i++)[i] = 0;

}void next(int x)

{(mas[x] < y) mas[x] = mas[x] + 1;

{(x == 0) { stop = true; }

{[x] = 0;(x - 1);

}

}

}

}Points // Класс Points используется для ранжирования элементов матрицы A по строкам

{int x; // Порядковый номер столбца матрицы Adouble y; // Значение элемента матрицы APoints (int key1, double key2)

{= key1;= key2;

}double Y

{

{y;

}

}

}myComparer : IComparer // Класс myComparer используется для ранжирования элементов матрицы A по возрастанию

{IComparer.Compare(object obj1, object obj2)

{(((Points)obj1).Y < ((Points)obj2).Y) return -1;(((Points)obj1).Y == ((Points)obj2).Y) return 0;(((Points)obj1).Y > ((Points)obj2).Y) return 1;return 0;

}

}myComparer2 : IComparer // Класс myComparer2 используется для ранжирования элементов матрицы A по убыванию

{IComparer.Compare(object obj1, object obj2)

{(((Points)obj2).Y < ((Points)obj1).Y) return -1;(((Points)obj2).Y == ((Points)obj1).Y) return 0;(((Points)obj2).Y > ((Points)obj1).Y) return 1;return 0;

}

}partial class Form1 : Form // Основное тело программы

{li;Form1()

{();= new loadinput();.load(); // функция загрузки элементов матрицы A из файла.txt(int i = 0; i < li.m; i++) // Вывод на экран параметров по

которым будут оценены проекты.Items.Insert(i, li.Desc[i + 1]);

}void button2_Click(object sender, EventArgs e)

{.Enabled = false;[,] p = new int[20,20];(int i = 0; i < (li.m); i++)

{[] itArr = new Points[li.n];// массив объектов класса.(int j = 0; j < (li.n); j++) //каждый объект

характеризуется порядковым

номером и значением

элемента в строке матрицы A[j] = new Points(j, li.in1[i + 1, j + 1]); if (checkedListBox1.GetItemChecked(i) == true)

{ myComparer2 c = new myComparer2(); System.Array.Sort(itArr, c); } // упорядочивание объектов

класса Points по убыванию

(возрастанию) значений

элемента в строке матрицы A

Перейти на страницу: 2 3 4 5 6 7 8