Реализация алгоритма отбора в элитную группу

Разработка программы для отбора образцов меха в коллекцию – элитную группу из исходного множества согласно заданному эталону и определенным критериям (вид меха, высота мехового покрытия, блеск) и для прогнозирования дальнейшего развития этой группы.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 13.11.2012
Размер файла 1,8 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

СОДЕРЖАНИЕ

ВВЕДЕНИЕ

1. ПОСТАНОВКА ЗАДАЧИ

1.1 Характеристика задачи

1.2 Входная информация

1.3 Выходная информация

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

1.5 Специальные требования к техническому обеспечению

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.1.5 Настройка программных средств

4.2 Описание функции формирования элитной группы

4.2.1 Вводная часть

4.2.2 Функциональное назначение

4.2.3 Описание информации

4.2.4 Описание логики

4.2.5 Настройка программных средств

4.3 Описание функции эволюции элитной группы

4.3.1 Вводная часть

4.3.2 Функциональное назначение

4.3.3 Описание информации

4.3.4 Описание логики

4.3.5 Настройка программных средств

4.4 Описание функции "прополки"

4.4.1 Вводная часть

4.4.2 Функциональное назначение

4.4.3 Описание информации

4.4.4 Описание логики

4.4.5 Настройка программных средств

4.5 Описание функции "сбора урожая"

4.5.1 Вводная часть

4.5.2 Функциональное назначение

4.5.3 Описание информации

4.5.4 Описание логики

4.5.5 Настройка программных средств

5. ОПИСАНИЕ КОНТРОЛЬНОГО ПРИМЕРА

5.1 Назначение

5.2 Исходные данные

5.3 Результаты работы

ЗАКЛЮЧЕНИЕ

СПИСОК ЛИТЕРАТУРЫ

ПРИЛОЖЕНИЕ 1. ТЕКСТ ПРОГРАММЫ

ПРИЛОЖЕНИЕ 2. КОНТРОЛЬНЫЙ ПРИМЕР

ПРИЛОЖЕНИЕ 3. РУКОВОДСТВО ПРОГРАММИСТА

ПРИЛОЖЕНИЕ 4. РУКОВОДСТВО ОПЕРАТОРА

ВВЕДЕНИЕ

Целью данной курсовой работы является разработка программы для принятия решения с повторением - реализация алгоритма отбора в элитную группу. В качестве элитной группы используется различные виды меха. Претенденты в коллекцию будут отбираться согласно критериям: вид меха, высота мехового покрытия (в мм), блеск. Эволюция группы предусматривает набор элементов в элитную группу заново согласно выбранному рекомендателю. Развитие группы пойдет либо в положительном направлении, либо в отрицательном (деградация). Так же возможно проведение процедур «прополки», то есть исключения из группы «сорных» элементов или отбора лучших - уход из группы лучших элементов.

Задача программы показать, какие элементы попадут в группу, предусматривая элемент случайности, также показать дальнейшее развитие группы.

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

1. ПОСТАНОВКА ЗАДАЧИ

1.1 Характеристика задачи

Задача предназначена для принятия решения с повторением - для отбора мехов по трём критериям: вид меха, высота мехового покрытия (в мм), блеск. Задача предусматривает эволюцию элитной группы, процедуры «прополки» и отборки лучших.

1.2 Входная информация

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

Входные данные включают:

· Имя меха

· Вид меха

· Высота мехового покрытия (в мм)

· Блеск

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

1.3 Выходная информация

Выходной информацией является сформированная согласно эталону элитная группа, а именно коллекция видов меха. При формировании группы предусматривается включение «сорных» элементов.

При эволюции подсчитывается сумма элитной группы по критериям до и после, и в результате сравнения выводим результат, развивается группа или деградирует.

При «прополке» выводятся n заменяемых элементов с худшей суммой, а при отборе лучших - с лучшей.

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

В данной работе реализована модель - «Претендент - Рекомендатель». Она заключается в том что, на первом этапе из генеральной совокупности объектов выбираются объекты с улучшенными свойствами. В качестве таких свойств выбраны: вид меха, высота мехового покрова (в мм), блеск.

Запишем их в следующем виде:

< surface,depth,glitter> - множество критериев, где

surface - вид меха

depth - высота мехового покрова (в мм.),

glitter - блеск.

Данные эталона вводятся пользователем, обозначим их следующим образом:

