powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Медитация над полной гистограммой оптимизации
28 сообщений из 28, показаны все 2 страниц
Медитация над полной гистограммой оптимизации
    #40003129
Иван FXS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пусть мы производим оптимизацию каким-то более-менее случайным методом проверки точек (исследуемого пространства).

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

-- более менее вблизи текущего найденного лучшего её значения (а не где-то "ниже плинтуса") --

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

Вопрос: какие из этих двух типов (областей) более перспективны для исследования (то есть продолжения случайного поиска)?
...
Рейтинг: 0 / 0
Медитация над полной гистограммой оптимизации
    #40003144
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для начала я тоже помедитирую, с опорой на методы кластеризаии. И с оглядкой на отжиг,потому что со сферической случайностью дело тёмное: либо она равномерная (или белый шум), либо она даёт клоастеры (напр, Гаусс). Кластеры (например в естественных предм. областях могут тоже разбросаны или сгруппированы).

Предполагаю с сомнением. Допустим мы как в соцопросах провели представительное предварительное тестирование. А как вела себя в динамике дисперсия по Х для сгустков F(x) и пустот? Если как в отжиге: -->0, я возьму сгустки. Если неизвестно как - а такое возможно? Постоянная - тем более. А после нескольких таких проб вдруг бац! - облом, надо было пустоты изучать. Так опыт и нарабатывается.
Пока могу только для сферического распределения подходить так, как выполняют разведочный анализ (см. Мешалкин,Айвазян или аналогия с соцопросом) Начальная оценка Д и МО, потом тестирование, уточнение Д и МО. И т.д итерационно. Целая наука.
Скажу только, что проведя тесты, не имеем гарантии т.н. "ураганных проб" из геологии. против них специально изобретали робастные методы оценок (в данном случае речь об априорном стат. оценивании показателей Д и МО). Как ни странно, адаптивные оценки на основе медианы в свое время показали себя лучше других.

Ясны же истоки вопроса: как с завязанными глазами отличить локальную лужу от глобального болота. Носить с собой шарик на длинной резинке, забрасывать его в разные стороны и ждать, когда скатится. Сколько ждать? хороший вопрос.
...
Рейтинг: 0 / 0
Медитация над полной гистограммой оптимизации
    #40003151
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Иван FXS,

а не проще искать чем ни будь более обоснованным с таких мест? н-р, Алгоритм Левенберга — Марквардта
...
Рейтинг: 0 / 0
Медитация над полной гистограммой оптимизации
    #40003168
Иван FXS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
exp98
Ясны же истоки вопроса
-- истоки вопроса -- попытка выстроить (и обсудить) полную антитезу подходу, который -- как обсужденный ранее метод отжига -- настолько ничего не помнит о процессе перебора точек (исследуемого пространства), что даже найденные (в процессе) хорошие результаты (а среди них, возможно, и глобальный оптимум) предлагает отбрасывать ...

При том что ресурсы (памяти) современного железа позволяют вообще ничего отбрасывать, но весь процесс блуждания по исследуемому пространству сохранять. Однако сохранить-то можно -- вопрос: как задействовать этот массив информации в повышении эффективности поиска?
...
Рейтинг: 0 / 0
Медитация над полной гистограммой оптимизации
    #40003302
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А каким подходом найти минимум стохастической функции?
...
Рейтинг: 0 / 0
Медитация над полной гистограммой оптимизации
    #40003410
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Иван FXS
При том что ресурсы (памяти) современного железа позволяют вообще ничего отбрасывать, но весь процесс блуждания по исследуемому пространству сохранять.

Если ресурсы это позволяют, то и блуждание не нужно.
...
Рейтинг: 0 / 0
Медитация над полной гистограммой оптимизации
    #40003512
Иван FXS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov, ресурсы позволяют это , но всё-таки не всё (что душе угодно).
...
Рейтинг: 0 / 0
Медитация над полной гистограммой оптимизации
    #40005226
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вместо отжига сделал просотой вариант на VBA. Метод роящихся частиц для 1-мерной ф-ции. Делал, чтоб скорее.
Выглядит как готовый макрос для эксэлки-2003. Можно на этом макете обдумать подходы к сферической случайности для сферической ф-ции.
- В чистой книге открыть "Вижуал бэйсик".
- Через меню вставить новый "Модуль".
- В чистоеполедля кода Модуля вставить текст проги.
- Дополнительно открыть окно "Immidiate" - туда пойдут отладочные принты.
- "F5" = start, и подождать недолго. В случе чего "ESC".

В основном описал параметры в начале проги. Кратенько описание остального.
Главные недостатки примера:
ф-ция одномерная, дискретная (150 значений),
её аргументы целочисленные,
случ.величины не явл. независимыми, все из одной последоват-сти.
ГПСЧ сам по себе недостаток.
Параметры метода подбирать рукми.

С т.зр. модульности оформлено так:
Собственно метод "Function roen()"
Над ним обёртка "Sub test()". Она запускает послед-ность прогонов одного теста.

Работает так:
52 раза Х 800 прогонов.
Разница у погонов в том, что после вызова roen() там внутри ГПСЧ стартует заново с другого значения (секунды от полуночи).
Окончив прогон, roen() возвращает приближённое значени миниммуа ф-ции.
И так 800 раз.
Затем test() печатает МОж и СКО от полученных 800 значений.
И так 52 раза, из к-рых первые 2 раза для предположительного "разогрева" ГПСЧ.
Затем копируем 3-52 разы на лист в эксэлу и смотри графики.
Потом, как это делал я, для разных параметров метода можно сравнивать общее среднее этих средних или их медиану, чтобы понимать точность матода.
Сейчас roen() возвращаетв test() оценку минимума в массиве структур "f0().fm". В test() МатОж и СКО считаются для минимума. Лёгким движением руки их можно считать для номера точки "f0().ym".

Учитывая недостаток (целочисленность аргументов ф-ции), подбор параметров менее очевиден, чем для непрерывного случая. Поскольку точки должны прыгать на целое число шагов. Но в отжиге прыгает одна точка, а в отжиге их несколько и в конце итераций они могут сходиться друг к другу.
Эти прыжки в процессе уменьшаются и чем-то похожи на прыжки в отжиге, так что есть и общее у обоих методов.
И конечно никакой гарантии точного поиска.

Здесь текст проги на VBA (133 строки).
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
'' Искать Min( f()) и точку Xmin, метод роения M целочисленных точек
Option Explicit
Option Base 1
Private Type MyStat
    fm As Single
    ym As Single
End Type

 '' M точек роения, NN итераций, k Значений оптимизируемой ф-ции,
 '' {alf, bet, gam} параметры для расчёта след точки
 '' Ksi - независимые случ.вел. (но здесь они НЕ независ.)
 '' f(x(i)) - аргумент и значения ф-ции, аргументы x(i) целые
 '' Xm(M), Xm2(M) - M эволюционирующих точек: x(i) и x(i+1) 
 '' V(M) - вектор скорости эволюционирования к следующей итерации x(i)= x(i+1) + V(i+1)
 '' eps - не исп.
''''''const dd= 0, NN=10^2, M=7, k= 34+21,  alf=0.95, bet=0.2, gam=0.2, eps= 1.0e-6 
const dd= 0, NN=10^2, M=10, k= 150, alf=0.85, bet=0.3, gam=0.3, eps= 1.0e-6 

'' Тест для статистики
Sub test()
    On Error GoTo myerr
    Dim tn As Integer, ind As Integer, t As Integer
    tn = 800: ind = 1  ''2

    Dim tt As Integer, pp As Integer, x As Single
    For tt = 1 To 52
        x = Timer: For pp = 1 To 1023 * (x - Int(x)): DoEvents: Next pp
        
        ReDim f0(tn) As MyStat
        Dim m0 As Double, d0 As Double, tmp As Single
        m0 = 0: d0 = 0
        
        For t = 1 To tn
            tmp = roen(f0(t))
            m0 = m0 + f0(t).fm: d0 = d0 + f0(t).fm ^ 2
        Next t
        
        m0 = m0 / tn: d0 = d0 / (tn - 1) - m0 ^ 2
        Debug.Print "m="; Round(m0, 4); " sqr(d)="; Round(Sqr(d0), 4); "   m-s="; _
                   Round(m0 - Sqr(d0), 4); "  m+s="; Round(m0 + Sqr(d0), 4)
    Next tt
    Exit Sub

    myerr:
        Debug.Print Err.Number; " "; Error
        Resume Next
