Решение головоломок судоку¶
В данном примере продемонстрировано, как найти решение головоломки судоку, используя методы смешанного целочисленного линейного программирования (англ. Mixed Integer Linear Programming, MILP) и программирования в ограничениях (англ. Constraint Programming, CP).
В этом примере мы воспользуемся функциями библиотеки JuMP.jl для формулировки оптимизационной задачи, библиотекой линейной оптимизации HiGHS.jl, библиотекой генерации случайных чисел Random.jl и библиотекой Plots.jl для визуализации результатов.
Если в вашем окружении не установлена последняя версия пакета JuMP
, раскомментируйте и запустите ячейку ниже:
Для запуска новой версии библиотеки после завершения установки нажмите на кнопку «Личный кабинет»:
Затем нажмите на кнопку «Стоп»:
![screenshot_20240710_2.png](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGcAAAA2CAYAAADak4erAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAFe0lEQVR4Xu3cS0wTWwDG8b+3ZUpLKdBSKdqk6E1u3PqIVI0rRMNCEpHEpc+N7tw07F2xMTG6k+BKNIY0akxM2GhLYho34sqEhHgXkEulL6C0Zdqmd2EY7XFainag6Pnt5jtTTPpxZg7jzOwplUolpIb0lxhIjUOW08BkOQ1MltPAZDkNTJbTwMxisBk1nyedzpDJ5lBVlUKxKO4iAWaTCUVRsFmbsdttKE1N4i6b2lPr3zlqPk88kSKTzdJqt9Nis2JRFMxmk7irBBQKRdZVlbVMltV0GpvVisvZvqWSaipneWWV6FKcTmcHzo42cViqQSK5TCyRpMvtos3RKg7r2rScRHKZlXQaz143zRZFHJa2ILeusvhlCYfdXtMvedVylldWSS6v4O32yMNXnRQKReb/W6SjzbHpDKq4WlPzeaJLcTx73bKYOjKbTXj2uokuxVHzeXG4TMVy4okUnc4OeSgzQLNFodPZQTyREofK6Jaj5vNkstmajovSz3F2tJHJZqvOHt1y0ukMrXa7GEt11mq3k05nxFijW04mm6PFZhVjqc5abFYy2ZwYa3TLUVUViyLPNUazKAqqqoqxRrecQrEoV2jbwGw2Vb38pVuO1BhkOQ1sy1elt+revXtipKu3txe/3y/GfzRDyzl48KAYVeX3+5mYmBDjP5Zhh7XJyUkx2lQkEiESiYjxH8uwmfP+/Xsxqsn8/LwY6UokEoyOjvLmzRsymQw9PT1cuXKF4eFhHjx4wN27d8WPaJ49e8axY8cIh8Pcv3+fT58+YbFYOH36NIFAgH379gFw+/ZtXrx4IXz6m5mZGRwOhxjXjWHlGCmXy3Hp0iXm5uY4ceIEPp+P6elpAoEA2WyWI0eOcOPGDQDC4TCzs7P09fVx4MABADweD1NTU9y8eROr1cqZM2eIxWK8fPmSd+/e8fr1a1wul/bv9ff34/P5tO0nT56wtrambRtlV5bz/Plz5ubmOH/+vLbgiEajnDp1irGxMUKhECdPngQgmUwyOzvL0NAQAwMD2s+4fPkypVKJ8fFxjh8/DsCdO3d49OgRDx8+ZGRkRNv34sWLnD17Vtt+9erVtpRj2DnHSB8+fACgr69Py7q6upienubx48daVkk0GuXz58/s379fKwZgaGgI+HruawS7cuasrKwA0NZWftW8u7u7bLuSZDIJUHboAujs7AQglap+KX+77MqZ09LSAnwraUMqldK++Gra29sBiMfjZXksFgO+je+0XVnO4cOHAQiFQloWjUY5evQog4ODWlaJx+PB5/OxsLBQtqrcWJn19vZq2U7alYe1CxcuMDY2RjAYJB6P4/V6CYVClEolrl69Ku6ua2RkhFu3bnH9+nX6+/tJpVK8ffsWp9OprfR22q6cOTabjadPnzI4OMjHjx8JBoM4HA5GR0e5du2auLuuc+fOMT4+zqFDh5iammJmZoaBgQGCwSBut1vcfUfo3n0zO/cv//zdI8ZbMjk5SSAQEONNhcNhvF6vGP+2qn3Xhs0cv9+/5S/5Zz7zOzPsnOP1epmYmCASibCwsCAO/0Belf6RYeXA14KGh4fFWKqRYYc16dfJchqYbjlmk4lCofKNB1J9FApFzKbKN9LolqMoCutVbtmR6mNdVVGq3IKmW47N2sxaJivGUp2tZbLYrM1irNEtx263sZpOi7FUZ6vpNHa7TYw1uuUoTU3YrFYSyWVxSKqTRHIZm9Va9TFE3XIAXM52YokkuXV57qm33LpKLJHE5az+XxMVy1Gamuhyu1j8siRXbnVUKBRZ/LJEl9tVddZAhQuf35PPhNZPXZ8J3SCfpv51hjxNvUG+h2Brtu09BN+Tb/Cozba+wUPafhVXa9LOk+U0MFlOA/sfQYUi+h98DrgAAAAASUVORK5CYII=)
Перезапустите сессию нажатием кнопки «Старт Engee»:
![screenshot_20240710_135431.png](data:image/png;base64,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)
Судоку — это логическая комбинаторная головоломка с размещением чисел. Цель состоит в том, чтобы заполнить сетку 9x9 цифрами так, чтобы каждый столбец, каждая строка и каждая из девяти подсеток 3x3 содержали все цифры от 1 до 9.
Правила:
- Каждая строка должна содержать цифры от 1 до 9 без повторений.
- Каждый столбец должен содержать цифры от 1 до 9 без повторений.
- Каждая подсетка 3х3 должна содержать цифры от 1 до 9 без повторений.
Для того чтобы решение головоломки было возможно, предоставлены первоначальные подсказки:
Головоломки судоку варьируются от простых до чрезвычайно сложных, причем сложность часто определяется количеством предоставленных первоначальных подсказок и сложностью стратегий, необходимых для их решения. Правильно составленная головоломка судоку должна иметь только одно решение.
Подключите библиотеку JuMP
:
Подключите библиотеку решателя HiGHS
:
Подключите библиотеку построения графиков Plots
:
Подключите библиотеку генерации случайных чисел Random
:
Создание функции визуализации судоку¶
Создайте функцию plot_sudoku()
, визуализирующую судоку:
Out[0]:
plot_sudoku (generic function with 1 method)
Мы будем использовать данную функцию для визуализации судоку в этом примере.
Генерация головоломок судоку¶
В данном разделе мы напишем программу, которая будет генерировать головоломки судоку для решения.
Создайте функцию generate_full_grid()
, отвечающую за построение сетки судоку:
Out[0]:
generate_full_grid (generic function with 1 method)
Создайте рекурсивную функцию fill_grid!()
, заполняющую сетку судоку числами:
Out[0]:
fill_grid! (generic function with 1 method)
Данная функция реализует алгоритм обратного отслеживания для заполнения сетки судоку допустимыми числами.
Создайте функцию is_valid()
, проверяющую допустимо ли размещение заданного числа (num
) в определенной ячейке (строке, столбце) сетки судоку:
Out[0]:
is_valid (generic function with 1 method)
Эта функция имеет решающее значение для соблюдения всех трех правил в процессе заполнения сетки судоку.
Создайте функцию remove_numbers!()
, отвечающую за удаление чисел из заполненной сетки судоку, для создания головоломки:
Out[0]:
remove_numbers! (generic function with 1 method)
Это ключевая часть создания головоломок судоку разного уровня сложности, поскольку количество удаленных ячеек может повлиять на сложность головоломки.
Создайте рекурсивную функцию count_solutions()
, подсчитывающую количество допустимых решений для заданной сетки судоку:
Out[0]:
count_solutions (generic function with 2 methods)
Эта функция имеет решающее значение для обеспечения того, чтобы удаление чисел из сетки (в функции remove_numbers!
) не приводило к появлению множественных решений.
Создайте функцию generate_sudoku_puzzle()
, генерирующую судоку с заданным количеством подсказок:
Out[0]:
generate_sudoku_puzzle (generic function with 1 method)
Теоретическое минимальное количество подсказок для головоломки судоку с единственным решением — 17.
Написанная нами программа может стабильно генерировать судоку с единственным решением, где минимальное количество подсказок составляет где-то между 20 и 30, что является более чем достаточным для данного примера.
Сгенерируйте судоку с 25 подсказками:
Визуализируйте судоку с подсказками:
Формулировка задачи смешанного целочисленного линейного программирования¶
Решим задачу с использованием смешанного целочисленного линейного программирования. Цель состоит в том, чтобы смоделировать головоломку как задачу осуществимости, где каждая ячейка должна удовлетворять определенным ограничениям.
Создайте оптимизационную задачу с помощью функции Model()
и укажите название решателя в скобках:
Out[0]:
A JuMP Model
├ solver: HiGHS
├ objective_sense: FEASIBILITY_SENSE
├ num_variables: 0
├ num_constraints: 0
└ Names registered in the model: none
Создайте переменную x
, представляющую собой трехмерный массив $x(i, j, k)$, где i
, j
и k
находятся в диапазоне от 1 до 9. Аргумент Bin
указывает на то, что переменная x
является двоичной.
Массив x
состоит из:
i
(индекс строки): представляет номер строки в сетке судоку в диапазоне от 1 до 9
j
(индекс столбца): представляет номер столбца в сетке судоку, также в диапазоне от 1 до 9
k
(индекс цифры): представляет потенциальную цифру (от 1 до 9), которую можно поместить в ячейку (i
, j
)
Таким образом, двоичное представление x
означает что:
$x(3, 3, 8) = 1$ — цифра 8 помещена в ячейку, расположенную в строке 3, столбце 3
$x(3, 3, 8)$ = 0 — цифра 8 не помещена в эту ячейку
Используя циклы for
для перебора строк i
и столбцов j
, создайте следующее условие для оптимизационной задачи:
$$\sum_{k=1}^{9} x_{i, j, k} = 1$$
Данное условие гарантирует, что каждая из ячеек в сетке судоку содержит ровно одно число от 1 до 9.
Используя циклы for
для перебора строк i
и столбцов j
, создайте следующие условия для оптимизационной задачи:
$$\sum_{j=1}^{9} x_{ind, j, k} = 1$$
Это ограничение гарантирует, что каждая цифра k
появляется ровно один раз в каждой строке ind
.
$$\sum_{i=1}^{9} x_{i, ind, k} = 1$$
Это ограничение гарантирует, что каждая цифра k
появляется ровно один раз в каждом столбце ind
.
Код в вышестоящей ячейке добавляет в модель 162 ограничения:
- 81 ограничение для строк (9 строк × 9 цифр)
- 81 ограничение для столбцов (9 столбцов × 9 цифр)
С помощью этих двух условий мы выполнили соблюдение первых двух правил судоку:
- Каждая строка должна содержать цифры от 1 до 9 без повторений
- Каждый столбец должен содержать цифры от 1 до 9 без повторений
Используя циклы for
, создайте следующее условие для оптимизационной задачи:
$$\sum_{r=i}^{i+2} \sum_{c=j}^{j+2} x_{r, c, k} = 1$$
Самый внешний цикл для i
в 1:3:7 перебирает строки 1, 4 и 7, являющиеся начальными строками каждой подсетки 3x3.
Средний цикл для j
в 1:3:7 перебирает столбцы 1, 4 и 7, которые являющиеся начальными столбцами каждой подсетки 3x3.
Самый внутренний цикл для k
в 1:9 перебирает все возможные цифры (от 1 до 9).
Переменные r
и c
позволяют определить ограничения для каждой подсетки 3x3 в судоку.
r
- представляет индексы строк в подсетке 3x3 и принимает значения от i
до i+2
c
- представляет индексы столбцов в подсетке 3x3 и принимает значения от j
до j+2
Код в вышестоящей ячейке добавляет в модель 81 ограничение (9 цифр для каждой из 9 подсеток), гарантируя, что каждая подсетка 3х3 содержит все цифры от 1 до 9 без повторений. Так мы выполняем третье правило головоломок судоку.
Используя циклы for
для перебора ячеек, проставьте значения 1 (true
) в двоичной переменной x
в ячейках, где есть первоначальные подсказки (sudoku_puzzle
), с помощью функции fix()
:
Вы создали условия выполнения всех трех правил решения головоломок и внесли подсказки в переменную x
. Теперь вы можете решить оптимизационную задачу:
Running HiGHS 1.7.2 (git hash: 5ce7a2753): Copyright (c) 2024 HiGHS under MIT licence terms
Coefficient ranges:
Matrix [1e+00, 1e+00]
Cost [0e+00, 0e+00]
Bound [1e+00, 1e+00]
RHS [1e+00, 1e+00]
Presolving model
200 rows, 184 cols, 736 nonzeros 0s
0 rows, 0 cols, 0 nonzeros 0s
Presolve: Optimal
Solving report
Status Optimal
Primal bound 0
Dual bound 0
Gap 0% (tolerance: 0.01%)
Solution status feasible
0 (objective)
0 (bound viol.)
0 (int. viol.)
0 (row viol.)
Timing 0.00 (total)
0.00 (presolve)
0.00 (postsolve)
Nodes 0
LP iterations 0 (total)
0 (strong br.)
0 (separation)
0 (heuristics)
Выведите статус результата работы решателя:
Статус: OPTIMAL
Оптимальное решение найдено
Статус OPTIMAL означает, что решатель нашел глобальное оптимальное решение задачи.
Сохраните значения двоичной переменной x
в переменной x_val
:
Out[0]:
9×9×9 Array{Float64, 3}:
[:, :, 1] =
0.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0
0.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0
0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0
1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0
[:, :, 2] =
1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0
0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0
0.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0
0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0
0.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0
[:, :, 3] =
0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0
1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0
0.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0
0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0
0.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0
0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0
[:, :, 4] =
0.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0
0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0
0.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0
1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0
0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0
[:, :, 5] =
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0
0.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0
1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0
0.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0
[:, :, 6] =
0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0
1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0
0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0
0.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0
[:, :, 7] =
0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0
0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0
0.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0
1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0
0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0
0.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
[:, :, 8] =
0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0
1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0
0.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0
[:, :, 9] =
0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0
0.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0
0.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0
1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
Вы можете убедиться в том, что каждому значению k
из решения была присвоена позиция в сетке переменной x_val
.
Создайте новую матрицу 9x9, заполненную нулями, которая будет использована для преобразования результатов из двоичного формата в стандартный формат сетки судоку. Аргумент Int
указывает на то, что значения матрицы целые числа.
Используя циклы for
для перебора всех ячейк и возможных цифр в сетке судоку, преобразуйте значения трехмерного массива x_val
в двухмерный массив целых чисел sol_milp
.
Теперь переменная sol_milp
содержит фактическое решение головоломки в формате двухмерного массива целых чисел.
Визуализируйте результаты:
Мы продемонстрировали решение задачи с помощью смешанного целочисленного линейного программирования. Решатель находит возможную конфигурацию чисел, которая соответствует правилам решения судоку, сформулированным как ограничения по строкам, столбцам и подсеткам.
Формулировка задачи программирования в ограничениях¶
Вы также можете смоделировать данную задачу, используя программирование с ограничениями. Применим условие AllDifferent()
(«все разные»), которое гласит, что никакие два элемента вектора не могут принимать одно и то же значение.
Создайте оптимизационную задачу с помощью функции Model()
и укажите название решателя в скобках:
Out[0]:
A JuMP Model
├ solver: HiGHS
├ objective_sense: FEASIBILITY_SENSE
├ num_variables: 0
├ num_constraints: 0
└ Names registered in the model: none
Создайте переменную sudoku_cp
, содержащую двухмерный массив $x(i, j)$. Каждая переменная находится в диапазоне от 1 до 9. Аргумент Int
указывает, что значения переменных являются целыми числами.
Задайте условие, применимое к каждой строке i
сетки судоку. MOI.AllDifferent(9)
гарантирует, что все элементы в строке i
различны.
Это означает, что каждое число от 1 до 9 появляется ровно один раз в каждой строке.
Задайте условие, применимое к каждому столбцу j
сетки судоку. MOI.AllDifferent(9)
гарантирует, что все элементы в столбце j
различны.
Это означает, что каждое число от 1 до 9 появляется ровно один раз в каждом столбце.
Задайте условие, применимое к каждой подсетке 3x3 в судоку. MOI.AllDifferent(9)
гарантирует, что все элементы в каждой из подсеток различны. Это означает, что каждое число от 1 до 9 появляется ровно один раз в каждой подсетке 3x3.
Для каждой из ячеек [i, j]
перенесите изначальные подсказки из sudoku_puzzle
в переменную x
с помощью функции fix
:
Вы создали условия выполнения всех трех правил решения головоломок и внесли подсказки в переменную x
. Теперь вы можете решить оптимизационную задачу:
Running HiGHS 1.7.2 (git hash: 5ce7a2753): Copyright (c) 2024 HiGHS under MIT licence terms
Coefficient ranges:
Matrix [1e+00, 9e+00]
Cost [0e+00, 0e+00]
Bound [1e+00, 9e+00]
RHS [1e+00, 1e+00]
Presolving model
747 rows, 1568 cols, 5788 nonzeros 0s
504 rows, 1568 cols, 4108 nonzeros 0s
Objective function is integral with scale 1
Solving MIP model with:
504 rows
1568 cols (1512 binary, 56 integer, 0 implied int., 0 continuous)
4108 nonzeros
Nodes | B&B Tree | Objective Bounds | Dynamic Constraints | Work
Proc. InQueue | Leaves Expl. | BestBound BestSol Gap | Cuts InLp Confl. | LpIters Time
0 0 0 0.00% 0 inf inf 0 0 0 0 0.0s
0 0 0 0.00% 0 inf inf 0 0 3 831 0.0s
10.4% inactive integer columns, restarting
Model after restart has 302 rows, 570 cols (514 bin., 56 int., 0 impl., 0 cont.), and 2281 nonzeros
0 0 0 0.00% 0 inf inf 13 0 0 8462 1.7s
Solving report
Status Optimal
Primal bound 0
Dual bound 0
Gap 0% (tolerance: 0.01%)
Solution status feasible
0 (objective)
0 (bound viol.)
1.34559030585e-13 (int. viol.)
0 (row viol.)
Timing 1.77 (total)
0.08 (presolve)
0.00 (postsolve)
Nodes 1
LP iterations 8783 (total)
0 (strong br.)
1996 (separation)
5635 (heuristics)
Выведите статус результата работы решателя:
Статус: OPTIMAL
Оптимальное решение найдено
Статус OPTIMAL означает, что решатель нашел глобальное оптимальное решение задачи.
Сохраните результаты в переменной. Полученные значения имеют тип Float64
. Вы можете использовать функцию round
вместе с аргументом Int
, чтобы конвертировать значения в целые числа.
Визуализируйте полученное решение судоку:
Вы можете сравнить решения полученные путем использования смешанного целочисленного линейного программирования и путем программирования в ограничениях:
Результаты обоих методов решения головоломки совпадают.
В данном примере мы решили головоломку судоку с помощью двух разных подходов — смешанного целочисленного линейного программирования (англ. Mixed Integer Linear Programming, MILP) и программирования в ограничениях (англ. Constraint Programming, CP). Оба подхода могут решить головоломку, но они формулируют и решают задачу принципиально по-разному, демонстрируя различные характеристики в моделировании и решении задач. В рамках решения задачи продемонстрированной в данном примере мы можем выделить некоторые отличия между этими подходами.
Смешанное целочисленное линейное программирование:
- Использует двоичные переменные $x(i, j, k)$
@variable(sudoku_milp, x[i = 1:9, j = 1:9, k = 1:9], Bin)
- Использует линейные ограничения для обеспечения соблюдения правил судоку
@constraint(sudoku_milp, sum(x[i, j, k] для k в 1:9) == 1)
- Более крупная модель с большим количеством переменных, но с более простыми ограничениями
- Как правило, более устойчиво к небольшим изменениям модели и лучше масштабируется с увеличением размера задачи
Программирование в ограничениях:
- Использует целочисленные переменные $x(i, j)$
@variable(sudoku_cp, 1 <= x[1:9, 1:9] <= 9, Int)
- Использует глобальные ограничения, такие как
AllDifferent
, для обеспечения соблюдения правил судоку
@constraint(sudoku_cp, [i = 1:9], x[i, :] в MOI.AllDifferent(9))
- Меньшая модель с меньшим количеством переменных, но с более сложными ограничениями
- Может быть более чувствительно к размеру и структуре задачи
На практике выбор между смешанным целочисленным линейным программированием и программированием в ограничениях часто зависит от конкретных характеристик задачи, причем для некоторых задач один метод лучше подходит, чем другой. В некоторых случаях эффективными могут оказаться гибридные подходы, сочетающие оба метода.
{"id": "7925004c-4ad4-48f9-aae8-c12460e4ba0b", "data": [{"xaxis": "x", "mode": "lines", "x": [0, 0], "showlegend": true, "name": "y1", "colorbar": {"title": {"text": ""}}, "zmin": null, "z": null, "legendgroup": "y1", "y": [0, 9], "zmax": null, "line": {"shape": "linear", "color": "rgba(0, 0, 0, 1)", "dash": "solid", "width": 2}, "zaxis": null, "yaxis": "y", "metadata": {"smartZoomParams": {"maxCount": 2, "minCount": 25000, "currentCount": 2}, "shouldEnableSmartZoom": false}, "type": "scatter"}, {"xaxis": "x", "mode": "lines", "x": [0, 9], "showlegend": true, "name": "y2", "colorbar": {"title": {"text": ""}}, "zmin": null, "z": null, "legendgroup": "y2", "y": [0, 0], "zmax": null, "line": {"shape": "linear", "color": "rgba(0, 0, 0, 1)", "dash": "solid", "width": 2}, "zaxis": null, "yaxis": "y", "metadata": {"smartZoomParams": {"maxCount": 2, "minCount": 25000, "currentCount": 2}, "shouldEnableSmartZoom": false}, "type": "scatter"}, {"xaxis": "x", "mode": "lines", "x": [1, 1], "showlegend": true, "name": "y3", "colorbar": {"title": {"text": ""}}, "zmin": null, "z": null, "legendgroup": "y3", "y": [0, 9], "zmax": null, "line": {"shape": "linear", "color": "rgba(0, 0, 0, 1)", "dash": "solid", "width": 1}, "zaxis": null, "yaxis": "y", "metadata": {"smartZoomParams": {"maxCount": 2, "minCount": 25000, "currentCount": 2}, "shouldEnableSmartZoom": false}, "type": "scatter"}, {"xaxis": "x", "mode": "lines", "x": [0, 9], "showlegend": true, "name": "y4", "colorbar": {"title": {"text": ""}}, "zmin": null, "z": null, "legendgroup": "y4", "y": [1, 1], "zmax": null, "line": {"shape": "linear", "color": "rgba(0, 0, 0, 1)", "dash": "solid", "width": 1}, "zaxis": null, "yaxis": "y", "metadata": {"smartZoomParams": {"maxCount": 2, "minCount": 25000, "currentCount": 2}, "shouldEnableSmartZoom": false}, "type": "scatter"}, {"xaxis": "x", "mode": "lines", "x": [2, 2], "showlegend": true, "name": "y5", "colorbar": {"title": {"text": ""}}, "zmin": null, "z": null, "legendgroup": "y5", "y": [0, 9], "zmax": null, "line": {"shape": "linear", "color": "rgba(0, 0, 0, 1)", "dash": "solid", "width": 1}, "zaxis": null, "yaxis": "y", "metadata": {"smartZoomParams": {"maxCount": 2, "minCount": 25000, "currentCount": 2}, "shouldEnableSmartZoom": false}, "type": "scatter"}, {"xaxis": "x", "mode": "lines", "x": [0, 9], "showlegend": true, "name": "y6", "colorbar": {"title": {"text": ""}}, "zmin": null, "z": null, "legendgroup": "y6", "y": [2, 2], "zmax": null, "line": {"shape": "linear", "color": "rgba(0, 0, 0, 1)", "dash": "solid", "width": 1}, "zaxis": null, "yaxis": "y", "metadata": {"smartZoomParams": {"maxCount": 2, "minCount": 25000, "currentCount": 2}, "shouldEnableSmartZoom": false}, "type": "scatter"}, {"xaxis": "x", "mode": "lines", "x": [3, 3], "showlegend": true, "name": "y7", "colorbar": {"title": {"text": ""}}, "zmin": null, "z": null, "legendgroup": "y7", "y": [0, 9], "zmax": null, "line": {"shape": "linear", "color": "rgba(0, 0, 0, 1)", "dash": "solid", "width": 2}, "zaxis": null, "yaxis": "y", "metadata": {"smartZoomParams": {"maxCount": 2, "minCount": 25000, "currentCount": 2}, "shouldEnableSmartZoom": false}, "type": "scatter"}, {"xaxis": "x", "mode": "lines", "x": [0, 9], "showlegend": true, "name": "y8", "colorbar": {"title": {"text": ""}}, "zmin": null, "z": null, "legendgroup": "y8", "y": [3, 3], "zmax": null, "line": {"shape": "linear", "color": "rgba(0, 0, 0, 1)", "dash": "solid", "width": 2}, "zaxis": null, "yaxis": "y", "metadata": {"smartZoomParams": {"maxCount": 2, "minCount": 25000, "currentCount": 2}, "shouldEnableSmartZoom": false}, "type": "scatter"}, {"xaxis": "x", "mode": "lines", "x": [4, 4], "showlegend": true, "name": "y9", "colorbar": {"title": {"text": ""}}, "zmin": null, "z": null, "legendgroup": "y9", "y": [0, 9], "zmax": null, "line": {"shape": "linear", "color": "rgba(0, 0, 0, 1)", "dash": "solid", "width": 1}, "zaxis": null, "yaxis": "y", "metadata": {"smartZoomParams": {"maxCount": 2, "minCount": 25000, "currentCount": 2}, "shouldEnableSmartZoom": false}, "type": "scatter"}, {"xaxis": "x", "mode": "lines", "x": [0, 9], "showlegend": true, "name": "y10", "colorbar": {"title": {"text": ""}}, "zmin": null, "z": null, "legendgroup": "y10", "y": [4, 4], "zmax": null, "line": {"shape": "linear", "color": "rgba(0, 0, 0, 1)", "dash": "solid", "width": 1}, "zaxis": null, "yaxis": "y", "metadata": {"smartZoomParams": {"maxCount": 2, "minCount": 25000, "currentCount": 2}, "shouldEnableSmartZoom": false}, "type": "scatter"}, {"xaxis": "x", "mode": "lines", "x": [5, 5], "showlegend": true, "name": "y11", "colorbar": {"title": {"text": ""}}, "zmin": null, "z": null, "legendgroup": "y11", "y": [0, 9], "zmax": null, "line": {"shape": "linear", "color": "rgba(0, 0, 0, 1)", "dash": "solid", "width": 1}, "zaxis": null, "yaxis": "y", "metadata": {"smartZoomParams": {"maxCount": 2, "minCount": 25000, "currentCount": 2}, "shouldEnableSmartZoom": false}, "type": "scatter"}, {"xaxis": "x", "mode": "lines", "x": [0, 9], "showlegend": true, "name": "y12", "colorbar": {"title": {"text": ""}}, "zmin": null, "z": null, "legendgroup": "y12", "y": [5, 5], "zmax": null, "line": {"shape": "linear", "color": "rgba(0, 0, 0, 1)", "dash": "solid", "width": 1}, "zaxis": null, "yaxis": "y", "metadata": {"smartZoomParams": {"maxCount": 2, "minCount": 25000, "currentCount": 2}, "shouldEnableSmartZoom": false}, "type": "scatter"}, {"xaxis": "x", "mode": "lines", "x": [6, 6], "showlegend": true, "name": "y13", "colorbar": {"title": {"text": ""}}, "zmin": null, "z": null, "legendgroup": "y13", "y": [0, 9], "zmax": null, "line": {"shape": "linear", "color": "rgba(0, 0, 0, 1)", "dash": "solid", "width": 2}, "zaxis": null, "yaxis": "y", "metadata": {"smartZoomParams": {"maxCount": 2, "minCount": 25000, "currentCount": 2}, "shouldEnableSmartZoom": false}, "type": "scatter"}, {"xaxis": "x", "mode": "lines", "x": [0, 9], "showlegend": true, "name": "y14", "colorbar": {"title": {"text": ""}}, "zmin": null, "z": null, "legendgroup": "y14", "y": [6, 6], "zmax": null, "line": {"shape": "linear", "color": "rgba(0, 0, 0, 1)", "dash": "solid", "width": 2}, "zaxis": null, "yaxis": "y", "metadata": {"smartZoomParams": {"maxCount": 2, "minCount": 25000, "currentCount": 2}, "shouldEnableSmartZoom": false}, "type": "scatter"}, {"xaxis": "x", "mode": "lines", "x": [7, 7], "showlegend": true, "name": "y15", "colorbar": {"title": {"text": ""}}, "zmin": null, "z": null, "legendgroup": "y15", "y": [0, 9], "zmax": null, "line": {"shape": "linear", "color": "rgba(0, 0, 0, 1)", "dash": "solid", "width": 1}, "zaxis": null, "yaxis": "y", "metadata": {"smartZoomParams": {"maxCount": 2, "minCount": 25000, "currentCount": 2}, "shouldEnableSmartZoom": false}, "type": "scatter"}, {"xaxis": "x", "mode": "lines", "x": [0, 9], "showlegend": true, "name": "y16", "colorbar": {"title": {"text": ""}}, "zmin": null, "z": null, "legendgroup": "y16", "y": [7, 7], "zmax": null, "line": {"shape": "linear", "color": "rgba(0, 0, 0, 1)", "dash": "solid", "width": 1}, "zaxis": null, "yaxis": "y", "metadata": {"smartZoomParams": {"maxCount": 2, "minCount": 25000, "currentCount": 2}, "shouldEnableSmartZoom": false}, "type": "scatter"}, {"xaxis": "x", "mode": "lines", "x": [8, 8], "showlegend": true, "name": "y17", "colorbar": {"title": {"text": ""}}, "zmin": null, "z": null, "legendgroup": "y17", "y": [0, 9], "zmax": null, "line": {"shape": "linear", "color": "rgba(0, 0, 0, 1)", "dash": "solid", "width": 1}, "zaxis": null, "yaxis": "y", "metadata": {"smartZoomParams": {"maxCount": 2, "minCount": 25000, "currentCount": 2}, "shouldEnableSmartZoom": false}, "type": "scatter"}, {"xaxis": "x", "mode": "lines", "x": [0, 9], "showlegend": true, "name": "y18", "colorbar": {"title": {"text": ""}}, "zmin": null, "z": null, "legendgroup": "y18", "y": [8, 8], "zmax": null, "line": {"shape": "linear", "color": "rgba(0, 0, 0, 1)", "dash": "solid", "width": 1}, "zaxis": null, "yaxis": "y", "metadata": {"smartZoomParams": {"maxCount": 2, "minCount": 25000, "currentCount": 2}, "shouldEnableSmartZoom": false}, "type": "scatter"}, {"xaxis": "x", "mode": "lines", "x": [9, 9], "showlegend": true, "name": "y19", "colorbar": {"title": {"text": ""}}, "zmin": null, "z": null, "legendgroup": "y19", "y": [0, 9], "zmax": null, "line": {"shape": "linear", "color": "rgba(0, 0, 0, 1)", "dash": "solid", "width": 2}, "zaxis": null, "yaxis": "y", "metadata": {"smartZoomParams": {"maxCount": 2, "minCount": 25000, "currentCount": 2}, "shouldEnableSmartZoom": false}, "type": "scatter"}, {"xaxis": "x", "mode": "lines", "x": [0, 9], "showlegend": true, "name": "y20", "colorbar": {"title": {"text": ""}}, "zmin": null, "z": null, "legendgroup": "y20", "y": [9, 9], "zmax": null, "line": {"shape": "linear", "color": "rgba(0, 0, 0, 1)", "dash": "solid", "width": 2}, "zaxis": null, "yaxis": "y", "metadata": {"smartZoomParams": {"maxCount": 2, "minCount": 25000, "currentCount": 2}, "shouldEnableSmartZoom": false}, "type": "scatter"}], "config": {"showlegend": false, "height": 400, "xaxis": {"showline": false, "gridcolor": "rgba(0, 0, 0, 0.1)", "showticklabels": false, "anchor": "y", "range": [-2.7028915662650617, 11.702891566265059], "gridwidth": 0.5, "visible": true, "showgrid": false, "linecolor": "rgba(0, 0, 0, 1)", "zerolinecolor": "rgba(0, 0, 0, 1)", "tickangle": 0, "zeroline": false, "mirror": false, "domain": [0.006561679790026247, 0.9934383202099737], "title": {"text": ""}, "ticks": "inside", "type": "linear"}, "annotations": [{"y": 8.5, "yanchor": "middle", "rotation": 0, "x": 0.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "2", "xanchor": "center"}, {"y": 8.5, "yanchor": "middle", "rotation": 0, "x": 3.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "8", "xanchor": "center"}, {"y": 8.5, "yanchor": "middle", "rotation": 0, "x": 4.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "6", "xanchor": "center"}, {"y": 8.5, "yanchor": "middle", "rotation": 0, "x": 6.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "9", "xanchor": "center"}, {"y": 7.5, "yanchor": "middle", "rotation": 0, "x": 4.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "7", "xanchor": "center"}, {"y": 7.5, "yanchor": "middle", "rotation": 0, "x": 7.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "4", "xanchor": "center"}, {"y": 6.5, "yanchor": "middle", "rotation": 0, "x": 2.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "7", "xanchor": "center"}, {"y": 5.5, "yanchor": "middle", "rotation": 0, "x": 0.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "5", "xanchor": "center"}, {"y": 5.5, "yanchor": "middle", "rotation": 0, "x": 2.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "3", "xanchor": "center"}, {"y": 5.5, "yanchor": "middle", "rotation": 0, "x": 7.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "6", "xanchor": "center"}, {"y": 4.5, "yanchor": "middle", "rotation": 0, "x": 2.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "4", "xanchor": "center"}, {"y": 4.5, "yanchor": "middle", "rotation": 0, "x": 7.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "9", "xanchor": "center"}, {"y": 4.5, "yanchor": "middle", "rotation": 0, "x": 8.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "8", "xanchor": "center"}, {"y": 3.5, "yanchor": "middle", "rotation": 0, "x": 0.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "8", "xanchor": "center"}, {"y": 3.5, "yanchor": "middle", "rotation": 0, "x": 2.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "9", "xanchor": "center"}, {"y": 3.5, "yanchor": "middle", "rotation": 0, "x": 3.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "2", "xanchor": "center"}, {"y": 3.5, "yanchor": "middle", "rotation": 0, "x": 4.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "3", "xanchor": "center"}, {"y": 2.5, "yanchor": "middle", "rotation": 0, "x": 4.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "8", "xanchor": "center"}, {"y": 2.5, "yanchor": "middle", "rotation": 0, "x": 5.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "1", "xanchor": "center"}, {"y": 2.5, "yanchor": "middle", "rotation": 0, "x": 8.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "7", "xanchor": "center"}, {"y": 1.5, "yanchor": "middle", "rotation": 0, "x": 2.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "5", "xanchor": "center"}, {"y": 0.5, "yanchor": "middle", "rotation": 0, "x": 0.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "9", "xanchor": "center"}, {"y": 0.5, "yanchor": "middle", "rotation": 0, "x": 3.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "3", "xanchor": "center"}, {"y": 0.5, "yanchor": "middle", "rotation": 0, "x": 5.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "5", "xanchor": "center"}, {"y": 0.5, "yanchor": "middle", "rotation": 0, "x": 6.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "1", "xanchor": "center"}], "plot_bgcolor": "rgba(255, 255, 255, 1.000)", "paper_bgcolor": "rgba(255, 255, 255, 1.000)", "margin": {"t": 20, "b": 20, "r": 0, "l": 0}, "yaxis": {"showline": false, "gridcolor": "rgba(0, 0, 0, 0.1)", "showticklabels": false, "anchor": "x", "range": [-0.27000000000000046, 9.27], "gridwidth": 0.5, "visible": true, "showgrid": false, "linecolor": "rgba(0, 0, 0, 1)", "zerolinecolor": "rgba(0, 0, 0, 1)", "tickangle": 0, "zeroline": false, "mirror": false, "domain": [0.009842519685039424, 0.9901574803149606], "title": {"text": ""}, "ticks": "inside", "type": "linear"}, "width": 983.984375}}
{"id": "d0ce3730-b622-411d-b39c-57600fb5d20f", "data": [{"xaxis": "x", "mode": "lines", "x": [0, 0], "showlegend": true, "name": "y1", "colorbar": {"title": {"text": ""}}, "zmin": null, "z": null, "legendgroup": "y1", "y": [0, 9], "zmax": null, "line": {"shape": "linear", "color": "rgba(0, 0, 0, 1)", "dash": "solid", "width": 2}, "zaxis": null, "yaxis": "y", "metadata": {"smartZoomParams": {"maxCount": 2, "minCount": 25000, "currentCount": 2}, "shouldEnableSmartZoom": false}, "type": "scatter"}, {"xaxis": "x", "mode": "lines", "x": [0, 9], "showlegend": true, "name": "y2", "colorbar": {"title": {"text": ""}}, "zmin": null, "z": null, "legendgroup": "y2", "y": [0, 0], "zmax": null, "line": {"shape": "linear", "color": "rgba(0, 0, 0, 1)", "dash": "solid", "width": 2}, "zaxis": null, "yaxis": "y", "metadata": {"smartZoomParams": {"maxCount": 2, "minCount": 25000, "currentCount": 2}, "shouldEnableSmartZoom": false}, "type": "scatter"}, {"xaxis": "x", "mode": "lines", "x": [1, 1], "showlegend": true, "name": "y3", "colorbar": {"title": {"text": ""}}, "zmin": null, "z": null, "legendgroup": "y3", "y": [0, 9], "zmax": null, "line": {"shape": "linear", "color": "rgba(0, 0, 0, 1)", "dash": "solid", "width": 1}, "zaxis": null, "yaxis": "y", "metadata": {"smartZoomParams": {"maxCount": 2, "minCount": 25000, "currentCount": 2}, "shouldEnableSmartZoom": false}, "type": "scatter"}, {"xaxis": "x", "mode": "lines", "x": [0, 9], "showlegend": true, "name": "y4", "colorbar": {"title": {"text": ""}}, "zmin": null, "z": null, "legendgroup": "y4", "y": [1, 1], "zmax": null, "line": {"shape": "linear", "color": "rgba(0, 0, 0, 1)", "dash": "solid", "width": 1}, "zaxis": null, "yaxis": "y", "metadata": {"smartZoomParams": {"maxCount": 2, "minCount": 25000, "currentCount": 2}, "shouldEnableSmartZoom": false}, "type": "scatter"}, {"xaxis": "x", "mode": "lines", "x": [2, 2], "showlegend": true, "name": "y5", "colorbar": {"title": {"text": ""}}, "zmin": null, "z": null, "legendgroup": "y5", "y": [0, 9], "zmax": null, "line": {"shape": "linear", "color": "rgba(0, 0, 0, 1)", "dash": "solid", "width": 1}, "zaxis": null, "yaxis": "y", "metadata": {"smartZoomParams": {"maxCount": 2, "minCount": 25000, "currentCount": 2}, "shouldEnableSmartZoom": false}, "type": "scatter"}, {"xaxis": "x", "mode": "lines", "x": [0, 9], "showlegend": true, "name": "y6", "colorbar": {"title": {"text": ""}}, "zmin": null, "z": null, "legendgroup": "y6", "y": [2, 2], "zmax": null, "line": {"shape": "linear", "color": "rgba(0, 0, 0, 1)", "dash": "solid", "width": 1}, "zaxis": null, "yaxis": "y", "metadata": {"smartZoomParams": {"maxCount": 2, "minCount": 25000, "currentCount": 2}, "shouldEnableSmartZoom": false}, "type": "scatter"}, {"xaxis": "x", "mode": "lines", "x": [3, 3], "showlegend": true, "name": "y7", "colorbar": {"title": {"text": ""}}, "zmin": null, "z": null, "legendgroup": "y7", "y": [0, 9], "zmax": null, "line": {"shape": "linear", "color": "rgba(0, 0, 0, 1)", "dash": "solid", "width": 2}, "zaxis": null, "yaxis": "y", "metadata": {"smartZoomParams": {"maxCount": 2, "minCount": 25000, "currentCount": 2}, "shouldEnableSmartZoom": false}, "type": "scatter"}, {"xaxis": "x", "mode": "lines", "x": [0, 9], "showlegend": true, "name": "y8", "colorbar": {"title": {"text": ""}}, "zmin": null, "z": null, "legendgroup": "y8", "y": [3, 3], "zmax": null, "line": {"shape": "linear", "color": "rgba(0, 0, 0, 1)", "dash": "solid", "width": 2}, "zaxis": null, "yaxis": "y", "metadata": {"smartZoomParams": {"maxCount": 2, "minCount": 25000, "currentCount": 2}, "shouldEnableSmartZoom": false}, "type": "scatter"}, {"xaxis": "x", "mode": "lines", "x": [4, 4], "showlegend": true, "name": "y9", "colorbar": {"title": {"text": ""}}, "zmin": null, "z": null, "legendgroup": "y9", "y": [0, 9], "zmax": null, "line": {"shape": "linear", "color": "rgba(0, 0, 0, 1)", "dash": "solid", "width": 1}, "zaxis": null, "yaxis": "y", "metadata": {"smartZoomParams": {"maxCount": 2, "minCount": 25000, "currentCount": 2}, "shouldEnableSmartZoom": false}, "type": "scatter"}, {"xaxis": "x", "mode": "lines", "x": [0, 9], "showlegend": true, "name": "y10", "colorbar": {"title": {"text": ""}}, "zmin": null, "z": null, "legendgroup": "y10", "y": [4, 4], "zmax": null, "line": {"shape": "linear", "color": "rgba(0, 0, 0, 1)", "dash": "solid", "width": 1}, "zaxis": null, "yaxis": "y", "metadata": {"smartZoomParams": {"maxCount": 2, "minCount": 25000, "currentCount": 2}, "shouldEnableSmartZoom": false}, "type": "scatter"}, {"xaxis": "x", "mode": "lines", "x": [5, 5], "showlegend": true, "name": "y11", "colorbar": {"title": {"text": ""}}, "zmin": null, "z": null, "legendgroup": "y11", "y": [0, 9], "zmax": null, "line": {"shape": "linear", "color": "rgba(0, 0, 0, 1)", "dash": "solid", "width": 1}, "zaxis": null, "yaxis": "y", "metadata": {"smartZoomParams": {"maxCount": 2, "minCount": 25000, "currentCount": 2}, "shouldEnableSmartZoom": false}, "type": "scatter"}, {"xaxis": "x", "mode": "lines", "x": [0, 9], "showlegend": true, "name": "y12", "colorbar": {"title": {"text": ""}}, "zmin": null, "z": null, "legendgroup": "y12", "y": [5, 5], "zmax": null, "line": {"shape": "linear", "color": "rgba(0, 0, 0, 1)", "dash": "solid", "width": 1}, "zaxis": null, "yaxis": "y", "metadata": {"smartZoomParams": {"maxCount": 2, "minCount": 25000, "currentCount": 2}, "shouldEnableSmartZoom": false}, "type": "scatter"}, {"xaxis": "x", "mode": "lines", "x": [6, 6], "showlegend": true, "name": "y13", "colorbar": {"title": {"text": ""}}, "zmin": null, "z": null, "legendgroup": "y13", "y": [0, 9], "zmax": null, "line": {"shape": "linear", "color": "rgba(0, 0, 0, 1)", "dash": "solid", "width": 2}, "zaxis": null, "yaxis": "y", "metadata": {"smartZoomParams": {"maxCount": 2, "minCount": 25000, "currentCount": 2}, "shouldEnableSmartZoom": false}, "type": "scatter"}, {"xaxis": "x", "mode": "lines", "x": [0, 9], "showlegend": true, "name": "y14", "colorbar": {"title": {"text": ""}}, "zmin": null, "z": null, "legendgroup": "y14", "y": [6, 6], "zmax": null, "line": {"shape": "linear", "color": "rgba(0, 0, 0, 1)", "dash": "solid", "width": 2}, "zaxis": null, "yaxis": "y", "metadata": {"smartZoomParams": {"maxCount": 2, "minCount": 25000, "currentCount": 2}, "shouldEnableSmartZoom": false}, "type": "scatter"}, {"xaxis": "x", "mode": "lines", "x": [7, 7], "showlegend": true, "name": "y15", "colorbar": {"title": {"text": ""}}, "zmin": null, "z": null, "legendgroup": "y15", "y": [0, 9], "zmax": null, "line": {"shape": "linear", "color": "rgba(0, 0, 0, 1)", "dash": "solid", "width": 1}, "zaxis": null, "yaxis": "y", "metadata": {"smartZoomParams": {"maxCount": 2, "minCount": 25000, "currentCount": 2}, "shouldEnableSmartZoom": false}, "type": "scatter"}, {"xaxis": "x", "mode": "lines", "x": [0, 9], "showlegend": true, "name": "y16", "colorbar": {"title": {"text": ""}}, "zmin": null, "z": null, "legendgroup": "y16", "y": [7, 7], "zmax": null, "line": {"shape": "linear", "color": "rgba(0, 0, 0, 1)", "dash": "solid", "width": 1}, "zaxis": null, "yaxis": "y", "metadata": {"smartZoomParams": {"maxCount": 2, "minCount": 25000, "currentCount": 2}, "shouldEnableSmartZoom": false}, "type": "scatter"}, {"xaxis": "x", "mode": "lines", "x": [8, 8], "showlegend": true, "name": "y17", "colorbar": {"title": {"text": ""}}, "zmin": null, "z": null, "legendgroup": "y17", "y": [0, 9], "zmax": null, "line": {"shape": "linear", "color": "rgba(0, 0, 0, 1)", "dash": "solid", "width": 1}, "zaxis": null, "yaxis": "y", "metadata": {"smartZoomParams": {"maxCount": 2, "minCount": 25000, "currentCount": 2}, "shouldEnableSmartZoom": false}, "type": "scatter"}, {"xaxis": "x", "mode": "lines", "x": [0, 9], "showlegend": true, "name": "y18", "colorbar": {"title": {"text": ""}}, "zmin": null, "z": null, "legendgroup": "y18", "y": [8, 8], "zmax": null, "line": {"shape": "linear", "color": "rgba(0, 0, 0, 1)", "dash": "solid", "width": 1}, "zaxis": null, "yaxis": "y", "metadata": {"smartZoomParams": {"maxCount": 2, "minCount": 25000, "currentCount": 2}, "shouldEnableSmartZoom": false}, "type": "scatter"}, {"xaxis": "x", "mode": "lines", "x": [9, 9], "showlegend": true, "name": "y19", "colorbar": {"title": {"text": ""}}, "zmin": null, "z": null, "legendgroup": "y19", "y": [0, 9], "zmax": null, "line": {"shape": "linear", "color": "rgba(0, 0, 0, 1)", "dash": "solid", "width": 2}, "zaxis": null, "yaxis": "y", "metadata": {"smartZoomParams": {"maxCount": 2, "minCount": 25000, "currentCount": 2}, "shouldEnableSmartZoom": false}, "type": "scatter"}, {"xaxis": "x", "mode": "lines", "x": [0, 9], "showlegend": true, "name": "y20", "colorbar": {"title": {"text": ""}}, "zmin": null, "z": null, "legendgroup": "y20", "y": [9, 9], "zmax": null, "line": {"shape": "linear", "color": "rgba(0, 0, 0, 1)", "dash": "solid", "width": 2}, "zaxis": null, "yaxis": "y", "metadata": {"smartZoomParams": {"maxCount": 2, "minCount": 25000, "currentCount": 2}, "shouldEnableSmartZoom": false}, "type": "scatter"}], "config": {"showlegend": false, "height": 400, "xaxis": {"showline": false, "gridcolor": "rgba(0, 0, 0, 0.1)", "showticklabels": false, "anchor": "y", "range": [-2.7028915662650617, 11.702891566265059], "gridwidth": 0.5, "visible": true, "showgrid": false, "linecolor": "rgba(0, 0, 0, 1)", "zerolinecolor": "rgba(0, 0, 0, 1)", "tickangle": 0, "zeroline": false, "mirror": false, "domain": [0.006561679790026247, 0.9934383202099737], "title": {"text": ""}, "ticks": "inside", "type": "linear"}, "annotations": [{"y": 8.5, "yanchor": "middle", "rotation": 0, "x": 0.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "2", "xanchor": "center"}, {"y": 8.5, "yanchor": "middle", "rotation": 0, "x": 1.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "4", "xanchor": "center"}, {"y": 8.5, "yanchor": "middle", "rotation": 0, "x": 2.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "1", "xanchor": "center"}, {"y": 8.5, "yanchor": "middle", "rotation": 0, "x": 3.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "8", "xanchor": "center"}, {"y": 8.5, "yanchor": "middle", "rotation": 0, "x": 4.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "6", "xanchor": "center"}, {"y": 8.5, "yanchor": "middle", "rotation": 0, "x": 5.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "3", "xanchor": "center"}, {"y": 8.5, "yanchor": "middle", "rotation": 0, "x": 6.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "9", "xanchor": "center"}, {"y": 8.5, "yanchor": "middle", "rotation": 0, "x": 7.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "7", "xanchor": "center"}, {"y": 8.5, "yanchor": "middle", "rotation": 0, "x": 8.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "5", "xanchor": "center"}, {"y": 7.5, "yanchor": "middle", "rotation": 0, "x": 0.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "3", "xanchor": "center"}, {"y": 7.5, "yanchor": "middle", "rotation": 0, "x": 1.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "5", "xanchor": "center"}, {"y": 7.5, "yanchor": "middle", "rotation": 0, "x": 2.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "8", "xanchor": "center"}, {"y": 7.5, "yanchor": "middle", "rotation": 0, "x": 3.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "1", "xanchor": "center"}, {"y": 7.5, "yanchor": "middle", "rotation": 0, "x": 4.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "7", "xanchor": "center"}, {"y": 7.5, "yanchor": "middle", "rotation": 0, "x": 5.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "9", "xanchor": "center"}, {"y": 7.5, "yanchor": "middle", "rotation": 0, "x": 6.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "6", "xanchor": "center"}, {"y": 7.5, "yanchor": "middle", "rotation": 0, "x": 7.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "4", "xanchor": "center"}, {"y": 7.5, "yanchor": "middle", "rotation": 0, "x": 8.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "2", "xanchor": "center"}, {"y": 6.5, "yanchor": "middle", "rotation": 0, "x": 0.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "6", "xanchor": "center"}, {"y": 6.5, "yanchor": "middle", "rotation": 0, "x": 1.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "9", "xanchor": "center"}, {"y": 6.5, "yanchor": "middle", "rotation": 0, "x": 2.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "7", "xanchor": "center"}, {"y": 6.5, "yanchor": "middle", "rotation": 0, "x": 3.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "4", "xanchor": "center"}, {"y": 6.5, "yanchor": "middle", "rotation": 0, "x": 4.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "5", "xanchor": "center"}, {"y": 6.5, "yanchor": "middle", "rotation": 0, "x": 5.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "2", "xanchor": "center"}, {"y": 6.5, "yanchor": "middle", "rotation": 0, "x": 6.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "8", "xanchor": "center"}, {"y": 6.5, "yanchor": "middle", "rotation": 0, "x": 7.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "1", "xanchor": "center"}, {"y": 6.5, "yanchor": "middle", "rotation": 0, "x": 8.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "3", "xanchor": "center"}, {"y": 5.5, "yanchor": "middle", "rotation": 0, "x": 0.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "5", "xanchor": "center"}, {"y": 5.5, "yanchor": "middle", "rotation": 0, "x": 1.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "1", "xanchor": "center"}, {"y": 5.5, "yanchor": "middle", "rotation": 0, "x": 2.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "3", "xanchor": "center"}, {"y": 5.5, "yanchor": "middle", "rotation": 0, "x": 3.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "7", "xanchor": "center"}, {"y": 5.5, "yanchor": "middle", "rotation": 0, "x": 4.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "9", "xanchor": "center"}, {"y": 5.5, "yanchor": "middle", "rotation": 0, "x": 5.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "8", "xanchor": "center"}, {"y": 5.5, "yanchor": "middle", "rotation": 0, "x": 6.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "2", "xanchor": "center"}, {"y": 5.5, "yanchor": "middle", "rotation": 0, "x": 7.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "6", "xanchor": "center"}, {"y": 5.5, "yanchor": "middle", "rotation": 0, "x": 8.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "4", "xanchor": "center"}, {"y": 4.5, "yanchor": "middle", "rotation": 0, "x": 0.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "7", "xanchor": "center"}, {"y": 4.5, "yanchor": "middle", "rotation": 0, "x": 1.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "2", "xanchor": "center"}, {"y": 4.5, "yanchor": "middle", "rotation": 0, "x": 2.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "4", "xanchor": "center"}, {"y": 4.5, "yanchor": "middle", "rotation": 0, "x": 3.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "5", "xanchor": "center"}, {"y": 4.5, "yanchor": "middle", "rotation": 0, "x": 4.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "1", "xanchor": "center"}, {"y": 4.5, "yanchor": "middle", "rotation": 0, "x": 5.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "6", "xanchor": "center"}, {"y": 4.5, "yanchor": "middle", "rotation": 0, "x": 6.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "3", "xanchor": "center"}, {"y": 4.5, "yanchor": "middle", "rotation": 0, "x": 7.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "9", "xanchor": "center"}, {"y": 4.5, "yanchor": "middle", "rotation": 0, "x": 8.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "8", "xanchor": "center"}, {"y": 3.5, "yanchor": "middle", "rotation": 0, "x": 0.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "8", "xanchor": "center"}, {"y": 3.5, "yanchor": "middle", "rotation": 0, "x": 1.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "6", "xanchor": "center"}, {"y": 3.5, "yanchor": "middle", "rotation": 0, "x": 2.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "9", "xanchor": "center"}, {"y": 3.5, "yanchor": "middle", "rotation": 0, "x": 3.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "2", "xanchor": "center"}, {"y": 3.5, "yanchor": "middle", "rotation": 0, "x": 4.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "3", "xanchor": "center"}, {"y": 3.5, "yanchor": "middle", "rotation": 0, "x": 5.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "4", "xanchor": "center"}, {"y": 3.5, "yanchor": "middle", "rotation": 0, "x": 6.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "7", "xanchor": "center"}, {"y": 3.5, "yanchor": "middle", "rotation": 0, "x": 7.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "5", "xanchor": "center"}, {"y": 3.5, "yanchor": "middle", "rotation": 0, "x": 8.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "1", "xanchor": "center"}, {"y": 2.5, "yanchor": "middle", "rotation": 0, "x": 0.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "4", "xanchor": "center"}, {"y": 2.5, "yanchor": "middle", "rotation": 0, "x": 1.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "3", "xanchor": "center"}, {"y": 2.5, "yanchor": "middle", "rotation": 0, "x": 2.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "6", "xanchor": "center"}, {"y": 2.5, "yanchor": "middle", "rotation": 0, "x": 3.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "9", "xanchor": "center"}, {"y": 2.5, "yanchor": "middle", "rotation": 0, "x": 4.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "8", "xanchor": "center"}, {"y": 2.5, "yanchor": "middle", "rotation": 0, "x": 5.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "1", "xanchor": "center"}, {"y": 2.5, "yanchor": "middle", "rotation": 0, "x": 6.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "5", "xanchor": "center"}, {"y": 2.5, "yanchor": "middle", "rotation": 0, "x": 7.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "2", "xanchor": "center"}, {"y": 2.5, "yanchor": "middle", "rotation": 0, "x": 8.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "7", "xanchor": "center"}, {"y": 1.5, "yanchor": "middle", "rotation": 0, "x": 0.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "1", "xanchor": "center"}, {"y": 1.5, "yanchor": "middle", "rotation": 0, "x": 1.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "8", "xanchor": "center"}, {"y": 1.5, "yanchor": "middle", "rotation": 0, "x": 2.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "5", "xanchor": "center"}, {"y": 1.5, "yanchor": "middle", "rotation": 0, "x": 3.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "6", "xanchor": "center"}, {"y": 1.5, "yanchor": "middle", "rotation": 0, "x": 4.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "2", "xanchor": "center"}, {"y": 1.5, "yanchor": "middle", "rotation": 0, "x": 5.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "7", "xanchor": "center"}, {"y": 1.5, "yanchor": "middle", "rotation": 0, "x": 6.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "4", "xanchor": "center"}, {"y": 1.5, "yanchor": "middle", "rotation": 0, "x": 7.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "3", "xanchor": "center"}, {"y": 1.5, "yanchor": "middle", "rotation": 0, "x": 8.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "9", "xanchor": "center"}, {"y": 0.5, "yanchor": "middle", "rotation": 0, "x": 0.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "9", "xanchor": "center"}, {"y": 0.5, "yanchor": "middle", "rotation": 0, "x": 1.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "7", "xanchor": "center"}, {"y": 0.5, "yanchor": "middle", "rotation": 0, "x": 2.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "2", "xanchor": "center"}, {"y": 0.5, "yanchor": "middle", "rotation": 0, "x": 3.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "3", "xanchor": "center"}, {"y": 0.5, "yanchor": "middle", "rotation": 0, "x": 4.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "4", "xanchor": "center"}, {"y": 0.5, "yanchor": "middle", "rotation": 0, "x": 5.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "5", "xanchor": "center"}, {"y": 0.5, "yanchor": "middle", "rotation": 0, "x": 6.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "1", "xanchor": "center"}, {"y": 0.5, "yanchor": "middle", "rotation": 0, "x": 7.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "8", "xanchor": "center"}, {"y": 0.5, "yanchor": "middle", "rotation": 0, "x": 8.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "6", "xanchor": "center"}], "plot_bgcolor": "rgba(255, 255, 255, 1.000)", "paper_bgcolor": "rgba(255, 255, 255, 1.000)", "margin": {"t": 20, "b": 20, "r": 0, "l": 0}, "yaxis": {"showline": false, "gridcolor": "rgba(0, 0, 0, 0.1)", "showticklabels": false, "anchor": "x", "range": [-0.27000000000000046, 9.27], "gridwidth": 0.5, "visible": true, "showgrid": false, "linecolor": "rgba(0, 0, 0, 1)", "zerolinecolor": "rgba(0, 0, 0, 1)", "tickangle": 0, "zeroline": false, "mirror": false, "domain": [0.009842519685039424, 0.9901574803149606], "title": {"text": ""}, "ticks": "inside", "type": "linear"}, "width": 983.984375}}
{"id": "21076e3c-2bf1-4c57-a704-7ef1ee6c6dd1", "data": [{"xaxis": "x", "mode": "lines", "x": [0, 0], "showlegend": true, "name": "y1", "colorbar": {"title": {"text": ""}}, "zmin": null, "z": null, "legendgroup": "y1", "y": [0, 9], "zmax": null, "line": {"shape": "linear", "color": "rgba(0, 0, 0, 1)", "dash": "solid", "width": 2}, "zaxis": null, "yaxis": "y", "metadata": {"smartZoomParams": {"maxCount": 2, "minCount": 25000, "currentCount": 2}, "shouldEnableSmartZoom": false}, "type": "scatter"}, {"xaxis": "x", "mode": "lines", "x": [0, 9], "showlegend": true, "name": "y2", "colorbar": {"title": {"text": ""}}, "zmin": null, "z": null, "legendgroup": "y2", "y": [0, 0], "zmax": null, "line": {"shape": "linear", "color": "rgba(0, 0, 0, 1)", "dash": "solid", "width": 2}, "zaxis": null, "yaxis": "y", "metadata": {"smartZoomParams": {"maxCount": 2, "minCount": 25000, "currentCount": 2}, "shouldEnableSmartZoom": false}, "type": "scatter"}, {"xaxis": "x", "mode": "lines", "x": [1, 1], "showlegend": true, "name": "y3", "colorbar": {"title": {"text": ""}}, "zmin": null, "z": null, "legendgroup": "y3", "y": [0, 9], "zmax": null, "line": {"shape": "linear", "color": "rgba(0, 0, 0, 1)", "dash": "solid", "width": 1}, "zaxis": null, "yaxis": "y", "metadata": {"smartZoomParams": {"maxCount": 2, "minCount": 25000, "currentCount": 2}, "shouldEnableSmartZoom": false}, "type": "scatter"}, {"xaxis": "x", "mode": "lines", "x": [0, 9], "showlegend": true, "name": "y4", "colorbar": {"title": {"text": ""}}, "zmin": null, "z": null, "legendgroup": "y4", "y": [1, 1], "zmax": null, "line": {"shape": "linear", "color": "rgba(0, 0, 0, 1)", "dash": "solid", "width": 1}, "zaxis": null, "yaxis": "y", "metadata": {"smartZoomParams": {"maxCount": 2, "minCount": 25000, "currentCount": 2}, "shouldEnableSmartZoom": false}, "type": "scatter"}, {"xaxis": "x", "mode": "lines", "x": [2, 2], "showlegend": true, "name": "y5", "colorbar": {"title": {"text": ""}}, "zmin": null, "z": null, "legendgroup": "y5", "y": [0, 9], "zmax": null, "line": {"shape": "linear", "color": "rgba(0, 0, 0, 1)", "dash": "solid", "width": 1}, "zaxis": null, "yaxis": "y", "metadata": {"smartZoomParams": {"maxCount": 2, "minCount": 25000, "currentCount": 2}, "shouldEnableSmartZoom": false}, "type": "scatter"}, {"xaxis": "x", "mode": "lines", "x": [0, 9], "showlegend": true, "name": "y6", "colorbar": {"title": {"text": ""}}, "zmin": null, "z": null, "legendgroup": "y6", "y": [2, 2], "zmax": null, "line": {"shape": "linear", "color": "rgba(0, 0, 0, 1)", "dash": "solid", "width": 1}, "zaxis": null, "yaxis": "y", "metadata": {"smartZoomParams": {"maxCount": 2, "minCount": 25000, "currentCount": 2}, "shouldEnableSmartZoom": false}, "type": "scatter"}, {"xaxis": "x", "mode": "lines", "x": [3, 3], "showlegend": true, "name": "y7", "colorbar": {"title": {"text": ""}}, "zmin": null, "z": null, "legendgroup": "y7", "y": [0, 9], "zmax": null, "line": {"shape": "linear", "color": "rgba(0, 0, 0, 1)", "dash": "solid", "width": 2}, "zaxis": null, "yaxis": "y", "metadata": {"smartZoomParams": {"maxCount": 2, "minCount": 25000, "currentCount": 2}, "shouldEnableSmartZoom": false}, "type": "scatter"}, {"xaxis": "x", "mode": "lines", "x": [0, 9], "showlegend": true, "name": "y8", "colorbar": {"title": {"text": ""}}, "zmin": null, "z": null, "legendgroup": "y8", "y": [3, 3], "zmax": null, "line": {"shape": "linear", "color": "rgba(0, 0, 0, 1)", "dash": "solid", "width": 2}, "zaxis": null, "yaxis": "y", "metadata": {"smartZoomParams": {"maxCount": 2, "minCount": 25000, "currentCount": 2}, "shouldEnableSmartZoom": false}, "type": "scatter"}, {"xaxis": "x", "mode": "lines", "x": [4, 4], "showlegend": true, "name": "y9", "colorbar": {"title": {"text": ""}}, "zmin": null, "z": null, "legendgroup": "y9", "y": [0, 9], "zmax": null, "line": {"shape": "linear", "color": "rgba(0, 0, 0, 1)", "dash": "solid", "width": 1}, "zaxis": null, "yaxis": "y", "metadata": {"smartZoomParams": {"maxCount": 2, "minCount": 25000, "currentCount": 2}, "shouldEnableSmartZoom": false}, "type": "scatter"}, {"xaxis": "x", "mode": "lines", "x": [0, 9], "showlegend": true, "name": "y10", "colorbar": {"title": {"text": ""}}, "zmin": null, "z": null, "legendgroup": "y10", "y": [4, 4], "zmax": null, "line": {"shape": "linear", "color": "rgba(0, 0, 0, 1)", "dash": "solid", "width": 1}, "zaxis": null, "yaxis": "y", "metadata": {"smartZoomParams": {"maxCount": 2, "minCount": 25000, "currentCount": 2}, "shouldEnableSmartZoom": false}, "type": "scatter"}, {"xaxis": "x", "mode": "lines", "x": [5, 5], "showlegend": true, "name": "y11", "colorbar": {"title": {"text": ""}}, "zmin": null, "z": null, "legendgroup": "y11", "y": [0, 9], "zmax": null, "line": {"shape": "linear", "color": "rgba(0, 0, 0, 1)", "dash": "solid", "width": 1}, "zaxis": null, "yaxis": "y", "metadata": {"smartZoomParams": {"maxCount": 2, "minCount": 25000, "currentCount": 2}, "shouldEnableSmartZoom": false}, "type": "scatter"}, {"xaxis": "x", "mode": "lines", "x": [0, 9], "showlegend": true, "name": "y12", "colorbar": {"title": {"text": ""}}, "zmin": null, "z": null, "legendgroup": "y12", "y": [5, 5], "zmax": null, "line": {"shape": "linear", "color": "rgba(0, 0, 0, 1)", "dash": "solid", "width": 1}, "zaxis": null, "yaxis": "y", "metadata": {"smartZoomParams": {"maxCount": 2, "minCount": 25000, "currentCount": 2}, "shouldEnableSmartZoom": false}, "type": "scatter"}, {"xaxis": "x", "mode": "lines", "x": [6, 6], "showlegend": true, "name": "y13", "colorbar": {"title": {"text": ""}}, "zmin": null, "z": null, "legendgroup": "y13", "y": [0, 9], "zmax": null, "line": {"shape": "linear", "color": "rgba(0, 0, 0, 1)", "dash": "solid", "width": 2}, "zaxis": null, "yaxis": "y", "metadata": {"smartZoomParams": {"maxCount": 2, "minCount": 25000, "currentCount": 2}, "shouldEnableSmartZoom": false}, "type": "scatter"}, {"xaxis": "x", "mode": "lines", "x": [0, 9], "showlegend": true, "name": "y14", "colorbar": {"title": {"text": ""}}, "zmin": null, "z": null, "legendgroup": "y14", "y": [6, 6], "zmax": null, "line": {"shape": "linear", "color": "rgba(0, 0, 0, 1)", "dash": "solid", "width": 2}, "zaxis": null, "yaxis": "y", "metadata": {"smartZoomParams": {"maxCount": 2, "minCount": 25000, "currentCount": 2}, "shouldEnableSmartZoom": false}, "type": "scatter"}, {"xaxis": "x", "mode": "lines", "x": [7, 7], "showlegend": true, "name": "y15", "colorbar": {"title": {"text": ""}}, "zmin": null, "z": null, "legendgroup": "y15", "y": [0, 9], "zmax": null, "line": {"shape": "linear", "color": "rgba(0, 0, 0, 1)", "dash": "solid", "width": 1}, "zaxis": null, "yaxis": "y", "metadata": {"smartZoomParams": {"maxCount": 2, "minCount": 25000, "currentCount": 2}, "shouldEnableSmartZoom": false}, "type": "scatter"}, {"xaxis": "x", "mode": "lines", "x": [0, 9], "showlegend": true, "name": "y16", "colorbar": {"title": {"text": ""}}, "zmin": null, "z": null, "legendgroup": "y16", "y": [7, 7], "zmax": null, "line": {"shape": "linear", "color": "rgba(0, 0, 0, 1)", "dash": "solid", "width": 1}, "zaxis": null, "yaxis": "y", "metadata": {"smartZoomParams": {"maxCount": 2, "minCount": 25000, "currentCount": 2}, "shouldEnableSmartZoom": false}, "type": "scatter"}, {"xaxis": "x", "mode": "lines", "x": [8, 8], "showlegend": true, "name": "y17", "colorbar": {"title": {"text": ""}}, "zmin": null, "z": null, "legendgroup": "y17", "y": [0, 9], "zmax": null, "line": {"shape": "linear", "color": "rgba(0, 0, 0, 1)", "dash": "solid", "width": 1}, "zaxis": null, "yaxis": "y", "metadata": {"smartZoomParams": {"maxCount": 2, "minCount": 25000, "currentCount": 2}, "shouldEnableSmartZoom": false}, "type": "scatter"}, {"xaxis": "x", "mode": "lines", "x": [0, 9], "showlegend": true, "name": "y18", "colorbar": {"title": {"text": ""}}, "zmin": null, "z": null, "legendgroup": "y18", "y": [8, 8], "zmax": null, "line": {"shape": "linear", "color": "rgba(0, 0, 0, 1)", "dash": "solid", "width": 1}, "zaxis": null, "yaxis": "y", "metadata": {"smartZoomParams": {"maxCount": 2, "minCount": 25000, "currentCount": 2}, "shouldEnableSmartZoom": false}, "type": "scatter"}, {"xaxis": "x", "mode": "lines", "x": [9, 9], "showlegend": true, "name": "y19", "colorbar": {"title": {"text": ""}}, "zmin": null, "z": null, "legendgroup": "y19", "y": [0, 9], "zmax": null, "line": {"shape": "linear", "color": "rgba(0, 0, 0, 1)", "dash": "solid", "width": 2}, "zaxis": null, "yaxis": "y", "metadata": {"smartZoomParams": {"maxCount": 2, "minCount": 25000, "currentCount": 2}, "shouldEnableSmartZoom": false}, "type": "scatter"}, {"xaxis": "x", "mode": "lines", "x": [0, 9], "showlegend": true, "name": "y20", "colorbar": {"title": {"text": ""}}, "zmin": null, "z": null, "legendgroup": "y20", "y": [9, 9], "zmax": null, "line": {"shape": "linear", "color": "rgba(0, 0, 0, 1)", "dash": "solid", "width": 2}, "zaxis": null, "yaxis": "y", "metadata": {"smartZoomParams": {"maxCount": 2, "minCount": 25000, "currentCount": 2}, "shouldEnableSmartZoom": false}, "type": "scatter"}], "config": {"showlegend": false, "height": 400, "xaxis": {"showline": false, "gridcolor": "rgba(0, 0, 0, 0.1)", "showticklabels": false, "anchor": "y", "range": [-2.7028915662650617, 11.702891566265059], "gridwidth": 0.5, "visible": true, "showgrid": false, "linecolor": "rgba(0, 0, 0, 1)", "zerolinecolor": "rgba(0, 0, 0, 1)", "tickangle": 0, "zeroline": false, "mirror": false, "domain": [0.006561679790026247, 0.9934383202099737], "title": {"text": ""}, "ticks": "inside", "type": "linear"}, "annotations": [{"y": 8.5, "yanchor": "middle", "rotation": 0, "x": 0.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "2", "xanchor": "center"}, {"y": 8.5, "yanchor": "middle", "rotation": 0, "x": 1.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "4", "xanchor": "center"}, {"y": 8.5, "yanchor": "middle", "rotation": 0, "x": 2.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "1", "xanchor": "center"}, {"y": 8.5, "yanchor": "middle", "rotation": 0, "x": 3.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "8", "xanchor": "center"}, {"y": 8.5, "yanchor": "middle", "rotation": 0, "x": 4.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "6", "xanchor": "center"}, {"y": 8.5, "yanchor": "middle", "rotation": 0, "x": 5.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "3", "xanchor": "center"}, {"y": 8.5, "yanchor": "middle", "rotation": 0, "x": 6.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "9", "xanchor": "center"}, {"y": 8.5, "yanchor": "middle", "rotation": 0, "x": 7.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "7", "xanchor": "center"}, {"y": 8.5, "yanchor": "middle", "rotation": 0, "x": 8.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "5", "xanchor": "center"}, {"y": 7.5, "yanchor": "middle", "rotation": 0, "x": 0.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "3", "xanchor": "center"}, {"y": 7.5, "yanchor": "middle", "rotation": 0, "x": 1.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "5", "xanchor": "center"}, {"y": 7.5, "yanchor": "middle", "rotation": 0, "x": 2.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "8", "xanchor": "center"}, {"y": 7.5, "yanchor": "middle", "rotation": 0, "x": 3.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "1", "xanchor": "center"}, {"y": 7.5, "yanchor": "middle", "rotation": 0, "x": 4.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "7", "xanchor": "center"}, {"y": 7.5, "yanchor": "middle", "rotation": 0, "x": 5.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "9", "xanchor": "center"}, {"y": 7.5, "yanchor": "middle", "rotation": 0, "x": 6.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "6", "xanchor": "center"}, {"y": 7.5, "yanchor": "middle", "rotation": 0, "x": 7.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "4", "xanchor": "center"}, {"y": 7.5, "yanchor": "middle", "rotation": 0, "x": 8.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "2", "xanchor": "center"}, {"y": 6.5, "yanchor": "middle", "rotation": 0, "x": 0.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "6", "xanchor": "center"}, {"y": 6.5, "yanchor": "middle", "rotation": 0, "x": 1.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "9", "xanchor": "center"}, {"y": 6.5, "yanchor": "middle", "rotation": 0, "x": 2.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "7", "xanchor": "center"}, {"y": 6.5, "yanchor": "middle", "rotation": 0, "x": 3.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "4", "xanchor": "center"}, {"y": 6.5, "yanchor": "middle", "rotation": 0, "x": 4.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "5", "xanchor": "center"}, {"y": 6.5, "yanchor": "middle", "rotation": 0, "x": 5.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "2", "xanchor": "center"}, {"y": 6.5, "yanchor": "middle", "rotation": 0, "x": 6.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "8", "xanchor": "center"}, {"y": 6.5, "yanchor": "middle", "rotation": 0, "x": 7.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "1", "xanchor": "center"}, {"y": 6.5, "yanchor": "middle", "rotation": 0, "x": 8.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "3", "xanchor": "center"}, {"y": 5.5, "yanchor": "middle", "rotation": 0, "x": 0.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "5", "xanchor": "center"}, {"y": 5.5, "yanchor": "middle", "rotation": 0, "x": 1.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "1", "xanchor": "center"}, {"y": 5.5, "yanchor": "middle", "rotation": 0, "x": 2.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "3", "xanchor": "center"}, {"y": 5.5, "yanchor": "middle", "rotation": 0, "x": 3.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "7", "xanchor": "center"}, {"y": 5.5, "yanchor": "middle", "rotation": 0, "x": 4.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "9", "xanchor": "center"}, {"y": 5.5, "yanchor": "middle", "rotation": 0, "x": 5.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "8", "xanchor": "center"}, {"y": 5.5, "yanchor": "middle", "rotation": 0, "x": 6.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "2", "xanchor": "center"}, {"y": 5.5, "yanchor": "middle", "rotation": 0, "x": 7.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "6", "xanchor": "center"}, {"y": 5.5, "yanchor": "middle", "rotation": 0, "x": 8.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "4", "xanchor": "center"}, {"y": 4.5, "yanchor": "middle", "rotation": 0, "x": 0.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "7", "xanchor": "center"}, {"y": 4.5, "yanchor": "middle", "rotation": 0, "x": 1.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "2", "xanchor": "center"}, {"y": 4.5, "yanchor": "middle", "rotation": 0, "x": 2.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "4", "xanchor": "center"}, {"y": 4.5, "yanchor": "middle", "rotation": 0, "x": 3.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "5", "xanchor": "center"}, {"y": 4.5, "yanchor": "middle", "rotation": 0, "x": 4.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "1", "xanchor": "center"}, {"y": 4.5, "yanchor": "middle", "rotation": 0, "x": 5.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "6", "xanchor": "center"}, {"y": 4.5, "yanchor": "middle", "rotation": 0, "x": 6.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "3", "xanchor": "center"}, {"y": 4.5, "yanchor": "middle", "rotation": 0, "x": 7.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "9", "xanchor": "center"}, {"y": 4.5, "yanchor": "middle", "rotation": 0, "x": 8.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "8", "xanchor": "center"}, {"y": 3.5, "yanchor": "middle", "rotation": 0, "x": 0.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "8", "xanchor": "center"}, {"y": 3.5, "yanchor": "middle", "rotation": 0, "x": 1.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "6", "xanchor": "center"}, {"y": 3.5, "yanchor": "middle", "rotation": 0, "x": 2.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "9", "xanchor": "center"}, {"y": 3.5, "yanchor": "middle", "rotation": 0, "x": 3.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "2", "xanchor": "center"}, {"y": 3.5, "yanchor": "middle", "rotation": 0, "x": 4.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "3", "xanchor": "center"}, {"y": 3.5, "yanchor": "middle", "rotation": 0, "x": 5.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "4", "xanchor": "center"}, {"y": 3.5, "yanchor": "middle", "rotation": 0, "x": 6.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "7", "xanchor": "center"}, {"y": 3.5, "yanchor": "middle", "rotation": 0, "x": 7.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "5", "xanchor": "center"}, {"y": 3.5, "yanchor": "middle", "rotation": 0, "x": 8.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "1", "xanchor": "center"}, {"y": 2.5, "yanchor": "middle", "rotation": 0, "x": 0.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "4", "xanchor": "center"}, {"y": 2.5, "yanchor": "middle", "rotation": 0, "x": 1.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "3", "xanchor": "center"}, {"y": 2.5, "yanchor": "middle", "rotation": 0, "x": 2.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "6", "xanchor": "center"}, {"y": 2.5, "yanchor": "middle", "rotation": 0, "x": 3.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "9", "xanchor": "center"}, {"y": 2.5, "yanchor": "middle", "rotation": 0, "x": 4.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "8", "xanchor": "center"}, {"y": 2.5, "yanchor": "middle", "rotation": 0, "x": 5.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "1", "xanchor": "center"}, {"y": 2.5, "yanchor": "middle", "rotation": 0, "x": 6.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "5", "xanchor": "center"}, {"y": 2.5, "yanchor": "middle", "rotation": 0, "x": 7.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "2", "xanchor": "center"}, {"y": 2.5, "yanchor": "middle", "rotation": 0, "x": 8.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "7", "xanchor": "center"}, {"y": 1.5, "yanchor": "middle", "rotation": 0, "x": 0.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "1", "xanchor": "center"}, {"y": 1.5, "yanchor": "middle", "rotation": 0, "x": 1.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "8", "xanchor": "center"}, {"y": 1.5, "yanchor": "middle", "rotation": 0, "x": 2.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "5", "xanchor": "center"}, {"y": 1.5, "yanchor": "middle", "rotation": 0, "x": 3.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "6", "xanchor": "center"}, {"y": 1.5, "yanchor": "middle", "rotation": 0, "x": 4.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "2", "xanchor": "center"}, {"y": 1.5, "yanchor": "middle", "rotation": 0, "x": 5.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "7", "xanchor": "center"}, {"y": 1.5, "yanchor": "middle", "rotation": 0, "x": 6.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "4", "xanchor": "center"}, {"y": 1.5, "yanchor": "middle", "rotation": 0, "x": 7.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "3", "xanchor": "center"}, {"y": 1.5, "yanchor": "middle", "rotation": 0, "x": 8.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "9", "xanchor": "center"}, {"y": 0.5, "yanchor": "middle", "rotation": 0, "x": 0.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "9", "xanchor": "center"}, {"y": 0.5, "yanchor": "middle", "rotation": 0, "x": 1.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "7", "xanchor": "center"}, {"y": 0.5, "yanchor": "middle", "rotation": 0, "x": 2.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "2", "xanchor": "center"}, {"y": 0.5, "yanchor": "middle", "rotation": 0, "x": 3.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "3", "xanchor": "center"}, {"y": 0.5, "yanchor": "middle", "rotation": 0, "x": 4.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "4", "xanchor": "center"}, {"y": 0.5, "yanchor": "middle", "rotation": 0, "x": 5.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "5", "xanchor": "center"}, {"y": 0.5, "yanchor": "middle", "rotation": 0, "x": 6.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "1", "xanchor": "center"}, {"y": 0.5, "yanchor": "middle", "rotation": 0, "x": 7.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "8", "xanchor": "center"}, {"y": 0.5, "yanchor": "middle", "rotation": 0, "x": 8.5, "font": {"family": "sans-serif", "color": "rgba(0, 0, 0, 1)", "size": 20}, "yref": "y", "xref": "x", "showarrow": false, "text": "6", "xanchor": "center"}], "plot_bgcolor": "rgba(255, 255, 255, 1.000)", "paper_bgcolor": "rgba(255, 255, 255, 1.000)", "margin": {"t": 20, "b": 20, "r": 0, "l": 0}, "yaxis": {"showline": false, "gridcolor": "rgba(0, 0, 0, 0.1)", "showticklabels": false, "anchor": "x", "range": [-0.27000000000000046, 9.27], "gridwidth": 0.5, "visible": true, "showgrid": false, "linecolor": "rgba(0, 0, 0, 1)", "zerolinecolor": "rgba(0, 0, 0, 1)", "tickangle": 0, "zeroline": false, "mirror": false, "domain": [0.009842519685039424, 0.9901574803149606], "title": {"text": ""}, "ticks": "inside", "type": "linear"}, "width": 983.984375}}