<s,d,g> - множество критериев эталона, где

s - вид меха,

d - высота мехового покрова (в мм.),

g - блеск.

Элементы из генеральной совокупности попадают в элитную группу при выполнении следующего условия:

(surface >= s) & (depth >=d) & (glitter >=g)

Данная схема идеализирована, поэтому следует добавить ошибку, так что в результате в элитную группу могут попасть и не элитные элементы, так называемые «сорняки»:

(surface <= s) & (depth <=d) & (glitter <=g). Вероятность попадания «сорняка» p=0,02.

С долей сорных элементов или без нее, формируется элитная группа и с ней можно начать работать.

Введём ещё одно условие: при необходимости пополнить группу из-за того, что какие-то элементы выбыли из неё. При этом к эталону обратиться уже нельзя, так как он нужен только на этапе формирования группы. Для этого поступаем следующим образом:

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

Пусть рекомендатель rec принадлежит множеству элементов элитной группы Э, тогда rec выбирается следующим образом:

Rec = СЛЧИСЛ(Э)

Пусть претендент can принадлежит множеству генеральной совокупности Г, тогда can выбирается следующим образом:

Can = СЛЧИСЛ(Г)

Элемент добавляется при выполнении следующего условия:

Can >= Rec

При этом для элиты возможно два пути развития: положительный, когда элита состоит из элементов с высокими показателями критериев, либо отрицательный (деградация), когда число сорных элементов стало велико в группе. Для этого считается сумма до шага эволюции (S1) и сумма после эволюции (S2):

Все элементы элитной группы Э принадлежат следующему множеству:

<s,d,g> - множество критериев элемента, где

s - вид меха,

d - высота мехового покрова (в мм.),

g - блеск.

Сумма до шага эволюции вычисляется следующим образом:

где КОЛ - количество элементов в элитной группе.

Сумма после шага эволюции вычисляется следующим образом:

Элита развивается, если S1>S2, иначе элита деградирует

1.5 Специальные требования к техническому обеспечению

Программа может работать на персональном компьютере с операционной системой 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 до 11;

Высота мехового покрова = случайное число от 1 до 35;

Блеск = случайное число от 1 до 5;

2) Чтение значений критериев эталона (вид меха, высота мехового покрова (в мм), блеск).

3) Набор в элитную группу согласно условию, описанному в пункте 2.4.

4) Развитие элитной группы: выбор «рекомендателя» и «претендента».

5) Отбор в элитную группу.

6) Подсчет суммы по критериям.

7) Вывод о развитии или деградации группы.

8) Конец.

4. ОПИСАНИЕ ПРОГРАММЫ

4.1 Описание функции заполнения исходного множества

4.1.1 Вводная часть

Процедура для заполнения исходного множества в самом начале работы программы случайными значениями критериев.

4.1.2 Функциональное назначение

Процедура формирует исходное множество для дальнейшего формирования из него элитной группы.

4.1.3 Описание информации

Процедура не использует входную информацию: вид меха, высота мехового покрова (в мм), блеск.

В качестве выходной информации выводятся значения критериев в таблицу. Критерии вычисляются следующим образом:

Имя = Вид меха + номер в списке;

Вид меха = случайное число от 1 до 11;

Высота мехового покрова = случайное число от 0,1 до 20;

Блеск = случайное число от 1 до 5;

4.1.4 Описание логики

Описание логики процедуры представлено на рис.4.1.

Рис.4.1. Описание логики

4.2 Описание функции формирования элитной группы

4.2.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.4. Описание логики процедуры

4.5 Описание функции отбора лучших

4.5.1 Вводная часть

Функция удаляет указанное пользователем число элементов из элиты. Элементы выбираются по рангу суммы параметров. Элиту покидают элементы с большей суммой и их заменяют случайные элементы из генерального набора.

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://a-gold.su/articles - Классификация жемчуга

5. http://www.ezpearl.ru/kriterii_gemhuga.html - Основные критерии качества жемчуга

6. Пауэрс Л., Снелл М. «Microsoft Visual Studio 2008 в подлиннике», 2009г.

7. Фаронов В.В. «Программирование на языке С#», 2007г.

8. В.А. Биллиг «Основы программирования на С#», 2009г

9. http://www.dotsite.spb.ru/Tutorials/CSharp/

10. http://www.firststeps.ru/csharp/

ПРИЛОЖЕНИЕ 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<Pearl> list = new List<Pearl>();