End Sub
'' ******************************************************


Private Function roen(ByRef f0 As MyStat) As Single
  On Error GoTo myerr
  
  Redim f(k), x(k), Xm(M) As Single, Xm2(m) As Single, V(m) As Single
  Dim minf, Xmm, Ksi1,Ksi2, tmp, t As Integer, kmin As Integer, fXmm As Single
  Dim i As Integer, j As Integer, kdim As Integer
  
  Randomize
  tmp= Rnd ''(Time)
  For i=1 to k: x(i)= i :Next i   '' начальные точки на оси X
  tmp= Rnd ''(Time)    на [0; 1]
  For i=1 to M: V(i)= Round(1+ Rnd, dd) :Next i   '' начальные скорости
  '''For i=1 to k: x(i)= -1 +0.01*(i-1) :Next i
  
  '' f(k) - оптимизируемая ф-ция
  For i = 1 TO 9 :  f(i)= 1/x(i): Next i
  For i = 1 TO 10 :  f(9+i)= 1/x(i): Next i
  For i = 1 TO 8 :  f(9+10+i)= 1/x(i): Next i
  For i = 1 To 7:   f(9 + 10 + 8 + i) = 1 / x(i): Next i
  
  For i = 1 To 8:   f(9 + 10 + 8 + 7 + i) = 1 / x(i): Next i
  For i = 1 To 7:   f(9 + 10 + 8 + 7 + 8 + i) = 1 / x(i): Next i
  For i = 1 To 6:   f(9 + 10 + 8 + 7 + 8 + 7 + i) = 1 / x(i): Next i

  For i = 1 To k:   f(i) = 2 + (1 + Sin(i)) * Sin(7 * i + 3.14159265358979 / 1023): Next i
  '''For i = 1 TO k :  f(i)= x(i)^2*(2+abs(sin(8*x(i)))): Next i  '' на [-4.0; +4.0]
  '' ******************************************************
  
  '' Случайные точки начальных min значений
  For i=1 to M: Xm(i)= Round( 1+ Rnd *(k-1), dd): Xm2(i)= Xm(i) :Next i  '' нормировать случ.знач. на оси X
  
  '' Основной цикл работы
  For t=1 to NN
  
      '' Xm() - точки предыдущей итерации, Xm2() - новые точки для текущей итерации
      '' Xmm - их общий минимум
      For i = 1 To M
          tmp = Xm2(i)
          If f(Xm2(i)) >= f(Xm(i)) Then Xm2(i) = Xm(i)
          Xm(i) = tmp
      Next i
  
      kmin= 1:  minf= f(Xm2(kmin))
      For i = 1 + 1 To M
          If f(Xm2(i)) < minf Then minf = f(Xm2(i)): kmin = i
      Next i
      Xmm = Xm2(kmin)
  
  
      '''' новые скорости
      For i=1 to M
          tmp= Rnd:  Ksi1 = Rnd:  tmp= Rnd: Ksi2 = Rnd
          V(i) = alf * V(i) + bet * Ksi1 * (Xm2(i) - Xm(i)) + gam * Ksi2 * (Xmm - Xm(i))  
      Next i
  
      '' новые точки    
      For i = 1 To M
          Xm2(i) = Round(Xm(i) + V(i), dd)
          If Xm2(i) < 1 Then Xm2(i) = 1
          If Xm2(i) > k Then Xm2(i) = k
      Next i
  
  Next t
  
  '' Итоговый min и его координата
  kmin = 1: minf = f(Xm2(kmin))
  For i = 1 + 1 To M
      If f(Xm2(i)) < minf Then minf = f(Xm2(i)): kmin = i
  Next i
  fXmm = f(Xm2(kmin))
      ''''''''''ret = MsgBox("min=" + Str(fXmm) + ", " + Str(Xm2(kmin)), vbOKOnly, "Закончили")
  
  f0.fm = fXmm: f0.ym = Xm2(kmin)
  roen = fXmm
Exit Function ''Sub
'' ******************************************************

 myerr:
     Debug.Print Err.Number; " "; Error
     Resume Next
 
End Function
'' ******************************************************

...
Рейтинг: 0 / 0
Медитация над полной гистограммой оптимизации
    #40005323
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Считаю полезным дополнить.
К недостаткам реализации. Поведение вектора скорости на краях области определения ф-ции (т.е. на концах отрезка). Ну я просто сажаю точку в границу отреза, 1 или к соответственно.

К вопросу о скорости работы. Ф-ция задана в 150 точках, среди к-рых 5-7-10 точек роятся в течение 100 итераций, и для них на каждой итерации считается 2 случ значения. Конечно быстрее найти точный минимум полным перебором среди 150 значений.

Тем более статметод в половине случаев не даёт глобального минимума (точный минимум= 0.0093 в 33-й точке). Я сравнивал точность для роев из 5, 7 и 10 точек при 10 и 100 итерациях алгоритма. 100 итераций в данном случае избыточны, но 10 итераций может не хватить.
При M= 7 и 10, и NN=100 оценка минимума практически одинаковая ~0,1116.
Но при М=5 для NN=10 оценка ~0,13, а для NN=100 она ~0,12.
Значения конечно зависят от весов, используемых для расчёта скорости каждой точки.
...
Рейтинг: 0 / 0
Медитация над полной гистограммой оптимизации
    #40005552
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Теперь можно потрогать вариант метода для непрерывной ф-ции. Сама ф-ция та же самая. Изменения в порге минимальные.
Зато изменения в параметрах весьма значительны:

52*80прогонов по 10^3 итераций M=40 точек на [1; 15]
MO= 0,6089 mediana= 0,6016 СКО= 0,6087

- Начальная скорость= 1+Rnd (на первой итерации метода).
- Кол-во точек M= 40 (вмесо 10). Даже этого недостаточно, из-за вида непрерывной ф-ции. Шаг=+1.0 теряет слишком много подробностей. Уменьшил область определения ф-ции до отрезка [1; 15] (вмесо 1-150).
- Кол-во итераций одного прогона NN = 10^3 (и скажу, даже этого недостаточно, но может сгодиться для разведочного анализа).
- Чтобы не терять время коло-во прогонов для усреднения tn= 80 (вместо 800).
- Учитывая, что аргументы ф-ции теперь непрерывные и double, округление их до целого не выполнять.
И всё равно судя по тестовым прогонам оценка глобального минимума на [1; 15] очень неточна. При шаге дискретизации =+0.1 глобальный мин на отрезке = 0,043.
Ещё кучка локальных минимумов на уровнях 0,5 1,0 1,5 2,0.
Однако судя по СКО==МО, на 80 прогонах оценка гуляла по всем перечисленным уровням. Причём похоже, что именно уровень глобального мин. достигался реже всего. Неудивительно, поскольку впадин уровня ~ 0.000 меньше,чем на других уровнях.

Как может помочь гибрид Ньютона и градиента, не представляю.
А значит проще всего в такой ситуации (если ф-ция вычисляется достаточно быстро) полный перебор с достаточно мелким шагом. Но надо ещё выбрать этот шаг.
ИМХО, без разведочного анализа не обойтись.

Теперь вариант проги для непрерывного случая (точнее сказать ф-ция,опредедлена на отрезке):
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
'' Искать Min( f()) и точку Xmin, метод роения M вещественных точек
Option Explicit
Option Base 1
Private Type MyStat
    fm As Single
    ym As Single
End Type

 '' M точек роения, NN итераций на непрерывном [1; k],
 '' {alf, bet, gam} параметры для расчёта след точки
 '' Ksi - независимые случ.вел. (но здесь они НЕ независ.)
 '' FF(x) - аргумент x и значения ф-ции double
 '' Xm(M), Xm2(M) - M эволюционирующих точек: x(i) и x(i+1), где i - итерации.
 '' Xm0(M) - начальный значени точек (чтобы потом сравнить с окончанием) 
 '' V(M) - вектор скорости эволюционирования к следующей итерации x(i)= x(i+1) + V(i+1)
 '' eps - не исп.
