Решение открытой задачи поисковым методом. Показатели и критерии оценки. Создание базы данных и настройка решателя открытых задач. Интерфейс блока качественной оценки, логика работы. Случайные локальные максимумы, полученные на финальной итерации.
Аннотация к работе
На основании алгоритма работы решателя открытых задач осуществляется оценка влияния каждого внутреннего параметра на цель проектирования, и выдвигаются гипотезы. Для оценки этих гипотез во второй части проекта разрабатывается блок качественной оценки (БКО), который опровергает или подтверждает, выдвинутые решателем открытых задач, гипотезы. При анализе задачи будут учитываться следующие показатели: количество вычислительных узлов в кластере количество процессоров в вычислительном узле тип процессора, на котором строится система частота процессора сеть, на которой построена КВС емкость жесткого диска емкость оперативной памяти операционная система При данном подходе, в результате получится система, в которую будут установлена наиболее производительные процессоры, наибольшие по емкости модули оперативной памяти и жесткие диски. Решатель открытых задач позволяет эксперту произвести начальную настройку системы: задать список параметров фактов и их значений, а также собрать из параметров удачные и неудачные сочетания.В результате проделанной работы, для выбранной проблемной области была поставлена и решена открытая задача выбора архитектуры кластерной вычислительной системы, с применением решателя открытых задач.//Начинаем проверку списка гипотез for i := 0 to Items.Count - 1 do if Items[i].Checked then begin proc := Items[i].SUBITEMS.VALUEFROMINDEX[1]; // Марка процессора freq := Items[i].SUBITEMS.VALUEFROMINDEX[2]; //Частота процессора nump := Items[i].SUBITEMS.VALUEFROMINDEX[3]; //Колво процессоров nodes := Items[i].SUBITEMS.VALUEFROMINDEX[4]; //Колво узлов net := Items[i].SUBITEMS.VALUEFROMINDEX[5]; //Сеть os := Items[i].SUBITEMS.VALUEFROMINDEX[6]; //Операционная система ram := Items[i].SUBITEMS.VALUEFROMINDEX[7]; //Емкость опер. памяти rom := Items[i].SUBITEMS.VALUEFROMINDEX[8]; //Емкость жесткого диска //Проверяем наличие запрещенных комбинаций if ((proc = "Intel Itanium 2") and (freq = "1.7GHZ") ) or ((proc = "Intel Itanium 2") and (freq = "1.8GHZ") ) or ((proc = "Intel Itanium 2") and (freq = "2.0GHZ") ) or ((proc = "Intel Itanium 2") and (freq = "2.2GHZ") ) or ((proc = "Intel Itanium 2") and (freq = "2.4GHZ") ) or ((proc = "Intel Itanium 2") and (freq = "2.6GHZ") ) or ((proc = "Intel Itanium 2") and (freq = "2.66GHZ") ) or ((proc = "Intel Itanium 2") and (freq = "2.8GHZ") ) or ((proc = "Intel Itanium 2") and (freq = "3.06GHZ") ) or ((proc = "Intel Itanium 2") and (freq = "3.2GHZ") ) or ((proc = "Intel Itanium 2") and (freq = "3.4GHZ") ) or ((proc = "AMD Opteron") and (freq = "1.2GHZ") ) or ((proc = "AMD Opteron") and (freq = "1.7GHZ") ) or ((proc = "AMD Opteron") and (freq = "2.6GHZ") ) or ((proc = "AMD Opteron") and (freq = "2.66GHZ") ) or ((proc = "AMD Opteron") and (freq = "2.8GHZ") ) or ((proc = "AMD Opteron") and (freq = "3.06GHZ") ) or ((proc = "AMD Opteron") and (freq = "3.2GHZ") ) or ((proc = "AMD Opteron") and (freq = "3.4GHZ") ) or ((proc = "AMD Athlon") and (freq = "3.06GHZ") ) or ((proc = "AMD Athlon") and (freq = "3.2GHZ") ) or ((proc = "AMD Athlon") and (freq = "3.4GHZ") ) THENNOBADCOMB := false //запрещенных комбинаций нет ELSENOBADCOMB := true; //запрещенные комбинации есть //Если гипотеза удовлетворяет необходимым условиям, то считаем ее положительной if (coherence.itemindex = 0) and (criterio.itemindex = 0) then if (not(proc = "Intel Itanium 2") and not(proc = "AMD Opteron") and not(proc = "AMD Athlon")) and ((freq = "2.0GHZ") or(freq = "2.2GHZ") or(freq = "2.4GHZ") or (freq = "2.6GHZ") or (freq = "2.66GHZ") or (freq = "2.8GHZ") or (freq = "3.06GHZ") or (freq = "3.2GHZ") or (freq = "3.4GHZ")) and ((nump = "2") or (nump = "4") or (nump = "8")) and ((nodes = "500") or (nodes = "2000") or (nodes = "4000")) and ((net = "Gigabit Ethernet") or (net = "Myrinet") or (net = "Infiniband")) and ((os = "Unix") or (os = "Windows NT")) and ((ram = "24GB") or (ram = "48GB") or (ram = "64GB") or (ram = "96GB")) and ((rom = "250GB") or (ram = "512GB") or (ram = "768GB") or (rom = "1000GB") or (rom = "2000GB")) and (NOBADCOMB = true) end else if (coherence.itemindex = 0) and (criterio.itemindex = 1) then if (not(proc = "Intel Itanium 2") and not(proc = "AMD Opteron") and not(proc = "AMD Athlon")) and ((freq = "2.0GHZ")