List<Pearl> elite = new List<Pearl>();

int sor, sluch;

decimal summelite, summelite2;

Pearl rec;

Pearl can;

public Form1()

{ InitializeComponent();

}

//Сформировать генеральную совокупность

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 Pearl(i + 1, "Образец меха " + (i + 1).ToString(), ((surface)rnd.Next(1, 11)).ToString(), (decimal)((int)(((decimal)(20 * rnd.NextDouble())) * 1000) / 1000.0), ((glitter)rnd.Next(1, 5)).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].Value.ToString()).ToString();

dataGridView1.Rows[i].Cells[4].Value = Resource1.ResourceManager.GetObject(dataGridView1.Rows[i].Cells[4].Value.ToString()).ToString();

}

dataGridView1.Columns[1].HeaderText = "Имя";

dataGridView1.Columns[2].HeaderText = "Вид меха";

dataGridView1.Columns[3].HeaderText = "Высота мехового покрытия";

dataGridView1.Columns[4].HeaderText = "Блеск";

}

// Создать элитную группу

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].Glitter) >= ClRet1(comboBox1.Text)

&& list[i].Depth >= numericUpDown1.Value

&& FRet1(list[i].Surface) >= FRet1(comboBox2.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 "(I3) Мех кролика": r = 0; break;

case "(I2) Мех мутона": r = 1; break;

case "(I1) Мех песца": r = 2; break;

case "(SI2) Мех норки": r = 3; break;

case "(SI1) Мех каракуля": r = 4; break;

case "(VS2) Мех енота": r = 5; break;

case "(VS1) Мех соболя": r = 6; break;

case "(VVS2) Мех лисы": r = 7; break;

case "(VVS1) Мех нутрии": r = 8; break;

case "(IF) Мех куницы": r = 9; break;

case "(F) Мех шиншиллы": r = 10; break;

}

return r;

}

public int ClRet2(string s)

{ int r = 0;

switch (s)

{ case "I3": r = 0; break;

case "I2": r = 1; break;

case "I1": r = 2; break;

case "SI2": r = 3; break;

case "SI1": r = 4; break;

case "VS2": r = 5; break;

case "VS1": r = 6; break;

case "VVS2": r = 7; break;

case "VVS1": r = 8; break;

case "IF": r = 9; break;

case "F": r = 10; break;

}

return r;

}

public int FRet1(string s)

{ int r = 0;

switch (s)

{ case "Стекловидный (glass)": r = 0; break;

case "Матовый (mat)": r = 1; break;

case "Слабый (weak)": r = 2; break;

case "Средний (average)": r = 3; break;

case "Сильный (strong)": r = 4; break;

}

return r;

}

public int FRet2(string s)

{ int r = 0;

switch (s)

{ case "glass": r = 0; break;

case "mat": r = 1; break;

case "weak": r = 2; break;

case "average": r = 3; break;

case "strong": r = 4; break;

}

return r; }

// Продолжить эволюцию

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].Glitter) + elite[i].Depth + FRet1(elite[i].Surface);

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.Glitter) >= ClRet1(rec.Glitter)

&& can.Depth >= rec.Depth

&& FRet1(can.Surface) >= FRet1(rec.Surface))

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].Glitter) + elite[i].Depth + FRet1(elite[i].Surface);

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;

}

}

// Прополка

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].Glitter) + elite[i].Depth + FRet1(elite[i].Surface);

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].Glitter) + elite[min].Depth + FRet1(elite[min].Surface) > ClRet1(elite[i].Glitter) + elite[i].Depth + FRet1(elite[i].Surface))

min = i;

}

vyvod += elite[min].Glitter + " " + Convert.ToString(elite[min].Depth) + " " + elite[min].Surface + "\n";

elite.RemoveAt(min);

rec = elite[rnd.Next(0, elite.Count - 1)];

can = list[rnd.Next(0, list.Count - 1)];

if (ClRet1(can.Glitter) >= ClRet1(rec.Glitter)

&& can.Depth >= rec.Depth

&& FRet1(can.Surface) >= FRet1(rec.Surface))

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].Glitter) + elite[i].Depth + FRet1(elite[i].Surface);

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;

}

}

// Сбор урожая

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].Glitter) + elite[i].Depth + FRet1(elite[i].Surface);

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].Glitter) + elite[max].Depth + FRet1(elite[max].Surface) < ClRet1(elite[i].Glitter) + elite[i].Depth + FRet1(elite[i].Surface))