Const dd = 0, NN = 10 ^ 3, M = 40, k = 15, alf = 0.95, bet = 0.2, gam = 0.2, eps = 0.000001
''''''Const dd = 0, NN = 10 ^ 2, M = 40, k = 15, alf = 0.85, bet = 0.3, gam = 0.3, eps = 0.000001 
'' ******************************************************

  
'' Тест для статистики
Sub test()
    On Error GoTo myerr
        Dim tn As Integer, t As Integer '', ind As Integer

    tn = 80    '' : ind = 1  ''2

    Dim tt As Integer, pp As Integer, x As Single
    For tt = 1 To 52
        x = Timer: For pp = 1 To 1023 * (x - Int(x)): DoEvents: Next pp
        
        ReDim f0(tn) As MyStat
        Dim m0 As Double, d0 As Double, tmp As Single
        m0 = 0: d0 = 0
        
        For t = 1 To tn
            tmp = roen(f0(t))
            m0 = m0 + f0(t).fm: d0 = d0 + f0(t).fm ^ 2
        Next t
        
        m0 = m0 / tn: d0 = d0 / (tn - 1) - m0 ^ 2
        Debug.Print "m="; m0; " sqr(d)="; Sqr(d0); "   m-s="; _
                   m0 - Sqr(d0); "  m+s="; m0 + Sqr(d0)
    Next tt
    Exit Sub

    myerr:
        Debug.Print Err.Number; " "; Error
        Resume Next
End Sub
'' ******************************************************


