Теория элитных групп
Разработка программы формирования элитной группы и прогноз ее дальнейшего развития в положительном или отрицательном направлении. Выбор монитора: алгоритм принятия решения с повторением, критерии реализации. Проведение процедур "прополки", отбор лучших.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 13.11.2012 |
Размер файла | 1,9 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Размещено на http://www.allbest.ru/
СОДЕРЖАНИЕ
ВВЕДЕНИЕ
1. ПОСТАНОВКА ЗАДАЧИ
1.1 Характеристика задачи
1.2 Входная информация
1.3 Выходная информация
1.4 Цель работы
1.5 Математическая постановка задачи
1.6 Специальные требования к техническому обеспечению
2. ОПИСАНИЕ МЕТОДА МОДЕЛИРОВАНИЯ
3. ОПИСАНИЕ АЛГОРИТМА
3.1 Назначение и характеристика
3.2 Используемая информация
3.3 Результаты решения
3.4 Математическое описание
3.5 Алгоритм решения
4. ОПИСАНИЕ ПРОГРАММЫ
4.1 Описание функции заполнения исходного множества
4.1.1 Вводная часть
4.1.2 Функциональное назначение
4.1.3 Описание информации
4.1.4 Описание логики
4.2 Описание функции формирования элитной группы
4.2.1 Вводная часть
4.2.2 Функциональное назначение
4.2.3 Описание информации
4.2.4 Описание логики
4.3 Описание функции эволюции элитной группы
4.3.1 Вводная часть
4.3.2 Функциональное назначение
4.3.3 Описание информации
4.3.4 Описание логики
4.4 Описание функции "прополки"
4.4.1 Вводная часть
4.4.2 Функциональное назначение
4.4.3 Описание информации
4.4.4 Описание логики
4.5 Описание функции "сбора урожая"
4.5.1 Вводная часть
4.5.2 Функциональное назначение
4.5.3 Описание информации
4.5.4 Описание логики
ЗАКЛЮЧЕНИЕ
СПИСОК ЛИТЕРАТУРЫ
ПРИЛОЖЕНИЕ 1. ТЕКСТ ПРОГРАММЫ
ПРИЛОЖЕНИЕ 2. КОНТРОЛЬНЫЙ ПРИМЕР
ПРИЛОЖЕНИЕ 3. РУКОВОДСТВО ПРОГРАММИСТА
ПРИЛОЖЕНИЕ 4. РУКОВОДСТВО ОПЕРАТОРА
ВВЕДЕНИЕ
Целью данной курсовой работы является разработка программы для принятия решения с повторением - реализация алгоритма отбора в элитную группу. В качестве элитной группы используется различные виды мониторов. Претенденты в коллекцию будут отбираться согласно критериям: диагональ, время отклика, угол обзора и разрешение. Эволюция группы предусматривает набор элементов в элитную группу заново согласно выбранному рекомендателю. Развитие группы пойдет либо в положительном направлении, либо в отрицательном (деградация). Так же возможно проведение процедур «прополки», то есть исключения из группы «сорных» элементов или отбора лучших - уход из группы лучших элементов.
Задача программы показать, какие элементы попадут в группу, предусматривая элемент случайности, также показать дальнейшее развитие группы.
Данная задача является актуальной, так как отбор лучших образцов всегда идет по каким-либо критериям. Добавляя элементы в исходное множество и задав значения эталона, можно узнать шанс попадания, элементы в элитную группу, то есть в коллекцию.
1. ПОСТАНОВКА ЗАДАЧИ
1.1 Характеристика задачи
Задача предназначена для принятия решения с повторением - для отбора мониторов по четырем критериям: диагональ, время отклика, угол обзора и разрешение. Задача предусматривает эволюцию элитной группы, процедуры «прополки» и «сбора урожая».
1.2 Входная информация
В качестве входной информации используются данные из исходного множества видов мониторов, сформированного случайным образом.
Входные данные включают:
· Имя монитора
· Диагональ монитора
· Время отклика
· Угол обзора
· Разрешение
Кроме того, в качестве входных данных используются значения критериев эталона и число элементов, исключаемых в процедурах «прополки» и отборки лучших, введенные пользователем.
1.3 Выходная информация
Выходной информацией является сформированная согласно эталону элитная группа, а именно коллекция мониторов. При формировании группы предусматривается включение «сорных» элементов.
При эволюции подсчитывается сумма элитной группы по критериям до и после, и в результате сравнения выводим результат, развивается группа или деградирует.
При «прополке» выводятся n заменяемых элементов с худшей суммой, а при отборе лучших - с лучшей.
1.4 Цель работы
Разработать программу, предназначенную для выбора элитной группы мониторов, удовлетворяющих заданным параметрам. Предусмотреть эволюцию элитной группы, возможность отбора лучших и «прополку».
1.5 Математическая постановка задачи
В данной работе реализована модель - «Претендент - Рекомендатель». Она заключается в том что, на первом этапе из генеральной совокупности объектов выбираются объекты с улучшенными свойствами. В качестве таких свойств выбраны: диагональ, время отклика, угол обзора и разрешение.
Запишем их в следующем виде:
Kriterii = { diagonal,resp_time,angle,resolution } , где
Kriterii - множество критериев;
Элементы множества Kriterii:
diagonal - диагональ монитора;
resp_time - время отклика;
angle - угол обзора;
resolution - разрешение.
Данные эталона вводятся пользователем, обозначим их следующим образом:
KriteriiEtalona = { d, rt, a, r } , где
KriteriiEtalona - множество критериев эталона;
Элементы множества KriteriiEtalona:
d - диагональ эталона;
rt - время отклика эталона;
а - угол обзора эталона;
r - разрешение эталона.
Элементы из генеральной совокупности попадают в элитную группу при выполнении следующего условия:
ЕСЛИ diagonal >= d И resp_time >= rt И angle >= a И resolution >= r,
ТО элемент с данными критериями попадает в элитную группу.
Где:
diagonal, resp_time, angle, resolution критерии из множества Kriterii;
d, rt, a, r критерии из множества KriteriiEtalona.
Введём ещё одно условие: при необходимости пополнить группу из-за того, что какие-то элементы выбыли из неё. При этом к эталону обратиться уже нельзя, так как он нужен только на этапе формирования группы. Для этого поступаем следующим образом:
Выбираем наугад элитный элемент, назвав его «рекомендателем» и так же наугад элемент из исходной совокупности «претендента» и сравниваем их. Если «претендент» окажется не хуже «рекомендателя», он включается в элиту.
REC = СЛЧИСЛ(EL), где
REC - рекомендатель из элитной группы;
EL - множество элементов элитной группы;
СЛЧИСЛ - функция, выбирающая случайный элемент из множества.
APL = СЛЧИСЛ(G), где
APL - претендент в элитную группу;
G - множество элементов генеральной совокупности;
СЛЧИСЛ - функция, выбирающая случайный элемент из множества.
Если APL >= REC, то APL добавляется в элитную группу.
При этом для элиты возможно два пути развития: положительный, когда элита состоит из элементов с высокими показателями критериев, либо отрицательный (деградация), когда число сорных элементов стало велико в группе. Для этого считается сумма до шага эволюции(S1) и сумма после эволюции(S2):
Сумма до шага эволюции и после шага эволюции вычисляется по следующей формуле:
Где:
S - сумма;
КОЛ - количество элементов в элитной группе;
di - коэффициент значимости диагонали i-го элемента;
rti - коэффициент значимости времени отклика i-го элемента;
ai - коэффициент значимости угла обзора i-го элемента;
ri - коэффициент значимости разрешения i-го элемента.
Элита развивается, если S1>S2, иначе элита деградирует.
1.6 Специальные требования к техническому обеспечению
Программа может работать на персональном компьютере с операционной системой Windows XP\Vista\7. Дополнительное наличие программ или библиотек не требуется.
2. ОПИСАНИЕ МЕТОДА МОДЕЛИРОВАНИЯ
Эталон - объект внешний по отношению, как к исходной совокупности, так и к формируемой группе. Он привносится извне и вообще может иметь иную природу, чем сортируемые объекты.
Оперируя эталоном и найдя в исходной совокупности нужное число элементов, не худших, чем эталон, мы закончим формирование элитной группы. Введем еще одно условие: при необходимости пополнить группу из-за того, что какие-то элементы выбыли из нее (израсходовав ресурс, погибнув и т. д.), к помощи эталона прибегнуть уже нельзя. Эталон был доступен только на этапе формирования группы.
Выберем наугад элитный элемент, назвав его "рекомендатель", и так же наугад элемент из исходной совокупности "претендента" и сравним их. Если претендент окажется не хуже «рекомендателя», он включается в элиту.
Рис. 2.1
Элементы группы неизбежно стареют, параметры их станут меняться, некоторые будут из группы выбывать. Худший из этих лучших первым и покинет группу.
Нужно исследовать два режима: когда первыми выбывают худшие и когда первыми выбывают лучшие элементы.
Жизнь математической модели - это последовательность шагов, на каждом из которых из элитной группы удаляются и заменяются претендентами элементы с недопустимо изменившимся параметром. Если лучший существует дольше (положительная обратная связь), то на первых же шагах "вымирает" часть "сорных", попавших в элиту, миновав эталон, и возрастает доля элитных. Дальнейшие шаги делают группу все более элитной (см. рис. 2.2).
Рис 2.2
Если же лучшие выбывают первыми (отрицательная обратная связь), то уже начальный шаг уносит "сверхэлиту" (см. рис 2.3) и процесс пополнения идет без нее - они рекомендателями быть не смогли, а остальные, в том числе "сорные", померялись доблестью с претендентами.
Рис 2.3
Свойства элитной группы с отрицательной обратной связью (лучшие выбывают первыми) и механизмом пополнения "претендент - рекомендатель" неизбежно ухудшаются, если при первоначальном формировании в элиту попала, хотя бы малая доля неэлитных ("сорных") элементов.
3. ОПИСАНИЕ АЛГОРИТМА
3.1 Назначение и характеристика
Данная задача предназначена для формирования элитной группы из исходного множества согласно введенным критериям (эталону), эволюции элитной группы, то есть новое формирование элитной группы за счет выбора «рекомендателя» из элитной группы и «претендента» из исходного множества. Данная задача предусматривает случайные факторы при отборе в элитную группу.
3.2 Используемая информация
Исходное множество, состоящее из мониторов со случайными значениями критериев (диагональ, время отклика, угол обзора и разрешение).
Значение эталона: диагональ, время отклика, угол обзора, разрешение.
3.3 Результаты решения
В случае задания всех критериев для эталона (диагональ, время отклика, угол обзора, разрешение) формируется элитная группа, и результаты выдаются в форме таблицы. При дальнейшей эволюции элитная группа формируется заново, также может произойти случайное удаление элементов (не обязательно «сорных»).
3.4 Математическое описание
При задании эталона вводятся минимальные значения критериев: диагональ, время отклика, угол обзора, разрешение.
При этом монитор из исходного множества отбираются в элитную группу.
При этом случайным образом в группу могут попасть «сорные» элементы:
Если элемент не удовлетворяет эталонным требованиям, то у него все же остается шанс попасть в элиту. В таком случае включается следующий алгоритм
Если случайное число Х в промежутке от 1 до 100 меньше или равно 2 -«коэффициента сорности», то в элитную группу включается текущий элемент из исходного множества. Таким образом, существует возможность попадания в группу «сорного» элемента.
При эволюции из элитной группы выбирается случайным образом рекомендатель (Р), а из исходного множества претендент (П). Если значения претендента по критериям больше либо равны значениям критериев рекомендателя, претендент - включается в элитную группу.
3.5 Алгоритм решения
1) В начале программы исходное множество заполняется видами мониторов следующим образом:
Имя = «Монитор» + номер в списке;
Диагональ = случайное число от 1 до 5;
Время отклика = случайное число от 1 до 2;
Угол обзора = случайное число от 1 до 3;
Разрешение = случайное число от 1 до 6
2) Чтение значений критериев эталона (диагональ, время отклика, угол обзора, разрешение).
3) Набор в элитную группу согласно условию, описанному в пункте 2.4.
4) Развитие элитной группы: выбор «рекомендателя» и «претендента».
5) Отбор в элитную группу.
6) Подсчет суммы по критериям.
7) Вывод о развитии или деградации группы.
8) Конец
4. ОПИСАНИЕ ПРОГРАММЫ
4.1 Описание функции заполнения исходного множества
4.1.1 Вводная часть
Процедура для заполнения исходного множества в самом начале работы программы случайными значениями критериев.
4.1.2 Функциональное назначение
Процедура формирует исходное множество для дальнейшего формирования из него элитной группы.
4.1.3 Описание информации
Процедура не использует входную информацию.
В качестве выходной информации выводятся значения критериев в таблицу. Критерии вычисляются следующим образом:
Имя = «Монитор» + номер в списке;
Диагональ = случайное число от 1 до 5;
Время отклика = случайное число от 1 до 2;
Угол обзора = случайное число от 1 до 3;
Разрешение = случайное число от 1 до 6.
4.1.4 Описание логики
Описание логики процедуры представлено на рис.4.1.
4.2 Описание функции формирования элитной группы
4.2.1 Вводная часть
Процедура формирует элитную группу из исходного множества согласно эталону.
Рис. 4.1 Описание логики
4.2.2 Функциональное назначение
Процедура предназначена для отбора элементов в исходное множество согласно значениям критерия эталона и случайного включения в группу «сорных» элементов.
4.2.3 Описание информации
Входная информация: диагональ, время отклика, угол обзора, разрешение.
Выходная информация: элитная группа, данные которой выводятся в таблицу.
4.2.4 Описание логики
Описание логики процедуры представлено на рис.4.2.
Рис. 4.2 Описание логики процедуры
4.3 Описание функции эволюции элитной группы
4.3.1 Вводная часть
Процедура предназначена для дальнейшего развития элитной группы.
4.3.2 Функциональное назначение
Процедура выбирает «рекомендателя» из элитной группы, претендента из исходного множества и происходит отбор элементов в элитную группу заново согласно значениям критериев «рекомендателя».
4.3.3 Описание информации
Входная информация: таблица со значениями критериев элитной группы.
Выходная информация: вновь сформированная элитная группа, вывод о результате развития группы.
4.3.4 Описание логики
Описание логики процедуры представлено на рис.4.3.
Рис. 4.3 Описание логики процедуры
4.4 Описание функции "прополки"
4.4.1 Вводная часть
Функция удаляет указанное пользователем число элементов из элиты. Элементы выбираются по рангу по суммы параметров. Элиту покидают элементы с меньшей суммой и их заменяют случайные элементы из генеральной совокупности.
4.4.2 Функциональное назначение
Функция предназначена для удаления наиболее "низкосортных" элементов и замена их случайными элементами из генеральной группы. Таким образом, происходит попытка улучшить сумму элитной группы.
4.4.3 Описание информации
Входная информация: количество элементов, которое необходимо заменить; "элитная" группа.
Выходная информация: элитная группа, данные которой выводятся в таблицу (с замененными элементами);
4.4.4 Описание логики
Описание логики процедуры представлено на рис.4.4.
4.5 Описание функции отбора лучших («Сбор урожая»)
4.5.1 Вводная часть
Функция удаляет указанное пользователем число элементов из элиты. Элементы выбираются по рангу суммы параметров. Элиту покидают элементы с большей суммой и их заменяют случайные элементы из генерального набора.
Рис. 4.4 Описание логики процедуры
4.5.2 Функциональное назначение
Функция предназначена для удаления наиболее "качественных" элементов и замена их случайными элементами из генеральной группы. Таким образом, эмитируется переход "качественных" элементов в "в верхи".
4.5.3 Описание информации
Входная информация: количество элементов, которое необходимо заменить; "элитная" группа.
Выходная информация: элитная группа, данные которой выводятся в таблицу (с замененными элементами);
4.5.4 Описание логики
Описание логики процедуры представлено на рис.4.5.
Рис. 4.5 Описание логики процедуры
ЗАКЛЮЧЕНИЕ
В данной курсовой работе я реализовал выбор монитора по теории элитных групп. Разработанная программа формирует элитную группу и прогнозирует ее дальнейшее развитие в положительном или отрицательном направлении.
алгоритм процедура элитный монитор
СПИСОК ЛИТЕРАТУРЫ
1. А.Н. Ефимов "Элитные группы, их возникновение и эволюция", Знание-сила. 1988. №1, С. 56-64.
2. http://wsyachina.com/social_sciences/elite.html - Теория элитных групп.
3. http://selikhovkin.blogspot.com/2009/03/blog-post_26.html - Теория элитных групп - в жизни есть место математике.
4. http://www.fcenter.ru/online.shtml?articles/hardware/monitors/10071 - параметры современных ЖК-мониторов.
5. http://www.laptop.nnov.ru/content/view/34/33/ - классификация качества матриц ЖК-мониторов.
6. «Современные теории элиты: Критический очерк», Ашин Геннадий Константинович, Издательство: Международные отношения, 1985
7. А.Н. Ефимов, В.М. Кутеев "Исследование и моделирование некоторых свойств элитных групп", Изв. АН СССР. Техническая кибернетика. 1980. №3, С. 177-185.
8. А.Н. Ефимов, В.М. Кутеев "Ранговые процедуры управления эволюцией элитных групп", Изв. АН СССР. Техническая кибернетика. 1980. №6, С. 3-12.
ПРИЛОЖЕНИЕ 1
ТЕКСТ ПРОГРАММЫ
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace ToEG
{
public partial class Form1 : Form
{
List<Monitor> list = new List<Monitor>();
List<Monitor> elite = new List<Monitor>();
int sor, sluch;
decimal summelite, summelite2;
Monitor rec;
Monitor can;
public Form1()
{
InitializeComponent();
}
/// <summary> Сформировать генеральную совокупность
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button1_Click(object sender, EventArgs e)
{
if (numericUpDown2.Value != 0)
{
list.Clear();
dataGridView1.DataSource = null;
dataGridView1.Rows.Clear();
Random rnd = new Random();
for (int i = 0; i < numericUpDown2.Value; i++)
list.Add(new Monitor(i + 1, "Монитор " + (i + 1).ToString(),
((diagonal)rnd.Next(0, 5)).ToString(), ((resp_time)rnd.Next(0,
2)).ToString(), ((angle)rnd.Next(0, 3)).ToString(), ((resolution)rnd.Next(0,
6)).ToString()));
dataGridView1.DataSource = list;
}
for (int i = 0; i < dataGridView1.RowCount; i++)
{
dataGridView1.Rows[i].Cells[2].Value =
Resource1.ResourceManager.GetObject(dataGridView1.Rows[i].Cells[2].V
alue.ToString()).ToString();
dataGridView1.Rows[i].Cells[3].Value =
Resource1.ResourceManager.GetObject(dataGridView1.Rows[i].Cells[3].V
alue.ToString()).ToString();
dataGridView1.Rows[i].Cells[4].Value =
Resource1.ResourceManager.GetObject(dataGridView1.Rows[i].Cells[4].V
alue.ToString()).ToString();
dataGridView1.Rows[i].Cells[5].Value =
Resource1.ResourceManager.GetObject(dataGridView1.Rows[i].Cells[5].V
alue.ToString()).ToString();
}
dataGridView1.Columns[1].HeaderText = "Имя";
dataGridView1.Columns[2].HeaderText = "Диагональ";
dataGridView1.Columns[3].HeaderText = "Время отклика";
dataGridView1.Columns[4].HeaderText = "Угол обзора";
dataGridView1.Columns[5].HeaderText = "Разрешение";
}
/// <summary> Создать элитную группу
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button3_Click(object sender, EventArgs e)
{
sluch = 0;
elite.Clear();
dataGridView2.DataSource = null;
dataGridView2.Rows.Clear();
sor = 0;
Random rnd = new Random();
for (int i = 0; i < list.Count; i++)
{
if (ClRet1(list[i].Diagonal) >= ClRet1(comboBox1.Text)
&& ClRet2(list[i].Resp_time) >= ClRet2(comboBox2.Text)
&& ClRet3(list[i].Angle) >= ClRet3(comboBox3.Text)
&& ClRet4(list[i].Resolution) >= ClRet4(comboBox4.Text))
{
elite.Add(list[i]);
}
else
{
if (rnd.Next(0, 100) <= 2)
{
elite.Add(list[i]);
sor += 1;
}
}
}
label10.Text = "Сорных:" + sor.ToString();
label10.Visible = true;
dataGridView2.DataSource = elite;
}
public int ClRet1(string s)
{
int r = 0;
switch (s)
{
case "17\"": r = 0; break;
case "19\"": r = 1; break;
case "20\"": r = 2; break;
case "22\"": r = 3; break;
case "24\"": r = 4; break;
}
return r;
}
public int ClRet2(string s)
{
int r = 0;
switch (s)
{
case "5 мсек": r = 0; break;
case "2 мсек": r = 1; break;
}
return r;
}
public int ClRet3(string s)
{
int r = 0;
switch (s)
{
case "160°": r = 0; break;
case "170°": r = 1; break;
case "176°": r = 2; break;
}
return r;
}
public int ClRet4(string s)
{
int r = 0;
switch (s)
{
case "1280х720": r = 0; break;
case "1280х1024": r = 1; break;
case "1366х768": r = 2; break;
case "1440х900": r = 3; break;
case "1600х900": r = 4; break;
case "1680х1050": r = 5; break;
case "1920х1080": r = 6; break;
}
return r;
}
/// <summary> Продолжить эволюцию
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button5_Click(object sender, EventArgs e)
{
if (elite.Count > 0)
{
summelite = 0;
for (int i = 0; i < elite.Count; i++)
summelite += ClRet1(elite[i].Diagonal) + ClRet2(elite[i].Resp_time) +
ClRet3(elite[i].Angle) + ClRet4(elite[i].Resolution);
label13.Text = "Сумма элиты: " + summelite.ToString();
label13.Visible = true;
Random rnd = new Random();
button1_Click(this, new EventArgs());
elite.RemoveAt(rnd.Next(0, elite.Count - 1));
rec = elite[rnd.Next(0, elite.Count - 1)];
can = list[rnd.Next(0, list.Count - 1)];
if (ClRet1(can.Diagonal) >= ClRet1(rec.Diagonal)
&& ClRet2(can.Resp_time) >= ClRet2(rec.Resp_time)
&& ClRet3(can.Angle) >= ClRet3(rec.Angle)
&& ClRet4(can.Resolution) >= ClRet4(rec.Resolution))
elite.Add(can);
else
elite.Add(list[rnd.Next(0, list.Count - 1)]);
summelite2 = 0;
for (int i = 0; i < elite.Count; i++)
summelite2 += ClRet1(elite[i].Diagonal) + ClRet2(elite[i].Resp_time) +
ClRet3(elite[i].Angle) + ClRet4(elite[i].Resolution);
label14.Text = "Вторая сумма элиты: " + summelite2.ToString();
label14.Visible = true;
if (summelite < summelite2)
{
label9.BackColor = Color.Green;
label9.Text = "Элита развивается";
}
else
{
label9.BackColor = Color.Red;
label9.Text = "Элита деградирует";
}
if (rnd.Next(0, 100) <= 2)
{
elite.RemoveAt(rnd.Next(0, elite.Count - 1));
sluch += 1;
label11.Text = "Случайных удалений: " + sluch.ToString();
label11.Visible = true;
elite.Add(list[rnd.Next(0, list.Count - 1)]);
}
dataGridView2.DataSource = null;
dataGridView2.Rows.Clear();
dataGridView2.DataSource = elite;
}
}
/// <summary> Прополка
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button4_Click(object sender, EventArgs e)
{
label13.Visible = false;
label14.Visible = false;
if (numericUpDown3.Value > 0)
{
int kol;
string vyvod = "";
if (numericUpDown3.Value > elite.Count / 2)
kol = elite.Count / 2;
else kol = (int)numericUpDown3.Value;
summelite = 0;
for (int i = 0; i < elite.Count; i++)
summelite += ClRet1(elite[i].Diagonal) + ClRet2(elite[i].Resp_time) +
ClRet3(elite[i].Angle) + ClRet4(elite[i].Resolution);
label15.Text = "Сумма элиты: " + summelite.ToString();
label15.Visible = true;
int min;
Random rnd = new Random();
for (int j = 0; j < kol; j++)
{
min = 0;
for (int i = 0; i < elite.Count; i++)
{
if (i != 0)
if (ClRet1(elite[min].Diagonal) + ClRet2(elite[min].Resp_time) +
ClRet3(elite[min].Angle) + ClRet4(elite[min].Resolution) >
ClRet1(elite[i].Diagonal) + ClRet2(elite[i].Resp_time) +
ClRet3(elite[i].Angle) + ClRet4(elite[i].Resolution))
min = i;
}
vyvod += elite[min].Diagonal + " " + elite[min].Resp_time + " " +
elite[min].Angle + " " + elite[min].Resolution + "\n";
elite.RemoveAt(min);
rec = elite[rnd.Next(0, elite.Count - 1)];
can = list[rnd.Next(0, list.Count - 1)];
if (ClRet1(can.Diagonal) >= ClRet1(rec.Diagonal)
&& ClRet2(can.Resp_time) >= ClRet2(rec.Resp_time)
&& ClRet3(can.Angle) >= ClRet3(rec.Angle)
&& ClRet4(can.Resolution) >= ClRet4(rec.Resolution))
elite.Add(can);
else
elite.Add(list[rnd.Next(0, list.Count - 1)]);
summelite2 = 0;
for (int i = 0; i < elite.Count; i++)
summelite2 += ClRet1(elite[i].Diagonal) + ClRet2(elite[i].Resp_time) +
ClRet3(elite[i].Angle) + ClRet4(elite[i].Resolution);
label12.Text = "Вторая сумма элиты: " + summelite2.ToString();
label12.Visible = true;
if (summelite < summelite2)
{
label9.BackColor = Color.Green;
label9.Text = "Элита развивается";
}
else
{
label9.BackColor = Color.Red;
label9.Text = "Элита деградирует";
}
}
dataGridView2.DataSource = null;
dataGridView2.Rows.Clear();
dataGridView2.DataSource = elite;
MessageBox.Show(vyvod);
label15.Visible = false;
label12.Visible = false;
}
}
/// <summary> Сбор урожая
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button2_Click(object sender, EventArgs e)
{
label13.Visible = false;
label14.Visible = false;
if (numericUpDown4.Value > 0)
{
int kol;
string vyvod = "";
if (numericUpDown4.Value > elite.Count / 2)
kol = elite.Count / 2;
else kol = (int)numericUpDown4.Value;
summelite = 0;
for (int i = 0; i < elite.Count; i++)
summelite += ClRet1(elite[i].Diagonal) + ClRet2(elite[i].Resp_time) +
ClRet3(elite[i].Angle) + ClRet4(elite[i].Resolution);
label1.Text = "Сумма элиты: " + summelite.ToString();
label1.Visible = true;
int max;
Random rnd = new Random();
for (int j = 0; j < kol; j++)
{
max = 0;
for (int i = 0; i < elite.Count; i++)
{
if (i != 0)
if (ClRet1(elite[max].Diagonal) + ClRet2(elite[max].Resp_time) +
ClRet3(elite[max].Angle) + ClRet4(elite[max].Resolution) >
ClRet1(elite[i].Diagonal) + ClRet2(elite[i].Resp_time) +
ClRet3(elite[i].Angle) + ClRet4(elite[i].Resolution))
max = i;
}
vyvod += elite[max].Diagonal + " " + elite[max].Resp_time + " " +
elite[max].Angle + " " + elite[max].Resolution + "\n";
elite.RemoveAt(max);
rec = elite[rnd.Next(0, elite.Count - 1)];
can = list[rnd.Next(0, list.Count - 1)];
if (ClRet1(can.Diagonal) >= ClRet1(rec.Diagonal)
&& ClRet2(can.Resp_time) >= ClRet2(rec.Resp_time)
&& ClRet3(can.Angle) >= ClRet3(rec.Angle)
&& ClRet4(can.Resolution) >= ClRet4(rec.Resolution))
elite.Add(can);
else
elite.Add(list[rnd.Next(0, list.Count - 1)]);
summelite2 = 0;
for (int i = 0; i < elite.Count; i++)
summelite2 += ClRet1(elite[i].Diagonal) + ClRet2(elite[i].Resp_time) +
ClRet3(elite[i].Angle) + ClRet4(elite[i].Resolution);
label8.Text = "Вторая сумма элиты: " + summelite2.ToString();
label8.Visible = true;
if (summelite < summelite2)
{
label9.BackColor = Color.Green;
label9.Text = "Элита развивается";
}
else
{
label9.BackColor = Color.Red;
label9.Text = "Элита деградирует";
}
}
dataGridView2.DataSource = null;
dataGridView2.Rows.Clear();
dataGridView2.DataSource = elite;
MessageBox.Show(vyvod);
label1.Visible = false;
label8.Visible = false;
}
}
}
/// <summary> Диагональ
/// </summary>
enum diagonal
{
D1, D2, D3, D4, D5
}
/// <summary> Время отклика
/// </summary>
enum resp_time
{
res1, res2
}
/// <summary> Угол обзора
/// </summary>
enum angle
{
ang1, ang2, ang3
}
/// <summary> Разрешение
/// </summary>
enum resolution
{
R1, R2, R3, R4, R5, R6, R7, R8, R9, R10
}
public class Monitor
{
public Monitor(int cid, string cname, string cdiagonal, string cresp_time,
string cangle, string cresolution)
{
id = cid;
name = cname;
diagonal = cdiagonal;
resp_time = cresp_time;
angle = cangle;
resolution = cresolution;
}
private string name, diagonal, resolution;
private int id;
private string resp_time, angle;
public int ID
{
get
{
return id;
}
set
{
id = value;
}
}
public string Name
{
get
{
return name;
}
set
{
name = value;
}
}
public string Diagonal
{
get
{
return diagonal;
}
set
{
diagonal = value;
}
}
public string Resp_time
{
get
{
return resp_time;
}
set
{
resp_time = value;
}
}
public string Angle
{
get
{
return angle;
}
set
{
angle = value;
}
}
public string Resolution
{
get
{
return resolution;
}
set
{
resolution = value;
}
}
}
}
ПРИЛОЖЕНИЕ 2
КОНТРОЛЬНЫЙ ПРИМЕР
Запустим программу и сформируем исходное множество (см. рис. 2.1)
Рис. 2.1 Формирование исходного множества
Введем данные эталона и посмотрим на результаты формирования элитной группы (см. рис. 2.2)
Рис. 2.2 Формирование элитной группы
Рис. 2.3 Элитная группа развивается
Рис. 2.4 Элитная группа деградирует
Программа работает согласно постановке задачи, см. пункт 1.
ПРИЛОЖЕНИЕ 3
РУКОВОДСТВО ПРОГРАММИСТА
П3.1 Назначение программы
Программа предназначена для формирования элитной группы из исходного множества согласно заданному пользователем эталону, а также для прогнозирования дальнейшего развития элитной группы.
П3.2 Условия применения программы
Программа может работать на персональном компьютере с операционной системой Windows XP\Vista\7. Дополнительное наличие программ или библиотек не требуется. Для реализации программы необходима программа Microsoft Visual Studio Team Suite 2008.
П3.3 Входные и выходные данные
В качестве входных данных используются исходное множество и значения критериев эталона.
Выходными данными являются таблица элитной группы и результаты эволюции.
П3.4 Сообщения
Выводиться сообщение о «прополотых» и отобранных элементах с полной информацией об их критериях.
ПРИЛОЖЕНИЕ 4
РУКОВОДСТВО ОПЕРАТОРА
П4.1 Назначение программы
Программа предназначена для формирования элитной группы из исходного множества согласно заданному пользователем эталону, а также для прогнозирования дальнейшего развития элитной группы.
П4.2 Условия применения программы
Программа может работать на персональном компьютере с операционной системой Windows XP\Vista\7. Дополнительное наличие программ или библиотек не требуется. Для реализации программы необходима программа Microsoft Visual Studio Team Suite 2008.
П4.3 Команда оператора
Оператор не управляет выполнением программы. Путем нажатия кнопок он может запускать различные процедуры.
Кнопки:
«Сформировать» - заполняет генеральную совокупность;
«Создать» - формирует элитную группу из исходной генеральной совокупности;
«Далее» - запускает эволюцию элитной группы;
«Прополоть» - запускает процедуру «прополки»;
«Отобрать лучшие» - запускает процедуру отбора лучших.
П4.4 Сообщения оператору
Выводиться сообщение о «прополотых» и отобранных элементах с полной информацией об их критериях.
Размещено на Allbest.ru
Подобные документы
Поиск нужного работника по теории элитных групп из исходного множества согласно заданному пользователем эталону, а также для прогнозирования дальнейшего развития элитной группы: выбор "рекомендателя" и "претендента". Процедуры "прополки" и "сбора урожая".
курсовая работа [2,5 M], добавлен 13.11.2012Разработка программы тестирования студентов по MS PowerPoint с кодом на языке Delphi. Создание алгоритма для решения функциональных требований задачи. Описание переменных, вспомогательных процедур, входных и выходных данных для реализации программы.
курсовая работа [1,5 M], добавлен 21.09.2010Сущность понятия "комбинаторика". Программа формирования перестановок, сочетаний, размещений с выводом результатов на экран дисплея. Алгоритм программы, написанной на языке Паскаль. Список идентификаторов переменных программы. Список процедур программы.
лабораторная работа [19,8 K], добавлен 27.07.2010Создание программы для вычисления значения функции на основе определённой формулы. Уточнение структуры входных и выходных данных и определение ассемблерного формата их представления. Разработка алгоритмов для реализации работы программного обеспечения.
курсовая работа [240,6 K], добавлен 17.06.2013Анализ математических алгоритмов решения задачи, постановка задач по критериям. Выбор программной платформы для создания системы и описание 1С:Предприятие 8. Функционал создания индивидуальных учебных планов, формирования и реорганизации учебных групп.
дипломная работа [2,1 M], добавлен 13.10.2016Разработка программы проверки знаний для тестирования студентов по программированию с кодом на языке Delphi. Проектирование визуального интерфейса и словесный алгоритм работы программы. Алгоритмы разработанных процедур и функций, инструкция пользователя.
курсовая работа [506,5 K], добавлен 21.02.2011Разработка алгоритма, выполняющего поиск наилучшего решения на каждый ход в игре "крестики-нолики" (используя минимальный алгоритм). Обоснование выбора программных средств для решения задачи. Блок-схема интеллектуального алгоритма реализации программы.
контрольная работа [380,0 K], добавлен 28.04.2014Характеристика задачи АВ01, ее выходная и входная информация, выбор и обоснование состава технических средств и средств программной реализации. Разработка алгоритма и программы решения задачи АВ01, руководства пользователя и контрольный пример решения.
курсовая работа [2,1 M], добавлен 21.12.2011Написание программы для работы с клиентами средствами языка Delphi, которая предусматривает ввод, редактирование и удаление информации. Разработка алгоритма решения задачи, описание переменных, вспомогательных процедур, входных и выходных данных.
курсовая работа [355,7 K], добавлен 21.09.2010Приемы программирования в Delphi. Алгоритм поиска альфа-бета отсечения, преимущества. Описание программного средства. Разработка программы, реализующая алгоритм игры "реверси". Руководство пользователя. Листинг программы. Навыки реализации алгоритмов.
курсовая работа [357,1 K], добавлен 28.02.2011