max = i;

}

vyvod += elite[max].Glitter + " " + Convert.ToString(elite[max].Depth) + " " + elite[max].Surface + "\n";

elite.RemoveAt(max);

rec = elite[rnd.Next(0, elite.Count - 1)];

can = list[rnd.Next(0, list.Count - 1)];

if (ClRet1(can.Glitter) >= ClRet1(rec.Glitter)

&& can.Depth >= rec.Depth

&& FRet1(can.Surface) >= FRet1(rec.Surface))

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].Glitter) + elite[i].Depth + FRet1(elite[i].Surface);

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;

}

}

}

// Чистота поверхности

enum surface

{ I3, I2, I1, SI2, SI1, VS2, VS1, VVS2, VVS1, IF, F

}

// Блеск

enum glitter

{ glass, mat, weak, average, strong

}

public class Pearl

{ public Pearl(int cid, string cname, string cglitter, decimal cdepth, string csurface)

{ id = cid;

name = cname;

glitter = cglitter;

depth = cdepth;

surface = csurface;

}

private string name, surface;

private int id;

private decimal depth;

private string glitter;

public int ID

{

get

{ return id;

}

set

{ id = value;

}

}

public string Name

{ get

{ return name;

}

set

{ name = value;

}

}

public string Glitter

{ get

{ return glitter;

}

set

{ glitter = value;

}

}

public decimal Depth

{ get

{ return depth;

}

set

{ depth = value;

}

}

public string Surface

{ get

{ return surface;

}

set

{ surface = 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

  • Разработка программы, решающей базовую задачу линейного программирования симплекс-методом с помощью симплекс-таблиц. Целевая функция с определенным направлением экстремума и система ограничений для нее. Разработка алгоритма программы, ее листинг.

    курсовая работа [385,6 K], добавлен 15.05.2014

  • Общее понятие графа, его виды и сущность вершинного покрытия. Написание точного алгоритма решения задачи о надежности сети, нахождение минимального покрытия. Реализация данного алгоритма на языке TurboC++. Код программы, решающий поставленную задачу.

    курсовая работа [1,3 M], добавлен 27.06.2014

  • Разработка алгоритма синтеза пленочного резистора по заданным параметрам исходного резистора, программы реализации данного алгоритма на языке С++. Отладка и тестирование программы, составление документации и инструкции пользователя данной программой.

    курсовая работа [1,7 M], добавлен 08.06.2009

  • Написание программы, формирующей текстовый файл и выводящую на экран таблицу согласно заданному условию. Реализация принципа формирования текстовых файлов, разработка отдельных модулей (процедур) выбора информации из файла. Листинг полученной программы.

    курсовая работа [769,1 K], добавлен 29.12.2011

  • Разработка программы, создающей и управляющей базой данных, ее реализация на языке Turbo Pascal. Организация алгоритма программы. Вывод информации и возможность добавления информации в базу данных. Поиск информации в базе данных по заданному значению.

    курсовая работа [26,7 K], добавлен 19.06.2010

  • Разработка линейной программы на языке С++. Разработка программ с разветвленной структурой. Составление по заданному варианту схемы алгоритма и программы вычисления тригонометрической функции с абсолютной погрешностью с использованием разложения в ряд.

    лабораторная работа [1,2 M], добавлен 12.01.2011

  • Составление алгоритма и разработка в среде программирования Delphi 7 программы, вычисляющей макроэкономические индексы цен. Реализация программы в виде 4 форм и 1 диалогового окна. Описание алгоритма решения задачи. Текст программы, руководство оператора.

    курсовая работа [1,4 M], добавлен 04.06.2013

  • Исследование симметричных алгоритмов блочного шифрования. Минусы и плюсы алгоритма IDEA. Разработка программы аутентификации пользователя и сообщений на основе алгоритма IDEA. Выбор языка программирования. Тестирование и реализация программного средства.

    курсовая работа [314,2 K], добавлен 27.01.2015

  • Методы поиска подмножеств множества вершин V графа G, удовлетворяющих определенным условиям и свойствам. Понятие независимых множеств и порядок их генерации. Определение доминирующего множества. Основные этапы решения задачи о наименьшем разбиении.

    контрольная работа [32,1 K], добавлен 11.03.2010

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.