Private Function roen(ByRef f0 As MyStat) As Double
  On Error GoTo myerr
  
  ReDim Xm(M) As Double, Xm2(M) As Double, V(M) As Double, Xm0(M) As Double
  Dim minf as Double, Xmm as Double, Ksi1 as Double, Ksi2 as Double, _
        tmp as Double, t As Integer, kmin As Integer, fXmm As Double
  Dim i As Integer, j As Integer, kdim As Integer, FF1 as Double, FF2 as Double
  
  Randomize
  tmp= Rnd ''(Time):  tmp= Rnd ''(Time)    на [0; 1]
  For i=1 to M: V(i)= 1 + Rnd : Next i   '' начальные скорости
    
  '' FF() - оптимизируемая непрерывная ф-ция
  '' FF() = 2 + (1 + Sin(x)) * Sin(7 * x + 3.14159265358979 / 1023)
  ''' FF= x^2*(2+abs(sin(8*x))) на [-2.0; +2.0]
  '' ******************************************************
  
  '' Случайные точки начальных min значений
  For i=1 to M: Xm(i)= 1+ Rnd *(k-1): Xm2(i)= Xm(i): Xm0(i)= Xm(i) :Next i  '' нормировать случ.знач. на оси X
  
  '' Основной цикл работы
  For t=1 to NN
  
      '' Xm() - точки предыдущей итерации, Xm2() - новые точки для текущей итерации
      '' Xmm - их общий минимум
      For i = 1 To M
          tmp = Xm2(i): FF1= FF(Xm(i)): FF2= FF(Xm2(i))
          If FF2 >= FF1 Then Xm2(i) = Xm(i)
          Xm(i) = tmp
      Next i
  
      kmin= 1:  minf= FF(Xm2(kmin))
      For i = 1 + 1 To M
          If FF2 < minf Then minf = FF2: kmin = i
      Next i
      Xmm = Xm2(kmin)
  
  
      '''' новые скорости
      For i=1 to M
          tmp= Rnd:  Ksi1 = Rnd:  tmp= Rnd: Ksi2 = Rnd
          V(i) = alf * V(i) + bet * Ksi1 * (Xm2(i) - Xm(i)) + gam * Ksi2 * (Xmm - Xm(i))  
      Next i
  
      '' новые точки    
      For i = 1 To M
          Xm2(i) = Xm(i) + V(i)
          If Xm2(i) < 1 Then Xm2(i) = 1
          If Xm2(i) > k Then Xm2(i) = k
      Next i
  
  Next t
  
  '' Итоговый min и его координата
  kmin = 1: minf = FF(Xm2(kmin))
  For i = 1 + 1 To M
      If FF(Xm2(i)) < minf Then minf = FF(Xm2(i)): kmin = i
  Next i
  fXmm = FF(Xm2(kmin))
      ''''''''''ret = MsgBox("min=" + Str(fXmm) + ", " + Str(Xm2(kmin)), vbOKOnly, "Закончили")
  
  f0.fm = fXmm: f0.ym = Xm2(kmin)
  roen = fXmm
Exit Function ''Sub
'' ******************************************************

 myerr:
     Debug.Print Err.Number; " "; Error
     Resume Next
 
End Function
'' ******************************************************

Private Function  FF( x as double) as double '' на [1: k]
    FF = 2 + (1 + Sin(x)) * Sin(7 * x + 3.14159265358979 / 1023)
End Function
'' ******************************************************

Пример ф-ции, отрезок [1; 15], точки с шагом +0,1
...
Рейтинг: 0 / 0
Медитация над полной гистограммой оптимизации
    #40005554
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...но не успел рисунок подцепить.
...
Рейтинг: 0 / 0
Медитация над полной гистограммой оптимизации
    #40005557
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ещё немножко подумал. Может оказаться, что, зафиксировав шаг дискретизации ф-ции, и проведя развед. анализ (вкл. тот, что я здесь сделал),так вот,может оказаться, что после этоголучше перейти к дискретному варианту метода. Поскольку (ИМХО) в нём прыжки целочисленные, это напоминает как бы доработку непрерывного метода путём добаваки случайных прыжков.
А также проделанный предв. анализ дискретных случаев хочет убедить меня в том, что локализовав начальные М точек, мы скорее найдём ещё лучшую оценку для глоб. минимума.

И так 10 раз, т.к. изначально был дан отрезок [1; 150].

Затем иерархически дробим каждый отрезок более мелкой дискретизацией ...
И т.д.

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

Заключение.
Примерно так мне видится запрашиваемая альтернатива с поправками на к-нибудь другой статметод локального поиска.
Вы готовы к этому?
...
Рейтинг: 0 / 0
Медитация над полной гистограммой оптимизации
    #40005714
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
exp98
Но надо ещё выбрать этот шаг.

Он задаётся ещё на этапе постановки задачи. В пункте "допустимое отклонение".
...
Рейтинг: 0 / 0
Медитация над полной гистограммой оптимизации
    #40005795
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Разведка всё равно нужна.
В задачах, прикладных (к природе или технике), этого шага не знают обычно. Могут задать точность самого минимума, а локализация его места на Х скорее всего будет физико-техническим параметром устройства или модели, для к-рых будет расчёт.
И если заранее загрубить шаг, то (как в примере), позиция минимума выскочит куда-нить вроде того: газануть педалью в пол, вместо лёгкого нажатия. И это мож оказаться не физичным или неприемлемым решением. Помимо того, что значение оптимума будет вообще далёким от оптимума.
...
Рейтинг: 0 / 0
Медитация над полной гистограммой оптимизации
    #40006060
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Интересно сравнить метод Роя с методами Отжига и ГА.
...
Рейтинг: 0 / 0
Медитация над полной гистограммой оптимизации
    #40006341
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сравниьт можно, время выделить - не знаю. С моей колокольни отжиг проще ГА. И есть нюанс для обоих троих: кучка модификаций на разные случаи жизни. Я взял как проще, поскольку отжигу требовались конкретные распределения, а их надо реализовывать, а я не люьлю чужое искать, ну и т.п.
...
Рейтинг: 0 / 0
Медитация над полной гистограммой оптимизации
    #40006344
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Помнишь мою задачу по поиску границ 2-3 фотографий в фотоальбоме? Отжиг справится?
...
Рейтинг: 0 / 0
Медитация над полной гистограммой оптимизации
    #40006346
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как не помнить, всё жду возможностей продолжить, зацепило. Есть сомнение, чиой-то не могу найти на диске.
Ай, балда садовая, они на другом ноте. Тогда словами. Поиск минимума (максимума) яркости я пробовал. Не всегда надёжно. Могут быть фоты, где фон тоже белый.
Могут быть - совсем криво размещённые.
Я остановился на том, что сначала делю лист вертикально.
Потом на каждой половинке фоты надо сегментировать. Вот на этом месте всё и осталось ... То есть идею проверить не успел. Сранно, что никто больше не захотел.
...
Рейтинг: 0 / 0
Медитация над полной гистограммой оптимизации
    #40006350
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хм.. я тоже долго искал. Оказывается в архивариусе (где-то 10 страница)
https://www.sql.ru/forum/1282300-10/chetvergovyy-arhivarius
...
Рейтинг: 0 / 0
Медитация над полной гистограммой оптимизации
    #40006359
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Причём, я не просто пробовал искать минимумы. Это была главная гипотеза для нарезки каждой половинки: проектировать пикселы в направлении найденных квазипрямых. Но из-за шумов фото нужно производить отбор из множества претендентов на главное направление. Вот сейчас я это вспомнил. Так что это "to do". У меня секретов нет))
...
Рейтинг: 0 / 0
Медитация над полной гистограммой оптимизации
    #40006368
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я умру на перформансе. Просто не дождусь результатов. Поэтому решать задачу на оригинальном разрешении
фоток не буду. Их надо уменьшить хотя-бы до 64х64 pix.
...
Рейтинг: 0 / 0
Медитация над полной гистограммой оптимизации
    #40006369
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вместо того, я картинку сравнения даю о последнем эксперименте по Роению.
Напомню, последние параметры были автор52*80прогонов по 10^3 итераций M=40 точек на [1; 15]
ф-ция непрерывна,
MO= 0,6089 mediana= 0,6016 СКО= 0,6087 Если бцть уверенным, что ищем минимум, и видим, что MO-СКО=0, то наверное его и надо брать за оценку минимума.

А на рисунке 3 варианта. Верхний - непрерывная ф-ция, 2 нижних - дискретная.
Для дисретных параметры такие, но вдруг я всё уже спутал, надёжнее проверить:
NN=10^2 M=10
tn=800 МО=0,2587 СКО= 0,2509
alf=0.80 bet=0.3 gam=0.3

NN=10^2 M=10
tn=800 МО=0,3589 СКО=0,4444
alf=0.95 bet=0.2 gam=0.2

Зато точно, что МО-СКО в обоих случаях ~0.
Итого во всех случаях МО-СКО~0.
Беда в том, что ф-ция модет оказаться настолко изгибистой, что распределение в тестах станет многомодальнымили хот ябы как в Пуассоне, а дисперсия огромной, и тогда МО-СКО<< Min(f()).
И неизвестно в какой точке. И придётся точку искать, а она не существует и ... за что боролись статметодами?
...
Рейтинг: 0 / 0
Медитация над полной гистограммой оптимизации
    #40006370
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Медитация над полной гистограммой оптимизации
    #40006372
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Их надо уменьшить хотя-бы до 64х64 pix.
Это я тоже пробовал, помнютолько, что рез-т не понравился. Но ведь прогу прогонять один тоько раз. Ведь не бизнес же на этом?
...
Рейтинг: 0 / 0
Медитация над полной гистограммой оптимизации
    #40006715
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну вотдля сравнения рез-ты некоторым отжигом.
Быстренько переделал прямо в прежней проге, по живому резал, оставив много лишнего.
Из выводов. Да, действительно простой отжиг требует много-много итераций.
Да даже и так понятно, в Роении много точек, здесь одна. Когда ещё она запрыгнет во все нужные ямы ... И надо добиться, чтобы это случилось при подходящей температуре, чтобы не выпрыгнуть тут же из нужной ямы. По крайней мере я не смог обеспечить нужную.

Ну и тот самый вывод. При сравнимых с Роением кол-ве итераций Отжиг хорош для низкочвстотных ям. Требует нудной настройки.
"Суперотжиг" не пробовал и не хочу.
Дальнейшее без комментариев.

Результаты, 10*5 прогонов, Т0 - начальная температура, NN=10^4 итераций отжига.
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
(NN,T0,alf)= 10000  4,66666666666667  0,95 
m= 2,10971186161041  sqr(d)= 1,48214675321754    m-s= 0,62756510839287   m+s= 3,59185861482796 
m= 2,21559595167637  sqr(d)= 1,24712293607302    m-s= 0,96847301560335   m+s= 3,46271888774939 
m= 2,56521064341068  sqr(d)= 1,43709870885513    m-s= 1,12811193455555   m+s= 4,00230935226581 
m= 2,17534555792809  sqr(d)= 1,37297467736085    m-s= 0,802370880567234   m+s= 3,54832023528894 
m= 2,59951611757278  sqr(d)= 1,14973102755754    m-s= 1,44978509001524   m+s= 3,74924714513033 

(NN,T0,alf)= 10000  4,66666666666667  0,95 
m= 2,14511236846447  sqr(d)= 1,2124933304316    m-s= 0,932619038032866   m+s= 3,35760569889607 
m= 2,42599695920944  sqr(d)= 1,09938782507275    m-s= 1,32660913413669   m+s= 3,5253847842822 
m= 2,47587710618973  sqr(d)= 1,10138949907058    m-s= 1,37448760711915   m+s= 3,57726660526031 
m= 2,60762978792191  sqr(d)= 1,12937834392838    m-s= 1,47825144399352   m+s= 3,73700813185029 
m= 2,2336869597435  sqr(d)= 0,978422759681621    m-s= 1,25526420006188   m+s= 3,21210971942512


Как бы отжиг:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
'' Искать Min( f()) и точку Xmin, метод отжига
Option Explicit
Option Base 1
Private Type MyStat
    fm As Single
    ym As Single
End Type

 '' M точек роения, NN итераций на непрерывном [1; k],
 '' {alf, bet, gam} параметры для расчёта след точки
 '' Ksi - независимые случ.вел. (но здесь они НЕ независ.)
 '' FF(x) - аргумент x и значения ф-ции double
 '' Xm(M), Xm2(M) - M эволюционирующих точек: x(i) и x(i+1), где i - итерации.
 '' Xm0(M) - начальный значени точек (чтобы потом сравнить с окончанием) 
 '' V(M) - вектор скорости эволюционирования к следующей итерации x(i)= x(i+1) + V(i+1)
 '' eps - не исп.
Const dd = 0, NN = 10 ^ 1, M = 1, k = 15, alf = 0.9, bet = 0.2, gam = 0.2, eps = 0.000001, T0=100
''''''Const dd = 0, NN = 10 ^ 2, M = 40, k = 15, alf = 0.85, bet = 0.3, gam = 0.3, eps = 0.000001 
'' ******************************************************

  
'' Тест для статистики
Sub testOtj()
Sub testOtj()
    On Error GoTo myerr
    Dim tn As Integer, t As Integer, t1 As Integer

    Debug.Print "T0="; T0

    tn = 10: t1 = 5

    Dim tt As Integer, pp As Integer, x As Single
    For tt = 1 To t1
        x = Timer: For pp = 1 To 1023 * (x - Int(x)): DoEvents: Next pp
        
        ReDim f0(tn) As MyStat
        Dim m0 As Double, d0 As Double, tmp As Single
        m0 = 0: d0 = 0
        
        For t = 1 To tn
            tmp = otjig(f0(t))
            m0 = m0 + f0(t).fm: d0 = d0 + f0(t).fm ^ 2
        Next t
        
        m0 = m0 / tn: d0 = d0 / (tn - 1) - m0 ^ 2
        Debug.Print "m="; m0; " sqr(d)="; Sqr(d0); "   m-s="; _
                   m0 - Sqr(d0); "  m+s="; m0 + Sqr(d0)
    Next tt
    Debug.Print ""
    Exit Sub

    myerr:
        Debug.Print Err.Number; " "; Error
        Resume Next
End Sub
'' ******************************************************


Private Function otjig(ByRef f0 As MyStat) As Double
  On Error GoTo myerr
  
  ReDim Xm(M) As Double, Xm2(M) As Double, V(M) As Double, Xm0(M) As Double
  Dim minf as Double, Xmm as Double, Ksi1 as Double, Ksi2 as Double, _
        tmp as Double, t As Long, kmin As Integer, fXmm As Double
  Dim i As Integer, j As Integer, kdim As Integer, FF1 as Double, FF2 as Double
  ReDim T2(NN) As Double
  Dim p As Double

  
  Randomize
  tmp= Rnd ''(Time):  tmp= Rnd ''(Time)    на [0; 1]

    
  '' FF() - оптимизируемая непрерывная ф-ция
  '' FF() = 2 + (1 + Sin(x)) * Sin(7 * x + 3.14159265358979 / 1023)
  ''' FF= x^2*(2+abs(sin(8*x))) на [-2.0; +2.0]
  '' ******************************************************
  
  '' Случайные точки начальных min значений
  For i=1 to M: Xm(i)= 1+ Rnd *(k-1): Xm2(i)= Xm(i): Xm0(i)= Xm(i) :Next i  '' нормировать случ.знач. на оси X
  
  '' Основной цикл работы
  For t=1 to NN
  
      '' Xm() - точки предыдущей итерации, Xm2() - новые точки для текущей итерации
      '' Xmm - их общий минимум
   
      '''' новая температура TT(t)
      If t = 1 Then T2(t) = alf * T0 Else T2(t) = alf * T2(t - 1)

      FF1= FF(Xm(1)): FF2= FF(Xm2(1))
      Xm(1) = Xm2(1)
  
      kmin= 1:  minf= FF(Xm2(kmin))
      '' Новое значение с вероятностью
      If FF2 < FF1 Then
          Xmm = FF2: kmin = 1
      Else
          tmp= Rnd:  tmp= Rnd
          p= exp(-(FF2 - FF1)/T2(t))
          If tmp<=p Then Xmm = FF2 Else Xmm = FF1
      End If
  
  
      '' новые точки    
      Dim digits As String
      For i = 1 To M
          tmp = Rnd: digits = CStr(tmp): If Asc(Right(digits, 1)) Mod 2 = 1 Then tmp = -tmp
          Xm2(i) = Xm2(i) + tmp * ((k - 1) * T2(t) / T0)
          If Xm2(i) < 1 Then Xm2(i) = 1
          If Xm2(i) > k Then Xm2(i) = k
      Next i
  
  Next t
  
  '' Итоговый min и его координата
  kmin = 1: minf = FF(Xm2(kmin))
  fXmm = FF(Xm2(kmin))
      ''''''''''ret = MsgBox("min=" + Str(fXmm) + ", " + Str(Xm2(kmin)), vbOKOnly, "Закончили")
  
  f0.fm = fXmm: f0.ym = Xm2(kmin)
  otjig = fXmm
