Написать программу в Delphi7, которая должна находить минимально размерное пространство (К-мерное), где существует гиперплоскость, разделяющая множество точек на 2 класса : банкротов и не банкротов.
Дано:
1) Даны предприятия с L количеством параметров относительного финансового состояния. Количество предприятий = j. Предприятие банкрот\не банкрот задается пользователем (бинарная величина 0 или 1).
2) На основании этих данных можно построить L-мерное пространство (т.е. L параметров банкротства, каждый параметр соответствует одной грани пространства, 2 параметра- двухмерное пространство, 3 параметра- трёхмерное пространство и т.д., макс L=15).
Задача:
1) Определить гиперплоскость, которая должна расположиться в К-мерном (К перебирается от 1 до L) пространстве так, чтобы все точки-банкроты были по одну ее сторону, а точки-не банкроты по другую.
2) Определить пространство такой размерности К, где проведение гиперплоскости будет возможным, а К минимальным (К<L). Вывести минимальное К на экран.
Алгоритм:
1) Берется одномерное пространство (т.е. 1 из L параметров), проверяется условие построения гиперплоскости. Для построения гиперплоскости необходимо осуществить перебор коэффициентов и смещение гиперплоскости так , чтобы она разделяла точки банкроты и точки не банкроты. Коэффициенты изменяются с шагом, который задаст пользователь, диапазоны изменения коэффициентов определяет программа, то есть необходимо остановится , когда последующая сумма штрафов будет увеличиваться по отношению к предыдущей или будет равна 0 (см. пункт 3 про штрафы). Если такое разделение возможно (штраф = 0) , то К=1 (минимально размерное пространство, где разделяющая гиперплоскость существует- одномерное). Программа выводит на экран сообщение : «минимальное К найдено. К=1)». Гиперплоскость определяется формулой (см. фотографию).
2) Если в 1-мерном пространстве невозможно построить нужную гиперплоскость, берем 2-мерное пространство (т.е. 2 параметра) и пробуем найти ее в 2-мерном пространстве. Нашли- Программа выводит на экран сообщение : «минимальное К найдено. К=2)».И так перебираем пространства до тех пор, пока не найдем то, в котором гиперплоскость существует. Если проверили последнее L-мерное пространство на наличие гиперплоскости и ,оказалось, что ее нельзя построить Программа выводит на экран сообщение «минимальное К не найдено».
3) Для определения корректности разделения гиперплоскостью точек вводим систему штрафов. У каждой точки есть значение «1» или «0» (задается пользователем, как и параметры, если «1»- не банкрот, «0» банкрот).Если хотя бы одна из точек со значением 0 оказалась в той же области, что и точки со значением 1( не в своей области), или наоборот , вводим для этой точки штраф, если таких точек несколько, высчитываем штраф для каждой и суммируем их. Штраф высчитывается по формуле (см. фотографию).
Опубликован 23.01.2015 в 15:48
Заказ находится в архиве