Exit Function ''Sub
'' ******************************************************

 myerr:
     Debug.Print Err.Number; " "; Error
     Resume Next
 
End Function
'' ******************************************************

Private Function  FF( x as double) as double '' на [1: k]
    FF = 2 + (1 + Sin(x)) * Sin(7 * x + 3.14159265358979 / 1023)
End Function
'' ******************************************************

Добавлю: это случай непрерывной ф-ции.
...
Рейтинг: 0 / 0
Медитация над полной гистограммой оптимизации
    #40006745
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Покушавши, меня стал жечь позор за предыдущую стыдобу. Как я в отжиге обеспечивал знакопеременность шага. Красиво навертел. На голодный желудок и не такое можно придумать. Всем пока.
...
Рейтинг: 0 / 0
Медитация над полной гистограммой оптимизации
    #40006852
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
offСтранно прозвучал слышать глагол "жечь" в топике где обсуждали "отжиг"
Задумался ....
...
Рейтинг: 0 / 0
Медитация над полной гистограммой оптимизации
    #40006972
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Такое совпадение случайно.
Но я с дополнением. Посмотрел доп. статистику, правда сократив кол-во тестов. Теперь не знаю, что с ней делать.
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
187.
188.
189.
190.
191.
192.
193.
194.
195.
196.
197.
198.
199.
200.
201.
202.
203.
204.
205.
206.
207.
208.
209.
210.
211.
212.
213.
214.
215.
216.
217.
218.
219.
220.
221.
222.
223.
224.
225.
226.
227.
228.
229.
230.
231.
232.
233.
234.
235.
236.
237.
238.
239.
240.
241.
242.
243.
244.
245.
246.
247.
248.
249.
250.
251.
252.
253.
254.
255.
256.
257.
258.
259.
260.
261.
262.
263.
264.
265.
266.
267.
(NN,T0,alf,k)= 1000  4,66666666666667  0,95  15 
m= 0,926770550610711  sqr(d)= 1,27686339215027    m-s=-0,350092841539563   m+s= 2,20363394276099 
m= 0,465442749485374  sqr(d)= 0,390889382780429    m-s= 7,45533667049448E-02   m+s= 0,856332132265802 
m= 0,827515912055969  sqr(d)= 0,998816734265985    m-s=-0,171300822210016   m+s= 1,82633264632195 
m= 0,705986773967743  sqr(d)= 0,584878773122252    m-s= 0,121108000845491   m+s= 1,29086554708999 
m= 0,478486490249634  sqr(d)= 0,302717136865398    m-s= 0,175769353384236   m+s= 0,781203627115031 
m= 0,39712381362915  sqr(d)= 0,13237460454305    m-s= 0,2647492090861   m+s= 0,5294984181722 
m= 0,757775062322617  sqr(d)= 0,935196732036127    m-s=-0,17742166971351   m+s= 1,69297179435874 
roen: (pp, xx(pp), f(xx(pp)) )= 904  15  0,3971238 

(NN,T0,alf,k)= 1000  4,66666666666667  0,95  15 
m= 0,715671868907884  sqr(d)= 0,957631342846417    m-s=-0,241959473938532   m+s= 1,6733032117543 
m= 0,870501458644867  sqr(d)= 0,720396097623954    m-s= 0,150105361020913   m+s= 1,59089755626882 
m= 0,478486490249634  sqr(d)= 0,302717136865398    m-s= 0,175769353384236   m+s= 0,781203627115031 
m= 0,755339645473578  sqr(d)= 0,761717077180985    m-s=-6,37743170740757E-03   m+s= 1,51705672265456 
m= 0,354936543692455  sqr(d)= 0,172079455921486    m-s= 0,182857087770969   m+s= 0,527015999613941 
m= 0,719616676114861  sqr(d)= 0,961540543390764    m-s=-0,241923867275903   m+s= 1,68115721950562 
m= 0,692344731092453  sqr(d)= 0,669196019174616    m-s= 2,31487119178365E-02   m+s= 1,36154075026707 
roen: (pp, xx(pp), f(xx(pp)) )= 4  7,91556986405071  0,1872967 

(NN,T0,alf,k)= 1000  4,66666666666667  0,95  15 
m= 0,451760107278824  sqr(d)= 0,356402705644002    m-s= 9,53574016348216E-02   m+s= 0,808162812922826 
m= 0,551979623202726  sqr(d)= 0,598110677561662    m-s=-4,61310543589359E-02   m+s= 1,15009030076439 
m= 0,827560663223267  sqr(d)= 0,998873461148677    m-s=-0,171312797925411   m+s= 1,82643412437194 
m= 0,549479603767395  sqr(d)= 0,515432250740932    m-s= 3,40473530264628E-02   m+s= 1,06491185450833 
m= 0,627144682407379  sqr(d)= 0,551374925495125    m-s= 7,57697569122543E-02   m+s= 1,1785196079025 
m= 0,744052401185036  sqr(d)= 0,668403406533282    m-s= 7,56489946517541E-02   m+s= 1,41245580771832 
m= 0,716716694831848  sqr(d)= 0,714867158487073    m-s= 1,84953634477514E-03   m+s= 1,43158385331892 
roen: (pp, xx(pp), f(xx(pp)) )= 393  15  0,3971238 

(NN,T0,alf,k)= 1000  4,66666666666667  0,95  15 
m= 0,599648344516754  sqr(d)= 0,542338025831066    m-s= 5,73103186856883E-02   m+s= 1,14198637034782 
m= 0,354936543692448  sqr(d)= 0,172079455921502    m-s= 0,182857087770945   m+s= 0,52701599961395 
m= 0,550357019901276  sqr(d)= 0,518130211514208    m-s= 3,22268083870673E-02   m+s= 1,06848723141548 
m= 0,893080908060074  sqr(d)= 1,1040923146078    m-s=-0,211011406547722   m+s= 1,99717322266787 
m= 0,787437436569974  sqr(d)= 1,02094877259389    m-s=-0,233511336023919   m+s= 1,80838620916387 
m= 0,545782005786896  sqr(d)= 0,504073542523045    m-s= 4,17084632638505E-02   m+s= 1,04985554830994 
m= 0,959283947944641  sqr(d)= 1,07089627077235    m-s=-0,111612322827709   m+s= 2,03018021871699 
roen: (pp, xx(pp), f(xx(pp)) )= 12  14,1170218346167  1,919959E-02 

(NN,T0,alf,k)= 1000  4,66666666666667  0,95  15 
m= 0,942402829602361  sqr(d)= 1,07412560540369    m-s=-0,131722775801331   m+s= 2,01652843500605 
m= 0,5729068338871  sqr(d)= 0,510126426892028    m-s= 6,27804069950721E-02   m+s= 1,08303326077913 
m= 0,548351825110841  sqr(d)= 0,601137948675279    m-s=-5,27861235644373E-02   m+s= 1,14948977378612 
m= 1,13599339723587  sqr(d)= 1,31210453886491    m-s=-0,176111141629043   m+s= 2,44809793610078 
m= 0,476002007722855  sqr(d)= 0,303096114078967    m-s= 0,172905893643888   m+s= 0,779098121801822 
m= 0,51704283713226  sqr(d)= 0,560699271640105    m-s=-4,36564345078453E-02   m+s= 1,07774210877237 
m= 0,987803530693054  sqr(d)= 1,06469857078069    m-s=-7,68950400876347E-02   m+s= 2,05250210147374 
roen: (pp, xx(pp), f(xx(pp)) )= 2  6,96710324287415  0,3731405 


(NN,T0,alf,k)= 1000  4,66666666666667  0,95  15 
m= 2,84815079569817  sqr(d)= 1,30044588921201    m-s= 1,54770490648616   m+s= 4,14859668491017 
m= 2,23196439743042  sqr(d)= 1,09168582690281    m-s= 1,14027857052761   m+s= 3,32365022433323 
m= 2,84383816756308  sqr(d)= 1,50158465747004    m-s= 1,34225351009305   m+s= 4,34542282503312 
m= 2,5798589527607  sqr(d)= 1,3034636332318    m-s= 1,2763953195289   m+s= 3,88332258599249 
m= 2,63105175495148  sqr(d)= 1,11516486220336    m-s= 1,51588689274812   m+s= 3,74621661715483 
otj: (pp, xx(pp), f(xx(pp)) )= 47  7,84510708410195  3,525304E-03 

(NN,T0,alf,k)= 1000  4,66666666666667  0,95  15 
m= 2,52631787061691  sqr(d)= 1,1495367621484    m-s= 1,37678110846851   m+s= 3,67585463276531 
m= 2,75108894109726  sqr(d)= 1,2971011390324    m-s= 1,45398780206486   m+s= 4,04819008012966 
m= 2,38803421258926  sqr(d)= 1,05641833656627    m-s= 1,33161587602299   m+s= 3,44445254915553 
m= 2,22671835571528  sqr(d)= 1,3191689251323    m-s= 0,907549430582974   m+s= 3,54588728084758 
m= 2,1682618111372  sqr(d)= 1,47660467510032    m-s= 0,691657136036884   m+s= 3,64486648623751 
otj: (pp, xx(pp), f(xx(pp)) )= 35  1,59987681588866  4,295987E-02 

(NN,T0,alf,k)= 1000  4,66666666666667  0,95  15 
m= 2,57787588238716  sqr(d)= 1,34129436861754    m-s= 1,23658151376963   m+s= 3,9191702510047 
m= 2,73348118066788  sqr(d)= 1,20834640462389    m-s= 1,52513477604398   m+s= 3,94182758529177 
m= 1,89243112578988  sqr(d)= 1,49232578848765    m-s= 0,400105337302228   m+s= 3,38475691427753 
m= 3,00051029920578  sqr(d)= 1,51713951088317    m-s= 1,48337078832261   m+s= 4,51764981008895 
m= 2,46572784855962  sqr(d)= 1,43711711563216    m-s= 1,02861073292746   m+s= 3,90284496419177 
otj: (pp, xx(pp), f(xx(pp)) )= 53  1,56036537049228  4,94468E-03 

(NN,T0,alf,k)= 1000  4,66666666666667  0,95  15 
m= 2,40121140778065  sqr(d)= 1,41715406800888    m-s= 0,984057339771765   m+s= 3,81836547578953 
m= 2,90180592536926  sqr(d)= 1,21874988314797    m-s= 1,68305604222129   m+s= 4,12055580851723 
m= 2,60407336950302  sqr(d)= 1,1048448842356    m-s= 1,49922848526742   m+s= 3,70891825373862 
m= 3,16521167755127  sqr(d)= 1,30318216134604    m-s= 1,86202951620523   m+s= 4,46839383889731 
m= 2,58880771398544  sqr(d)= 1,16940924992395    m-s= 1,41939846406149   m+s= 3,75821696390939 
otj: (pp, xx(pp), f(xx(pp)) )= 8  2,43811361075404  0,3889267 

(NN,T0,alf,k)= 1000  4,66666666666667  0,95  15 
m= 1,90023663640022  sqr(d)= 1,5110463369644    m-s= 0,389190299435827   m+s= 3,41128297336462 
m= 2,67818329334259  sqr(d)= 1,35031923949451    m-s= 1,32786405384808   m+s= 4,0285025328371 
m= 2,05852254331112  sqr(d)= 1,34171324172443    m-s= 0,716809301586692   m+s= 3,40023578503555 
m= 2,3844734609127  sqr(d)= 1,36670406779354    m-s= 1,01776939311916   m+s= 3,75117752870625 
m= 1,8088366150856  sqr(d)= 0,649574412346064    m-s= 1,15926220273954   m+s= 2,45841102743167 
otj: (pp, xx(pp), f(xx(pp)) )= 72  1,55750639685536  8,175037E-03 

===================================================================================================

(NN,T0,alf,k)= 100  4,66666666666667  0,95  15 
m= 0,557087194919586  sqr(d)= 0,538855953189679    m-s= 1,82312417299075E-02   m+s= 1,09594314810926 
m= 0,760120046138763  sqr(d)= 0,934305356291974    m-s=-0,17418531015321   m+s= 1,69442540243074 
m= 0,692016878724098  sqr(d)= 0,669247033164706    m-s= 2,27698455593924E-02   m+s= 1,3612639118888 
m= 0,760184633731842  sqr(d)= 0,93434578177924    m-s=-0,174161148047398   m+s= 1,69453041551108 
m= 0,473732987046242  sqr(d)= 0,303218374675696    m-s= 0,170514612370546   m+s= 0,776951361721938 
m= 0,676344895362854  sqr(d)= 0,919761397703632    m-s=-0,243416502340778   m+s= 1,59610629306649 
m= 0,760099506378174  sqr(d)= 0,93429250951468    m-s=-0,174193003136506   m+s= 1,69439201589285 
roen: (pp, xx(pp), f(xx(pp)) )= 5  13,2549419476601  0,3745724 

(NN,T0,alf,k)= 100  4,66666666666667  0,95  15 
m= 0,429212491307408  sqr(d)= 0,564465928033065    m-s=-0,135253436725658   m+s= 0,993678419340473 
m= 0,478488039970398  sqr(d)= 0,302721574300836    m-s= 0,175766465669562   m+s= 0,781209614271234 
m= 0,357482964475639  sqr(d)= 0,172954648145216    m-s= 0,184528316330423   m+s= 0,530437612620855 
m= 0,476000335812569  sqr(d)= 0,302867758450381    m-s= 0,173132577362188   m+s= 0,778868094262949 
m= 0,355069624971111  sqr(d)= 0,172118569926653    m-s= 0,182951055044458   m+s= 0,527188194897764 
m= 0,438482965916398  sqr(d)= 0,597759003794195    m-s=-0,159276037877796   m+s= 1,03624196971059 
m= 0,924513113498688  sqr(d)= 0,772200353428115    m-s= 0,152312760070573   m+s= 1,6967134669268 
roen: (pp, xx(pp), f(xx(pp)) )= 16  14,1298473570612  2,346284E-03 

(NN,T0,alf,k)= 100  4,66666666666667  0,95  15 
m= 0,63876967728138  sqr(d)= 0,448603953285177    m-s= 0,190165723996203   m+s= 1,08737363056656 
m= 0,476001965999603  sqr(d)= 0,302865671188925    m-s= 0,173136294810678   m+s= 0,778867637188528 
m= 0,355009451525257  sqr(d)= 0,172092765321631    m-s= 0,182916686203626   m+s= 0,527102216846888 
m= 0,597124607203295  sqr(d)= 0,603979799758842    m-s=-6,85519255554679E-03   m+s= 1,20110440696214 
m= 0,545820474624634  sqr(d)= 0,504191621391001    m-s= 4,16288532336332E-02   m+s= 1,05001209601563 
m= 0,825108948349953  sqr(d)= 0,999776449787034    m-s=-0,174667501437081   m+s= 1,82488539813699 
m= 0,477296370267868  sqr(d)= 0,306603404799777    m-s= 0,170692965468091   m+s= 0,783899775067645 
roen: (pp, xx(pp), f(xx(pp)) )= 1  3,35775506496429  0,3971238 

(NN,T0,alf,k)= 100  4,66666666666667  0,95  15 
m= 0,426787766814232  sqr(d)= 0,175318184449953    m-s= 0,251469582364278   m+s= 0,602105951264185 
m= 0,481681632995605  sqr(d)= 0,319431473215153    m-s= 0,162250159780452   m+s= 0,801113106210759 
m= 0,880613696575165  sqr(d)= 0,971029891106271    m-s=-9,04161945311062E-02   m+s= 1,85164358768144 
m= 0,694716095924377  sqr(d)= 0,668753325824357    m-s= 0,02596277010002   m+s= 1,36346942174873 
m= 0,355047640766134  sqr(d)= 0,172040884313511    m-s= 0,183006756452623   m+s= 0,527088525079644 
m= 0,692952170968056  sqr(d)= 0,668948833946532    m-s= 2,40033370215241E-02   m+s= 1,36190100491459 
m= 0,557416248321533  sqr(d)= 0,539870631587679    m-s= 1,75456167338542E-02   m+s= 1,09728687990921 
roen: (pp, xx(pp), f(xx(pp)) )= 1  12,9751555919647  0,3971238 

(NN,T0,alf,k)= 100  4,66666666666667  0,95  15 
m= 0,559836375713348  sqr(d)= 0,390502955541509    m-s= 0,16933342017184   m+s= 0,950339331254857 
m= 0,689743575453758  sqr(d)= 0,670259726021591    m-s= 1,94838494321669E-02   m+s= 1,36000330147535 
m= 0,624835884571075  sqr(d)= 0,552182254069458    m-s= 7,26536305016173E-02   m+s= 1,17701813864053 
m= 0,543359938263893  sqr(d)= 0,504763244059308    m-s= 3,85966942045851E-02   m+s= 1,0481231823232 
m= 0,710455739498138  sqr(d)= 0,585847461073009    m-s= 0,124608278425129   m+s= 1,29630320057115 
m= 0,668791007809341  sqr(d)= 0,722751388495295    m-s=-5,39603806859542E-02   m+s= 1,39154239630464 
m= 0,39712381362915  sqr(d)= 0,13237460454305    m-s= 0,2647492090861   m+s= 0,5294984181722 
roen: (pp, xx(pp), f(xx(pp)) )= 1  13,3876466751099  0,3971238 


(NN,T0,alf,k)= 100  4,66666666666667  0,95  15 
m= 2,41084083430469  sqr(d)= 1,37318669449043    m-s= 1,03765413981426   m+s= 3,78402752879513 
m= 2,183397462219  sqr(d)= 1,59328322432238    m-s= 0,59011423789662   m+s= 3,77668068654138 
m= 2,03434053063393  sqr(d)= 1,22946505638043    m-s= 0,804875474253495   m+s= 3,26380558701436 
m= 1,71227170228958  sqr(d)= 0,831369015118738    m-s= 0,880902687170844   m+s= 2,54364071740832 
m= 1,85206918790936  sqr(d)= 1,38072784876028    m-s= 0,471341339149083   m+s= 3,23279703666965 
otj: (pp, xx(pp), f(xx(pp)) )= 65  1,57829612649057  3,115261E-03 

(NN,T0,alf,k)= 100  4,66666666666667  0,95  15 
m= 2,51881430149078  sqr(d)= 0,987249625876991    m-s= 1,53156467561379   m+s= 3,50606392736778 
m= 1,49600653536618  sqr(d)= 1,10231770907115    m-s= 0,393688826295031   m+s= 2,59832424443732 
m= 1,60078552365303  sqr(d)= 1,11858204282544    m-s= 0,482203480827591   m+s= 2,71936756647847 
m= 1,84525327682495  sqr(d)= 1,03968459516891    m-s= 0,805568681656039   m+s= 2,88493787199386 
m= 2,38101617693901  sqr(d)= 1,21109838440573    m-s= 1,16991779253328   m+s= 3,59211456134474 
otj: (pp, xx(pp), f(xx(pp)) )= 8  1,63036138454161  0,1754629 

(NN,T0,alf,k)= 100  4,66666666666667  0,95  15 
m= 1,85197734832764  sqr(d)= 0,811447440117135    m-s= 1,0405299082105   m+s= 2,66342478844477 
m= 2,09498438239098  sqr(d)= 1,37301370083808    m-s= 0,721970681552899   m+s= 3,46799808322905 
m= 1,69798569083214  sqr(d)= 1,01944763600297    m-s= 0,678538054829168   m+s= 2,71743332683511 
m= 1,9957153737545  sqr(d)= 1,10676729737528    m-s= 0,888948076379222   m+s= 3,10248267112978 
m= 1,98145661354065  sqr(d)= 0,847569222844694    m-s= 1,13388739069596   m+s= 2,82902583638534 
otj: (pp, xx(pp), f(xx(pp)) )= 12  1,57966988538213  4,286979E-03 

(NN,T0,alf,k)= 100  4,66666666666667  0,95  15 
m= 2,16715466976166  sqr(d)= 1,07342288289534    m-s= 1,09373178686632   m+s= 3,240577552657 
m= 2,16149010658264  sqr(d)= 0,819831872357452    m-s= 1,34165823422519   m+s= 2,98132197894009 
m= 2,60276184976101  sqr(d)= 1,48065821436057    m-s= 1,12210363540044   m+s= 4,08342006412158 
m= 2,46471908092499  sqr(d)= 1,19464752142708    m-s= 1,27007155949791   m+s= 3,65936660235207 
m= 2,46471908092499  sqr(d)= 1,19464752142708    m-s= 1,27007155949791   m+s= 3,65936660235207 
otj: (pp, xx(pp), f(xx(pp)) )= 83  1,57058563880513  2,569872E-06 

(NN,T0,alf,k)= 100  4,66666666666667  0,95  15 
m= 1,82563245296478  sqr(d)= 0,903725136369113    m-s= 0,92190731659567   m+s= 2,7293575893339 
m= 1,92996642589569  sqr(d)= 0,912752808009871    m-s= 1,01721361788582   m+s= 2,84271923390556 
m= 2,07242270354182  sqr(d)= 1,42916921107173    m-s= 0,643253492470087   m+s= 3,50159191461354 
m= 2,07242270354182  sqr(d)= 1,42916921107173    m-s= 0,643253492470087   m+s= 3,50159191461354 
m= 2,07242270354182  sqr(d)= 1,42916921107173    m-s= 0,643253492470087   m+s= 3,50159191461354 
otj: (pp, xx(pp), f(xx(pp)) )= 83  1,50000544083079  0,2398671 
===================================================================================================

(NN,T0,alf,k)= 10000  4,66666666666667  0,95  15 
m= 0,39712381362915  sqr(d)= 0,13237460454305    m-s= 0,2647492090861   m+s= 0,5294984181722 
m= 0,838255709409714  sqr(d)= 0,773876771572541    m-s= 6,43789378371732E-02   m+s= 1,61213248098225 
m= 1,18139386177063  sqr(d)= 1,40895128781902    m-s=-0,227557426048391   m+s= 2,59034514958965 
m= 0,740255331993103  sqr(d)= 0,7718770579419    m-s=-3,16217259487973E-02   m+s= 1,512132389935 
m= 0,627270174026489  sqr(d)= 0,551590412481941    m-s= 7,56797615445486E-02   m+s= 1,17886058650843 
m= 0,582701778411865  sqr(d)= 0,390706450868014    m-s= 0,191995327543851   m+s= 0,973408229279879 
m= 0,69447854757309  sqr(d)= 0,668255942196531    m-s= 2,62226053765583E-02   m+s= 1,36273448976962 
roen: (pp, xx(pp), f(xx(pp)) )= 8  14,2121639873422  0,2748459 

(NN,T0,alf,k)= 10000  4,66666666666667  0,95  15 
m= 0,798817253112793  sqr(d)= 0,966075719508598    m-s=-0,167258466395805   m+s= 1,76489297262139 
m= 0,642233729362488  sqr(d)= 0,587192872478689    m-s= 5,50408568837989E-02   m+s= 1,22942660184118 
m= 0,969537657499313  sqr(d)= 1,17501863525772    m-s=-0,205480977758403   m+s= 2,14455629275703 
m= 0,343512937653304  sqr(d)= 0,202650890964184    m-s= 0,14086204668912   m+s= 0,546163828617488 
m= 0,39712381362915  sqr(d)= 0,13237460454305    m-s= 0,2647492090861   m+s= 0,5294984181722 
m= 0,548590782284737  sqr(d)= 0,503693677216777    m-s= 4,48971050679599E-02   m+s= 1,05228445950151 
m= 0,355004454264392  sqr(d)= 0,172102800239466    m-s= 0,182901654024926   m+s= 0,527107254503858 
roen: (pp, xx(pp), f(xx(pp)) )= 1  1,40356814861298  0,3730539 

(NN,T0,alf,k)= 10000  4,66666666666667  0,95  15 
m= 0,476079514622688  sqr(d)= 0,303109760945476    m-s= 0,172969753677212   m+s= 0,779189275568165 
m= 0,35500456199677  sqr(d)= 0,172102578015139    m-s= 0,182901983981631   m+s= 0,52710714001191 
m= 0,554855608940125  sqr(d)= 0,531977806497643    m-s= 2,28778024424819E-02   m+s= 1,08683341543777 
m= 0,474111017584801  sqr(d)= 0,304950706038622    m-s= 0,169160311546178   m+s= 0,779061723623423 
m= 0,566057705879211  sqr(d)= 0,566558884058764    m-s=-5,0117817955242E-04   m+s= 1,13261658993798 
m= 0,637114863922632  sqr(d)= 0,66004494132925    m-s=-2,29300774066181E-02   m+s= 1,29715980525188 
m= 0,79563541768913  sqr(d)= 0,85031065422874    m-s=-5,46752365396106E-02   m+s= 1,64594607191787 
roen: (pp, xx(pp), f(xx(pp)) )= 8  8,83004273363279  0,6717052 

(NN,T0,alf,k)= 10000  4,66666666666667  0,95  15 
m= 0,327099515178297  sqr(d)= 0,20607749392321    m-s= 0,121022021255087   m+s= 0,533177009101507 
m= 0,724590021371841  sqr(d)= 0,607690494512955    m-s= 0,116899526858887   m+s= 1,3322805158848 
m= 0,39712381362915  sqr(d)= 0,13237460454305    m-s= 0,2647492090861   m+s= 0,5294984181722 
m= 0,678548350930214  sqr(d)= 0,675528211772881    m-s= 3,02013915733323E-03   m+s= 1,35407656270309 
m= 0,639014049823163  sqr(d)= 0,937892660574682    m-s=-0,298878610751519   m+s= 1,57690671039784 
m= 0,394716826081276  sqr(d)= 0,13179225900665    m-s= 0,262924567074626   m+s= 0,526509085087925 
m= 0,517898354138015  sqr(d)= 0,563024765202386    m-s=-4,51264110643711E-02   m+s= 1,0809231193404 
roen: (pp, xx(pp), f(xx(pp)) )= 3  7,83249368352758  2,189956E-02 

(NN,T0,alf,k)= 10000  4,66666666666667  0,95  15 
m= 0,74432852268219  sqr(d)= 0,886798297576697    m-s=-0,142469774894507   m+s= 1,63112682025889 
m= 0,517717734785401  sqr(d)= 0,562669603617699    m-s=-4,49518688322973E-02   m+s= 1,0803873384031 
m= 0,707118139256284  sqr(d)= 0,666780170633943    m-s= 4,03379686223408E-02   m+s= 1,37389830989023 
m= 0,35741166354062  sqr(d)= 0,173101779647354    m-s= 0,184309883893265   m+s= 0,530513443187974 
m= 0,543413439393044  sqr(d)= 0,50474848081837    m-s= 3,86649585746733E-02   m+s= 1,04816192021141 
m= 0,478486490249634  sqr(d)= 0,302717136865398    m-s= 0,175769353384236   m+s= 0,781203627115031 
m= 0,475994804501534  sqr(d)= 0,30286686815139    m-s= 0,173127936350143   m+s= 0,778861672652924 
roen: (pp, xx(pp), f(xx(pp)) )= 9  14,1578498019187  2,203167E-02 


(NN,T0,alf,k)= 10000  4,66666666666667  0,95  15 
m= 2,31140479650348  sqr(d)= 1,51704140601149    m-s= 0,794363390491999   m+s= 3,82844620251497 
m= 1,94418017119169  sqr(d)= 1,11168677180696    m-s= 0,832493399384734   m+s= 3,05586694299865 
m= 2,33575896136463  sqr(d)= 1,57546076863262    m-s= 0,76029819273201   m+s= 3,91121972999724 
m= 2,06814800364664  sqr(d)= 1,34226089761805    m-s= 0,725887106028592   m+s= 3,41040890126469 
m= 1,93765406310558  sqr(d)= 1,13927661458161    m-s= 0,798377448523973   m+s= 3,07693067768719 
otj: (pp, xx(pp), f(xx(pp)) )= 126  1,57464369152784  9,074811E-04 

(NN,T0,alf,k)= 10000  4,66666666666667  0,95  15 
m= 2,39402197822928  sqr(d)= 1,51794976804783    m-s= 0,876072210181457   m+s= 3,91197174627711 
m= 1,66841949820518  sqr(d)= 1,13698720522593    m-s= 0,531432292979258   m+s= 2,80540670343111 
m= 2,0838726580143  sqr(d)= 1,28504460467364    m-s= 0,798828053340661   m+s= 3,36891726268793 
m= 2,22388737201691  sqr(d)= 0,937088871618917    m-s= 1,28679850039799   m+s= 3,16097624363582 
m= 1,57859225273132  sqr(d)= 0,88910972668326    m-s= 0,689482526048063   m+s= 2,46770197941458 
otj: (pp, xx(pp), f(xx(pp)) )= 135  1,56423165551771  1,860089E-03 

(NN,T0,alf,k)= 10000  4,66666666666667  0,95  15 
m= 2,30507805347443  sqr(d)= 1,35124652928841    m-s= 0,953831524186021   m+s= 3,65632458276283 
m= 1,71928964667022  sqr(d)= 1,16759230422863    m-s= 0,551697342441592   m+s= 2,88688195089885 
m= 1,8896912753582  sqr(d)= 1,22859982606558    m-s= 0,661091449292622   m+s= 3,11829110142378 
m= 1,97605271339416  sqr(d)= 0,897989855477408    m-s= 1,07806285791676   m+s= 2,87404256887157 
m= 2,38070400953293  sqr(d)= 1,10662512019967    m-s= 1,27407888933326   m+s= 3,4873291297326 
otj: (pp, xx(pp), f(xx(pp)) )= 36  1,57601611956462  1,582321E-03 

(NN,T0,alf,k)= 10000  4,66666666666667  0,95  15 
m= 1,87610320448875  sqr(d)= 0,936713987986593    m-s= 0,939389216502161   m+s= 2,81281719247535 
m= 2,11788548231125  sqr(d)= 1,10602823469504    m-s= 1,01185724761621   m+s= 3,22391371700629 
m= 1,94745872020721  sqr(d)= 1,16545112027885    m-s= 0,782007599928366   m+s= 3,11290984048606 
m= 2,62707868814468  sqr(d)= 1,18719989556464    m-s= 1,43987879258004   m+s= 3,81427858370933 
m= 2,22870440483093  sqr(d)= 1,25763223164448    m-s= 0,971072173186451   m+s= 3,48633663647541 
otj: (pp, xx(pp), f(xx(pp)) )= 39  1,55783119440506  7,767451E-03 


здесь каждая порция тестов начинается строкой параметров вида
Код: plaintext
(NN,T0,alf,k)= 10000  4,66666666666667  0,95  15
заканчивается строкий вида
Код: plaintext
 otj:  (pp, xx(pp), f(xx(pp)) )= 126  1,57464369152784  9,074811E-04
либо
Код: plaintext
 roen:  (pp, xx(pp), f(xx(pp)) )= 3  7,83249368352758  2,189956E-02
, где префиксом идентифицируется алгоритм.
xx(pp), f(xx(pp)) - соответственно точка на оси Х и minf(x).

Интерпретация такова. Речь сугубо о моей реализации. Если оценивать минимум и его расположение по МО, то роение точнее. Условно: МО=0.7 против 1.5.
Если же запоминать в каждом прогоне самую минимальную точку, по к-рой проскакал алгоритм, то точнее отжиг. Он в разы чаще и на порядок ближе транзитом пробегает по миниму ф-ции. Например 9,074811E-04 против 2,189956E-02. Хотя в качестве итоговой точки выдаёт менее точную оценку, чем роение. К тому же мой отжиг в разы быстрее и прога короче.
...
Рейтинг: 0 / 0
28 сообщений из 28, показаны все 2 страниц
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Медитация над полной гистограммой оптимизации
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]