Решение головоломок судоку 
 
 
 
 
В данном примере продемонстрировано, как найти решение головоломки судоку, используя методы смешанного целочисленного линейного программирования (англ. Mixed Integer Linear Programming, MILP) и программирования в ограничениях (англ. Constraint Programming, CP).
 
 
 
 
В этом примере мы воспользуемся функциями библиотеки JuMP.jl  для формулировки оптимизационной задачи, библиотекой линейной оптимизации HiGHS.jl , библиотекой генерации случайных чисел Random.jl  и библиотекой Plots.jl  для визуализации результатов.
 
 
 
 
Если в вашем окружении не установлена последняя версия пакета JuMP, раскомментируйте и запустите ячейку ниже:
 
 
 
 
Судоку — это логическая комбинаторная головоломка с размещением чисел. Цель состоит в том, чтобы заполнить сетку 9x9 цифрами так, чтобы каждый столбец, каждая строка и каждая из девяти подсеток 3x3 содержали все цифры от 1 до 9.
 
 
 
 
Правила:
Каждая строка должна содержать цифры от 1 до 9 без повторений. 
Каждый столбец должен содержать цифры от 1 до 9 без повторений. 
Каждая подсетка 3х3 должна содержать цифры от 1 до 9 без повторений. 
 
 
 
 
 
Для того чтобы решение головоломки было возможно, предоставлены первоначальные подсказки:
 
 
 
 
Головоломки судоку варьируются от простых до чрезвычайно сложных, причем сложность часто определяется количеством предоставленных первоначальных подсказок и сложностью стратегий, необходимых для их решения. Правильно составленная головоломка судоку должна иметь только одно решение.
 
 
 
 
Подключите библиотеку JuMP:
 
 
 
 
Подключите библиотеку решателя HiGHS:
 
 
 
 
Подключите библиотеку построения графиков Plots:
 
 
 
 
Подключите библиотеку генерации случайных чисел Random:
 
 
 
 
Создание функции визуализации судоку 
 
 
 
 
Создайте функцию plot_sudoku(), визуализирующую судоку:
 
 
 
 
plot_sudoku (generic function with 1 method) 
 
 
 
 
 
Мы будем использовать данную функцию для визуализации судоку в этом примере.
 
 
 
 
Генерация головоломок судоку 
 
 
 
 
В данном разделе мы напишем программу, которая будет генерировать головоломки судоку для решения.
 
 
 
 
Создайте функцию generate_full_grid(), отвечающую за построение сетки судоку:
 
 
 
 
generate_full_grid (generic function with 1 method) 
 
 
 
 
 
Создайте рекурсивную функцию fill_grid!(), заполняющую сетку судоку числами:
 
 
 
 
fill_grid! (generic function with 1 method) 
 
 
 
 
 
Данная функция реализует алгоритм обратного отслеживания для заполнения сетки судоку допустимыми числами.
 
 
 
 
Создайте функцию is_valid(), проверяющую допустимо ли размещение заданного числа (num) в определенной ячейке (строке, столбце) сетки судоку:
 
 
 
 
is_valid (generic function with 1 method) 
 
 
 
 
 
Эта функция имеет решающее значение для соблюдения всех трех правил в процессе заполнения сетки судоку.
 
 
 
 
Создайте функцию remove_numbers!(), отвечающую за удаление чисел из заполненной сетки судоку, для создания головоломки:
 
 
 
 
remove_numbers! (generic function with 1 method) 
 
 
 
 
 
Это ключевая часть создания головоломок судоку разного уровня сложности, поскольку количество удаленных ячеек может повлиять на сложность головоломки.
 
 
 
 
Создайте рекурсивную функцию count_solutions(), подсчитывающую количество допустимых решений для заданной сетки судоку:
 
 
 
 
count_solutions (generic function with 2 methods) 
 
 
 
 
 
Эта функция имеет решающее значение для обеспечения того, чтобы удаление чисел из сетки (в функции remove_numbers!) не приводило к появлению множественных решений.
 
 
 
 
Создайте функцию generate_sudoku_puzzle(), генерирующую судоку с заданным количеством подсказок:
 
 
 
 
generate_sudoku_puzzle (generic function with 1 method) 
 
 
 
 
 
Теоретическое минимальное количество подсказок для головоломки судоку с единственным решением — 17.
 
 
 
 
Написанная нами программа может стабильно генерировать судоку с единственным решением, где минимальное количество подсказок составляет где-то между 20 и 30, что является более чем достаточным для данного примера.
 
 
 
 
Сгенерируйте судоку с 25 подсказками:
 
 
 
 
Визуализируйте судоку с подсказками:
 
 
 
 
Формулировка задачи смешанного целочисленного линейного программирования 
 
 
 
 
Решим задачу с использованием смешанного целочисленного линейного программирования. Цель состоит в том, чтобы смоделировать головоломку как задачу осуществимости, где каждая ячейка должна удовлетворять определенным ограничениям.
 
 
 
 
Создайте оптимизационную задачу с помощью функции Model() и укажите название решателя в скобках:
 
 
 
 
A JuMP Model
├ solver: HiGHS
├ objective_sense: FEASIBILITY_SENSE
├ num_variables: 0
├ num_constraints: 0
└ Names registered in the model: none 
 
 
 
 
 
Создайте переменную x, представляющую собой трехмерный массив  , где i, j и k находятся в диапазоне от 1 до 9. Аргумент Bin указывает на то, что переменная x является двоичной.
 
 
 
 
Массив x состоит из:
i (индекс строки): представляет номер строки в сетке судоку в диапазоне от 1 до 9 
j (индекс столбца): представляет номер столбца в сетке судоку, также в диапазоне от 1 до 9 
k (индекс цифры): представляет потенциальную цифру (от 1 до 9), которую можно поместить в ячейку (i, j) 
 
 
 
 
 
Таким образом, двоичное представление x означает что:
   — цифра 8 помещена в ячейку, расположенную в строке 3, столбце 3
 
  = 0 — цифра 8 не помещена в эту ячейку
 
 
 
 
 
 
Используя циклы for для перебора строк i и столбцов j, создайте следующее условие для оптимизационной задачи:
 
 
 
 
Данное условие гарантирует, что каждая из ячеек в сетке судоку содержит ровно одно число от 1 до 9.
 
 
 
 
Используя циклы for для перебора строк i и столбцов j, создайте следующие условия для оптимизационной задачи:
Это ограничение гарантирует, что каждая цифра k появляется ровно один раз в каждой строке ind.
Это ограничение гарантирует, что каждая цифра k появляется ровно один раз в каждом столбце ind.
 
 
 
 
Код в вышестоящей ячейке добавляет в модель 162 ограничения:
81 ограничение для строк (9 строк × 9 цифр) 
81 ограничение для столбцов (9 столбцов × 9 цифр) 
 
 
 
 
 
С помощью этих двух условий мы выполнили соблюдение первых двух правил судоку:
Каждая строка должна содержать цифры от 1 до 9 без повторений 
Каждый столбец должен содержать цифры от 1 до 9 без повторений 
 
 
 
 
 
Используя циклы for, создайте следующее условие для оптимизационной задачи:
 
 
 
 
Самый внешний цикл для 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.11.0 (git hash: 364c83a51e): Copyright (c) 2025 HiGHS under MIT licence terms
MIP  has 324 rows; 729 cols; 2916 nonzeros; 729 integer variables (704 binary)
Coefficient ranges:
  Matrix [1e+00, 1e+00]
  Cost   [0e+00, 0e+00]
  Bound  [1e+00, 1e+00]
  RHS    [1e+00, 1e+00]
Presolving model
201 rows, 201 cols, 806 nonzeros  0s
111 rows, 102 cols, 490 nonzeros  0s
96 rows, 84 cols, 470 nonzeros  0s
33 rows, 0 cols, 0 nonzeros  0s
0 rows, 0 cols, 0 nonzeros  0s
Presolve: Optimal
Src: B => Branching; C => Central rounding; F => Feasibility pump; J => Feasibility jump;
     H => Heuristic; L => Sub-MIP; P => Empty MIP; R => Randomized rounding; Z => ZI Round;
     I => Shifting; S => Solve LP; T => Evaluate node; U => Unbounded; X => User solution;
     z => Trivial zero; l => Trivial lower; u => Trivial upper; p => Trivial point
        Nodes      |    B&B Tree     |            Objective Bounds              |  Dynamic Constraints |       Work      
Src  Proc. InQueue |  Leaves   Expl. | BestBound       BestSol              Gap |   Cuts   InLp Confl. | LpIters     Time
         0       0         0   0.00%   0               0                  0.00%        0      0      0         0     0.0s
Solving report
  Status            Optimal
  Primal bound      0
  Dual bound        0
  Gap               0% (tolerance: 0.01%)
  P-D integral      0
  Solution status   feasible
                    0 (objective)
                    0 (bound viol.)
                    0 (int. viol.)
                    0 (row viol.)
  Timing            0.00 (total)
                    0.00 (presolve)
                    0.00 (solve)
                    0.00 (postsolve)
  Max sub-MIP depth 0
  Nodes             0
  Repair LPs        0 (0 feasible; 0 iterations)
  LP iterations     0 (total)
                    0 (strong br.)
                    0 (separation)
                    0 (heuristics)
 
 
 
 
 
 
Выведите статус результата работы решателя:
 
 
 
 
Статус: OPTIMAL
Оптимальное решение найдено
 
 
 
 
 
 
Статус OPTIMAL  означает, что решатель нашел глобальное оптимальное решение задачи.
 
 
 
 
Сохраните значения двоичной переменной x в переменной x_val:
 
 
 
 
9×9×9 Array{Float64, 3}:
[:, :, 1] =
 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  0.0  1.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  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
[:, :, 2] =
 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
 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  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  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
[:, :, 3] =
 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  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  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  1.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0
[:, :, 4] =
 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  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  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  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
[:, :, 5] =
 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  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  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
 0.0  0.0  0.0  0.0  0.0  1.0  0.0  0.0  0.0
[:, :, 6] =
 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  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  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  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  0.0  0.0  1.0  0.0
[:, :, 7] =
 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  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  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  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
[:, :, 8] =
 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  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  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  0.0  1.0
[:, :, 9] =
 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
 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  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  1.0  0.0
 0.0  0.0  0.0  0.0  1.0  0.0  0.0  0.0  0.0 
 
 
 
 
 
Вы можете убедиться в том, что каждому значению k из решения была присвоена позиция в сетке переменной x_val.
 
 
 
 
Создайте новую матрицу 9x9, заполненную нулями, которая будет использована для преобразования результатов из двоичного формата в стандартный формат сетки судоку. Аргумент Int указывает на то, что значения матрицы целые числа.
 
 
 
 
Используя циклы for для перебора всех ячейк и возможных цифр в сетке судоку, преобразуйте значения трехмерного массива x_val в двухмерный массив целых чисел sol_milp.
 
 
 
 
Теперь переменная sol_milp содержит фактическое решение головоломки в формате двухмерного массива целых чисел.
 
 
 
 
Визуализируйте результаты:
 
 
 
 
Мы продемонстрировали решение задачи с помощью смешанного целочисленного линейного программирования. Решатель находит возможную конфигурацию чисел, которая соответствует правилам решения судоку, сформулированным как ограничения по строкам, столбцам и подсеткам.
 
 
 
 
Формулировка задачи программирования в ограничениях 
 
 
 
 
Вы также можете смоделировать данную задачу, используя программирование с ограничениями. Применим условие AllDifferent()(«все разные»), которое гласит, что никакие два элемента вектора не могут принимать одно и то же значение.
 
 
 
 
Создайте оптимизационную задачу с помощью функции Model() и укажите название решателя в скобках:
 
 
 
 
A JuMP Model
├ solver: HiGHS
├ objective_sense: FEASIBILITY_SENSE
├ num_variables: 0
├ num_constraints: 0
└ Names registered in the model: none 
 
 
 
 
 
Создайте переменную sudoku_cp, содержащую двухмерный массив  . Каждая переменная находится в диапазоне от 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.11.0 (git hash: 364c83a51e): Copyright (c) 2025 HiGHS under MIT licence terms
MIP  has 999 rows; 1938 cols; 7347 nonzeros; 1911 integer variables (1830 binary)
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, 5784 nonzeros  0s
504 rows, 1568 cols, 4104 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, 0 domain fixed)
   4104 nonzeros
Src: B => Branching; C => Central rounding; F => Feasibility pump; J => Feasibility jump;
     H => Heuristic; L => Sub-MIP; P => Empty MIP; R => Randomized rounding; Z => ZI Round;
     I => Shifting; S => Solve LP; T => Evaluate node; U => Unbounded; X => User solution;
     z => Trivial zero; l => Trivial lower; u => Trivial upper; p => Trivial point
        Nodes      |    B&B Tree     |            Objective Bounds              |  Dynamic Constraints |       Work      
Src  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      6       828     0.1s
50.1% inactive integer columns, restarting
         0       0         0   0.00%   0               0                  0.00%        0    526      0      7398     1.0s
Solving report
  Status            Optimal
  Primal bound      0
  Dual bound        0
  Gap               0% (tolerance: 0.01%)
  P-D integral      inf
  Solution status   feasible
                    0 (objective)
                    0 (bound viol.)
                    0 (int. viol.)
                    0 (row viol.)
  Timing            0.99 (total)
                    0.00 (presolve)
                    0.00 (solve)
                    0.00 (postsolve)
  Max sub-MIP depth 1
  Nodes             0
  Repair LPs        0 (0 feasible; 0 iterations)
  LP iterations     7398 (total)
                    0 (strong br.)
                    1093 (separation)
                    4968 (heuristics)
 
 
 
 
 
 
Выведите статус результата работы решателя:
 
 
 
 
Статус: OPTIMAL
Оптимальное решение найдено
 
 
 
 
 
 
Статус OPTIMAL  означает, что решатель нашел глобальное оптимальное решение задачи.
 
 
 
 
Сохраните результаты в переменной. Полученные значения имеют тип Float64. Вы можете использовать функцию round вместе с аргументом Int, чтобы конвертировать значения в целые числа.
 
 
 
 
Визуализируйте полученное решение судоку:
 
 
 
 
Вы можете сравнить решения полученные путем использования смешанного целочисленного линейного программирования и путем программирования в ограничениях:
 
 
 
 
Результаты обоих методов решения головоломки совпадают.
 
 
 
 
В данном примере мы решили головоломку судоку с помощью двух разных подходов — смешанного целочисленного линейного программирования (англ. Mixed Integer Linear Programming, MILP) и программирования в ограничениях (англ. Constraint Programming, CP). Оба подхода могут решить головоломку, но они формулируют и решают задачу принципиально по-разному, демонстрируя различные характеристики в моделировании и решении задач. В рамках решения задачи продемонстрированной в данном примере мы можем выделить некоторые отличия между этими подходами.
 
 
 
 
Смешанное целочисленное линейное программирование: 
Использует двоичные переменные  
 
@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  ) 
 
 
 
 
 
 
 
 
Более крупная модель с большим количеством переменных, но с более простыми ограничениями 
Как правило, более устойчиво к небольшим изменениям модели и лучше масштабируется с увеличением размера задачи 
 
 
 
 
 
Программирование в ограничениях: 
Использует целочисленные переменные  
 
@variable (sudoku_cp, 1  <= x[1 :9 , 1 :9 ] <= 9 , Int )
 
 
 
 
 
 
 
 
Использует глобальные ограничения, такие как AllDifferent, для обеспечения соблюдения правил судоку 
 
@constraint(sudoku_cp, [i = 1:9], x[i, :] в MOI.AllDifferent(9)) 
 
 
 
 
 
 
 
 
Меньшая модель с меньшим количеством переменных, но с более сложными ограничениями 
Может быть более чувствительно к размеру и структуре задачи 
 
 
 
 
 
На практике выбор между смешанным целочисленным линейным программированием  и программированием в ограничениях часто зависит от конкретных характеристик задачи, причем для некоторых задач один метод лучше подходит, чем другой. В некоторых случаях эффективными могут оказаться гибридные подходы, сочетающие оба метода.
 
 
 
 
 
 
 
{"id": "f2c9adad-b406-456a-b61d-6b88dfe17e36", "data": [{"showlegend": true, "mode": "lines", "xaxis": "x", "colorbar": {"y": 0.5, "title": {"text": ""}, "len": 0.9803149606299212, "x": 0.9934383202099737}, "name": "y1", "yaxis": "y", "legendgroup": "y1", "line": {"color": "rgba(0, 0, 0, 1)", "shape": "linear", "dash": "solid", "width": 2}, "y": [0, 9], "type": "scatter", "x": [0, 0]}, {"showlegend": true, "mode": "lines", "xaxis": "x", "colorbar": {"y": 0.5, "title": {"text": ""}, "len": 0.9803149606299212, "x": 0.9934383202099737}, "name": "y2", "yaxis": "y", "legendgroup": "y2", "line": {"color": "rgba(0, 0, 0, 1)", "shape": "linear", "dash": "solid", "width": 2}, "y": [0, 0], "type": "scatter", "x": [0, 9]}, {"showlegend": true, "mode": "lines", "xaxis": "x", "colorbar": {"y": 0.5, "title": {"text": ""}, "len": 0.9803149606299212, "x": 0.9934383202099737}, "name": "y3", "yaxis": "y", "legendgroup": "y3", "line": {"color": "rgba(0, 0, 0, 1)", "shape": "linear", "dash": "solid", "width": 1}, "y": [0, 9], "type": "scatter", "x": [1, 1]}, {"showlegend": true, "mode": "lines", "xaxis": "x", "colorbar": {"y": 0.5, "title": {"text": ""}, "len": 0.9803149606299212, "x": 0.9934383202099737}, "name": "y4", "yaxis": "y", "legendgroup": "y4", "line": {"color": "rgba(0, 0, 0, 1)", "shape": "linear", "dash": "solid", "width": 1}, "y": [1, 1], "type": "scatter", "x": [0, 9]}, {"showlegend": true, "mode": "lines", "xaxis": "x", "colorbar": {"y": 0.5, "title": {"text": ""}, "len": 0.9803149606299212, "x": 0.9934383202099737}, "name": "y5", "yaxis": "y", "legendgroup": "y5", "line": {"color": "rgba(0, 0, 0, 1)", "shape": "linear", "dash": "solid", "width": 1}, "y": [0, 9], "type": "scatter", "x": [2, 2]}, {"showlegend": true, "mode": "lines", "xaxis": "x", "colorbar": {"y": 0.5, "title": {"text": ""}, "len": 0.9803149606299212, "x": 0.9934383202099737}, "name": "y6", "yaxis": "y", "legendgroup": "y6", "line": {"color": "rgba(0, 0, 0, 1)", "shape": "linear", "dash": "solid", "width": 1}, "y": [2, 2], "type": "scatter", "x": [0, 9]}, {"showlegend": true, "mode": "lines", "xaxis": "x", "colorbar": {"y": 0.5, "title": {"text": ""}, "len": 0.9803149606299212, "x": 0.9934383202099737}, "name": "y7", "yaxis": "y", "legendgroup": "y7", "line": {"color": "rgba(0, 0, 0, 1)", "shape": "linear", "dash": "solid", "width": 2}, "y": [0, 9], "type": "scatter", "x": [3, 3]}, {"showlegend": true, "mode": "lines", "xaxis": "x", "colorbar": {"y": 0.5, "title": {"text": ""}, "len": 0.9803149606299212, "x": 0.9934383202099737}, "name": "y8", "yaxis": "y", "legendgroup": "y8", "line": {"color": "rgba(0, 0, 0, 1)", "shape": "linear", "dash": "solid", "width": 2}, "y": [3, 3], "type": "scatter", "x": [0, 9]}, {"showlegend": true, "mode": "lines", "xaxis": "x", "colorbar": {"y": 0.5, "title": {"text": ""}, "len": 0.9803149606299212, "x": 0.9934383202099737}, "name": "y9", "yaxis": "y", "legendgroup": "y9", "line": {"color": "rgba(0, 0, 0, 1)", "shape": "linear", "dash": "solid", "width": 1}, "y": [0, 9], "type": "scatter", "x": [4, 4]}, {"showlegend": true, "mode": "lines", "xaxis": "x", "colorbar": {"y": 0.5, "title": {"text": ""}, "len": 0.9803149606299212, "x": 0.9934383202099737}, "name": "y10", "yaxis": "y", "legendgroup": "y10", "line": {"color": "rgba(0, 0, 0, 1)", "shape": "linear", "dash": "solid", "width": 1}, "y": [4, 4], "type": "scatter", "x": [0, 9]}, {"showlegend": true, "mode": "lines", "xaxis": "x", "colorbar": {"y": 0.5, "title": {"text": ""}, "len": 0.9803149606299212, "x": 0.9934383202099737}, "name": "y11", "yaxis": "y", "legendgroup": "y11", "line": {"color": "rgba(0, 0, 0, 1)", "shape": "linear", "dash": "solid", "width": 1}, "y": [0, 9], "type": "scatter", "x": [5, 5]}, {"showlegend": true, "mode": "lines", "xaxis": "x", "colorbar": {"y": 0.5, "title": {"text": ""}, "len": 0.9803149606299212, "x": 0.9934383202099737}, "name": "y12", "yaxis": "y", "legendgroup": "y12", "line": {"color": "rgba(0, 0, 0, 1)", "shape": "linear", "dash": "solid", "width": 1}, "y": [5, 5], "type": "scatter", "x": [0, 9]}, {"showlegend": true, "mode": "lines", "xaxis": "x", "colorbar": {"y": 0.5, "title": {"text": ""}, "len": 0.9803149606299212, "x": 0.9934383202099737}, "name": "y13", "yaxis": "y", "legendgroup": "y13", "line": {"color": "rgba(0, 0, 0, 1)", "shape": "linear", "dash": "solid", "width": 2}, "y": [0, 9], "type": "scatter", "x": [6, 6]}, {"showlegend": true, "mode": "lines", "xaxis": "x", "colorbar": {"y": 0.5, "title": {"text": ""}, "len": 0.9803149606299212, "x": 0.9934383202099737}, "name": "y14", "yaxis": "y", "legendgroup": "y14", "line": {"color": "rgba(0, 0, 0, 1)", "shape": "linear", "dash": "solid", "width": 2}, "y": [6, 6], "type": "scatter", "x": [0, 9]}, {"showlegend": true, "mode": "lines", "xaxis": "x", "colorbar": {"y": 0.5, "title": {"text": ""}, "len": 0.9803149606299212, "x": 0.9934383202099737}, "name": "y15", "yaxis": "y", "legendgroup": "y15", "line": {"color": "rgba(0, 0, 0, 1)", "shape": "linear", "dash": "solid", "width": 1}, "y": [0, 9], "type": "scatter", "x": [7, 7]}, {"showlegend": true, "mode": "lines", "xaxis": "x", "colorbar": {"y": 0.5, "title": {"text": ""}, "len": 0.9803149606299212, "x": 0.9934383202099737}, "name": "y16", "yaxis": "y", "legendgroup": "y16", "line": {"color": "rgba(0, 0, 0, 1)", "shape": "linear", "dash": "solid", "width": 1}, "y": [7, 7], "type": "scatter", "x": [0, 9]}, {"showlegend": true, "mode": "lines", "xaxis": "x", "colorbar": {"y": 0.5, "title": {"text": ""}, "len": 0.9803149606299212, "x": 0.9934383202099737}, "name": "y17", "yaxis": "y", "legendgroup": "y17", "line": {"color": "rgba(0, 0, 0, 1)", "shape": "linear", "dash": "solid", "width": 1}, "y": [0, 9], "type": "scatter", "x": [8, 8]}, {"showlegend": true, "mode": "lines", "xaxis": "x", "colorbar": {"y": 0.5, "title": {"text": ""}, "len": 0.9803149606299212, "x": 0.9934383202099737}, "name": "y18", "yaxis": "y", "legendgroup": "y18", "line": {"color": "rgba(0, 0, 0, 1)", "shape": "linear", "dash": "solid", "width": 1}, "y": [8, 8], "type": "scatter", "x": [0, 9]}, {"showlegend": true, "mode": "lines", "xaxis": "x", "colorbar": {"y": 0.5, "title": {"text": ""}, "len": 0.9803149606299212, "x": 0.9934383202099737}, "name": "y19", "yaxis": "y", "legendgroup": "y19", "line": {"color": "rgba(0, 0, 0, 1)", "shape": "linear", "dash": "solid", "width": 2}, "y": [0, 9], "type": "scatter", "x": [9, 9]}, {"showlegend": true, "mode": "lines", "xaxis": "x", "colorbar": {"y": 0.5, "title": {"text": ""}, "len": 0.9803149606299212, "x": 0.9934383202099737}, "name": "y20", "yaxis": "y", "legendgroup": "y20", "line": {"color": "rgba(0, 0, 0, 1)", "shape": "linear", "dash": "solid", "width": 2}, "y": [9, 9], "type": "scatter", "x": [0, 9]}], "config": {"showlegend": false, "xaxis": {"tickangle": 0, "showline": false, "gridcolor": "rgba(0, 0, 0, 0.1)", "showticklabels": false, "gridwidth": 0.5, "visible": true, "ticks": "inside", "range": [-2.7028915662650617, 11.702891566265059], "domain": [0.006561679790026247, 0.9934383202099737], "linecolor": "rgba(0, 0, 0, 1)", "showgrid": false, "zeroline": false, "type": "linear", "title": {"text": ""}, "zerolinecolor": "rgba(0, 0, 0, 1)", "mirror": false, "anchor": "y"}, "paper_bgcolor": "rgba(255, 255, 255, 1.000)", "annotations": [{"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 8.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "6", "xref": "x", "x": 1.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 8.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "3", "xref": "x", "x": 3.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 8.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "8", "xref": "x", "x": 7.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 7.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "6", "xref": "x", "x": 8.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 6.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "4", "xref": "x", "x": 2.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 6.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "8", "xref": "x", "x": 4.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 6.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "1", "xref": "x", "x": 7.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 6.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "9", "xref": "x", "x": 8.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 5.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "9", "xref": "x", "x": 6.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 5.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "7", "xref": "x", "x": 7.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 4.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "1", "xref": "x", "x": 0.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 3.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "3", "xref": "x", "x": 0.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 3.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "5", "xref": "x", "x": 1.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 3.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "1", "xref": "x", "x": 4.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 3.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "9", "xref": "x", "x": 5.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 3.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "2", "xref": "x", "x": 7.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 2.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "5", "xref": "x", "x": 2.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 2.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "2", "xref": "x", "x": 6.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 2.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "4", "xref": "x", "x": 7.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 2.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "3", "xref": "x", "x": 8.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 1.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "1", "xref": "x", "x": 2.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 1.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "8", "xref": "x", "x": 3.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 1.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "2", "xref": "x", "x": 5.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 1.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "7", "xref": "x", "x": 8.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 0.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "9", "xref": "x", "x": 4.5}], "height": 400, "margin": {"l": 0, "b": 20, "r": 0, "t": 20}, "plot_bgcolor": "rgba(255, 255, 255, 1.000)", "yaxis": {"tickangle": 0, "showline": false, "gridcolor": "rgba(0, 0, 0, 0.1)", "showticklabels": false, "gridwidth": 0.5, "visible": true, "ticks": "inside", "range": [-0.27000000000000046, 9.27], "domain": [0.009842519685039424, 0.9901574803149606], "linecolor": "rgba(0, 0, 0, 1)", "showgrid": false, "zeroline": false, "type": "linear", "title": {"text": ""}, "zerolinecolor": "rgba(0, 0, 0, 1)", "mirror": false, "anchor": "x"}, "width": 679.5}}
{"id": "d063b040-16d2-45ec-a948-5e89c5584ae7", "data": [{"showlegend": true, "mode": "lines", "xaxis": "x", "colorbar": {"y": 0.5, "title": {"text": ""}, "len": 0.9803149606299212, "x": 0.9934383202099737}, "name": "y1", "yaxis": "y", "legendgroup": "y1", "line": {"color": "rgba(0, 0, 0, 1)", "shape": "linear", "dash": "solid", "width": 2}, "y": [0, 9], "type": "scatter", "x": [0, 0]}, {"showlegend": true, "mode": "lines", "xaxis": "x", "colorbar": {"y": 0.5, "title": {"text": ""}, "len": 0.9803149606299212, "x": 0.9934383202099737}, "name": "y2", "yaxis": "y", "legendgroup": "y2", "line": {"color": "rgba(0, 0, 0, 1)", "shape": "linear", "dash": "solid", "width": 2}, "y": [0, 0], "type": "scatter", "x": [0, 9]}, {"showlegend": true, "mode": "lines", "xaxis": "x", "colorbar": {"y": 0.5, "title": {"text": ""}, "len": 0.9803149606299212, "x": 0.9934383202099737}, "name": "y3", "yaxis": "y", "legendgroup": "y3", "line": {"color": "rgba(0, 0, 0, 1)", "shape": "linear", "dash": "solid", "width": 1}, "y": [0, 9], "type": "scatter", "x": [1, 1]}, {"showlegend": true, "mode": "lines", "xaxis": "x", "colorbar": {"y": 0.5, "title": {"text": ""}, "len": 0.9803149606299212, "x": 0.9934383202099737}, "name": "y4", "yaxis": "y", "legendgroup": "y4", "line": {"color": "rgba(0, 0, 0, 1)", "shape": "linear", "dash": "solid", "width": 1}, "y": [1, 1], "type": "scatter", "x": [0, 9]}, {"showlegend": true, "mode": "lines", "xaxis": "x", "colorbar": {"y": 0.5, "title": {"text": ""}, "len": 0.9803149606299212, "x": 0.9934383202099737}, "name": "y5", "yaxis": "y", "legendgroup": "y5", "line": {"color": "rgba(0, 0, 0, 1)", "shape": "linear", "dash": "solid", "width": 1}, "y": [0, 9], "type": "scatter", "x": [2, 2]}, {"showlegend": true, "mode": "lines", "xaxis": "x", "colorbar": {"y": 0.5, "title": {"text": ""}, "len": 0.9803149606299212, "x": 0.9934383202099737}, "name": "y6", "yaxis": "y", "legendgroup": "y6", "line": {"color": "rgba(0, 0, 0, 1)", "shape": "linear", "dash": "solid", "width": 1}, "y": [2, 2], "type": "scatter", "x": [0, 9]}, {"showlegend": true, "mode": "lines", "xaxis": "x", "colorbar": {"y": 0.5, "title": {"text": ""}, "len": 0.9803149606299212, "x": 0.9934383202099737}, "name": "y7", "yaxis": "y", "legendgroup": "y7", "line": {"color": "rgba(0, 0, 0, 1)", "shape": "linear", "dash": "solid", "width": 2}, "y": [0, 9], "type": "scatter", "x": [3, 3]}, {"showlegend": true, "mode": "lines", "xaxis": "x", "colorbar": {"y": 0.5, "title": {"text": ""}, "len": 0.9803149606299212, "x": 0.9934383202099737}, "name": "y8", "yaxis": "y", "legendgroup": "y8", "line": {"color": "rgba(0, 0, 0, 1)", "shape": "linear", "dash": "solid", "width": 2}, "y": [3, 3], "type": "scatter", "x": [0, 9]}, {"showlegend": true, "mode": "lines", "xaxis": "x", "colorbar": {"y": 0.5, "title": {"text": ""}, "len": 0.9803149606299212, "x": 0.9934383202099737}, "name": "y9", "yaxis": "y", "legendgroup": "y9", "line": {"color": "rgba(0, 0, 0, 1)", "shape": "linear", "dash": "solid", "width": 1}, "y": [0, 9], "type": "scatter", "x": [4, 4]}, {"showlegend": true, "mode": "lines", "xaxis": "x", "colorbar": {"y": 0.5, "title": {"text": ""}, "len": 0.9803149606299212, "x": 0.9934383202099737}, "name": "y10", "yaxis": "y", "legendgroup": "y10", "line": {"color": "rgba(0, 0, 0, 1)", "shape": "linear", "dash": "solid", "width": 1}, "y": [4, 4], "type": "scatter", "x": [0, 9]}, {"showlegend": true, "mode": "lines", "xaxis": "x", "colorbar": {"y": 0.5, "title": {"text": ""}, "len": 0.9803149606299212, "x": 0.9934383202099737}, "name": "y11", "yaxis": "y", "legendgroup": "y11", "line": {"color": "rgba(0, 0, 0, 1)", "shape": "linear", "dash": "solid", "width": 1}, "y": [0, 9], "type": "scatter", "x": [5, 5]}, {"showlegend": true, "mode": "lines", "xaxis": "x", "colorbar": {"y": 0.5, "title": {"text": ""}, "len": 0.9803149606299212, "x": 0.9934383202099737}, "name": "y12", "yaxis": "y", "legendgroup": "y12", "line": {"color": "rgba(0, 0, 0, 1)", "shape": "linear", "dash": "solid", "width": 1}, "y": [5, 5], "type": "scatter", "x": [0, 9]}, {"showlegend": true, "mode": "lines", "xaxis": "x", "colorbar": {"y": 0.5, "title": {"text": ""}, "len": 0.9803149606299212, "x": 0.9934383202099737}, "name": "y13", "yaxis": "y", "legendgroup": "y13", "line": {"color": "rgba(0, 0, 0, 1)", "shape": "linear", "dash": "solid", "width": 2}, "y": [0, 9], "type": "scatter", "x": [6, 6]}, {"showlegend": true, "mode": "lines", "xaxis": "x", "colorbar": {"y": 0.5, "title": {"text": ""}, "len": 0.9803149606299212, "x": 0.9934383202099737}, "name": "y14", "yaxis": "y", "legendgroup": "y14", "line": {"color": "rgba(0, 0, 0, 1)", "shape": "linear", "dash": "solid", "width": 2}, "y": [6, 6], "type": "scatter", "x": [0, 9]}, {"showlegend": true, "mode": "lines", "xaxis": "x", "colorbar": {"y": 0.5, "title": {"text": ""}, "len": 0.9803149606299212, "x": 0.9934383202099737}, "name": "y15", "yaxis": "y", "legendgroup": "y15", "line": {"color": "rgba(0, 0, 0, 1)", "shape": "linear", "dash": "solid", "width": 1}, "y": [0, 9], "type": "scatter", "x": [7, 7]}, {"showlegend": true, "mode": "lines", "xaxis": "x", "colorbar": {"y": 0.5, "title": {"text": ""}, "len": 0.9803149606299212, "x": 0.9934383202099737}, "name": "y16", "yaxis": "y", "legendgroup": "y16", "line": {"color": "rgba(0, 0, 0, 1)", "shape": "linear", "dash": "solid", "width": 1}, "y": [7, 7], "type": "scatter", "x": [0, 9]}, {"showlegend": true, "mode": "lines", "xaxis": "x", "colorbar": {"y": 0.5, "title": {"text": ""}, "len": 0.9803149606299212, "x": 0.9934383202099737}, "name": "y17", "yaxis": "y", "legendgroup": "y17", "line": {"color": "rgba(0, 0, 0, 1)", "shape": "linear", "dash": "solid", "width": 1}, "y": [0, 9], "type": "scatter", "x": [8, 8]}, {"showlegend": true, "mode": "lines", "xaxis": "x", "colorbar": {"y": 0.5, "title": {"text": ""}, "len": 0.9803149606299212, "x": 0.9934383202099737}, "name": "y18", "yaxis": "y", "legendgroup": "y18", "line": {"color": "rgba(0, 0, 0, 1)", "shape": "linear", "dash": "solid", "width": 1}, "y": [8, 8], "type": "scatter", "x": [0, 9]}, {"showlegend": true, "mode": "lines", "xaxis": "x", "colorbar": {"y": 0.5, "title": {"text": ""}, "len": 0.9803149606299212, "x": 0.9934383202099737}, "name": "y19", "yaxis": "y", "legendgroup": "y19", "line": {"color": "rgba(0, 0, 0, 1)", "shape": "linear", "dash": "solid", "width": 2}, "y": [0, 9], "type": "scatter", "x": [9, 9]}, {"showlegend": true, "mode": "lines", "xaxis": "x", "colorbar": {"y": 0.5, "title": {"text": ""}, "len": 0.9803149606299212, "x": 0.9934383202099737}, "name": "y20", "yaxis": "y", "legendgroup": "y20", "line": {"color": "rgba(0, 0, 0, 1)", "shape": "linear", "dash": "solid", "width": 2}, "y": [9, 9], "type": "scatter", "x": [0, 9]}], "config": {"showlegend": false, "xaxis": {"tickangle": 0, "showline": false, "gridcolor": "rgba(0, 0, 0, 0.1)", "showticklabels": false, "gridwidth": 0.5, "visible": true, "ticks": "inside", "range": [-2.7028915662650617, 11.702891566265059], "domain": [0.006561679790026247, 0.9934383202099737], "linecolor": "rgba(0, 0, 0, 1)", "showgrid": false, "zeroline": false, "type": "linear", "title": {"text": ""}, "zerolinecolor": "rgba(0, 0, 0, 1)", "mirror": false, "anchor": "y"}, "paper_bgcolor": "rgba(255, 255, 255, 1.000)", "annotations": [{"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 8.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "5", "xref": "x", "x": 0.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 8.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "6", "xref": "x", "x": 1.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 8.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "9", "xref": "x", "x": 2.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 8.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "3", "xref": "x", "x": 3.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 8.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "7", "xref": "x", "x": 4.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 8.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "1", "xref": "x", "x": 5.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 8.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "4", "xref": "x", "x": 6.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 8.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "8", "xref": "x", "x": 7.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 8.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "2", "xref": "x", "x": 8.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 7.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "8", "xref": "x", "x": 0.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 7.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "1", "xref": "x", "x": 1.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 7.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "3", "xref": "x", "x": 2.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 7.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "9", "xref": "x", "x": 3.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 7.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "2", "xref": "x", "x": 4.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 7.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "4", "xref": "x", "x": 5.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 7.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "7", "xref": "x", "x": 6.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 7.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "5", "xref": "x", "x": 7.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 7.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "6", "xref": "x", "x": 8.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 6.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "2", "xref": "x", "x": 0.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 6.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "7", "xref": "x", "x": 1.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 6.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "4", "xref": "x", "x": 2.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 6.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "5", "xref": "x", "x": 3.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 6.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "8", "xref": "x", "x": 4.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 6.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "6", "xref": "x", "x": 5.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 6.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "3", "xref": "x", "x": 6.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 6.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "1", "xref": "x", "x": 7.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 6.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "9", "xref": "x", "x": 8.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 5.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "4", "xref": "x", "x": 0.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 5.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "2", "xref": "x", "x": 1.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 5.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "8", "xref": "x", "x": 2.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 5.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "6", "xref": "x", "x": 3.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 5.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "5", "xref": "x", "x": 4.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 5.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "3", "xref": "x", "x": 5.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 5.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "9", "xref": "x", "x": 6.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 5.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "7", "xref": "x", "x": 7.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 5.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "1", "xref": "x", "x": 8.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 4.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "1", "xref": "x", "x": 0.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 4.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "9", "xref": "x", "x": 1.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 4.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "7", "xref": "x", "x": 2.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 4.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "2", "xref": "x", "x": 3.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 4.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "4", "xref": "x", "x": 4.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 4.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "8", "xref": "x", "x": 5.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 4.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "6", "xref": "x", "x": 6.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 4.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "3", "xref": "x", "x": 7.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 4.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "5", "xref": "x", "x": 8.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 3.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "3", "xref": "x", "x": 0.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 3.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "5", "xref": "x", "x": 1.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 3.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "6", "xref": "x", "x": 2.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 3.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "7", "xref": "x", "x": 3.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 3.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "1", "xref": "x", "x": 4.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 3.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "9", "xref": "x", "x": 5.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 3.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "8", "xref": "x", "x": 6.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 3.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "2", "xref": "x", "x": 7.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 3.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "4", "xref": "x", "x": 8.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 2.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "9", "xref": "x", "x": 0.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 2.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "8", "xref": "x", "x": 1.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 2.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "5", "xref": "x", "x": 2.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 2.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "1", "xref": "x", "x": 3.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 2.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "6", "xref": "x", "x": 4.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 2.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "7", "xref": "x", "x": 5.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 2.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "2", "xref": "x", "x": 6.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 2.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "4", "xref": "x", "x": 7.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 2.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "3", "xref": "x", "x": 8.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 1.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "6", "xref": "x", "x": 0.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 1.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "4", "xref": "x", "x": 1.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 1.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "1", "xref": "x", "x": 2.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 1.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "8", "xref": "x", "x": 3.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 1.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "3", "xref": "x", "x": 4.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 1.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "2", "xref": "x", "x": 5.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 1.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "5", "xref": "x", "x": 6.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 1.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "9", "xref": "x", "x": 7.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 1.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "7", "xref": "x", "x": 8.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 0.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "7", "xref": "x", "x": 0.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 0.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "3", "xref": "x", "x": 1.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 0.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "2", "xref": "x", "x": 2.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 0.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "4", "xref": "x", "x": 3.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 0.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "9", "xref": "x", "x": 4.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 0.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "5", "xref": "x", "x": 5.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 0.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "1", "xref": "x", "x": 6.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 0.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "6", "xref": "x", "x": 7.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 0.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "8", "xref": "x", "x": 8.5}], "height": 400, "margin": {"l": 0, "b": 20, "r": 0, "t": 20}, "plot_bgcolor": "rgba(255, 255, 255, 1.000)", "yaxis": {"tickangle": 0, "showline": false, "gridcolor": "rgba(0, 0, 0, 0.1)", "showticklabels": false, "gridwidth": 0.5, "visible": true, "ticks": "inside", "range": [-0.27000000000000046, 9.27], "domain": [0.009842519685039424, 0.9901574803149606], "linecolor": "rgba(0, 0, 0, 1)", "showgrid": false, "zeroline": false, "type": "linear", "title": {"text": ""}, "zerolinecolor": "rgba(0, 0, 0, 1)", "mirror": false, "anchor": "x"}, "width": 679.5}}
{"id": "2ace729d-051e-4aac-8183-0ceccb0a3976", "data": [{"showlegend": true, "mode": "lines", "xaxis": "x", "colorbar": {"y": 0.5, "title": {"text": ""}, "len": 0.9803149606299212, "x": 0.9934383202099737}, "name": "y1", "yaxis": "y", "legendgroup": "y1", "line": {"color": "rgba(0, 0, 0, 1)", "shape": "linear", "dash": "solid", "width": 2}, "y": [0, 9], "type": "scatter", "x": [0, 0]}, {"showlegend": true, "mode": "lines", "xaxis": "x", "colorbar": {"y": 0.5, "title": {"text": ""}, "len": 0.9803149606299212, "x": 0.9934383202099737}, "name": "y2", "yaxis": "y", "legendgroup": "y2", "line": {"color": "rgba(0, 0, 0, 1)", "shape": "linear", "dash": "solid", "width": 2}, "y": [0, 0], "type": "scatter", "x": [0, 9]}, {"showlegend": true, "mode": "lines", "xaxis": "x", "colorbar": {"y": 0.5, "title": {"text": ""}, "len": 0.9803149606299212, "x": 0.9934383202099737}, "name": "y3", "yaxis": "y", "legendgroup": "y3", "line": {"color": "rgba(0, 0, 0, 1)", "shape": "linear", "dash": "solid", "width": 1}, "y": [0, 9], "type": "scatter", "x": [1, 1]}, {"showlegend": true, "mode": "lines", "xaxis": "x", "colorbar": {"y": 0.5, "title": {"text": ""}, "len": 0.9803149606299212, "x": 0.9934383202099737}, "name": "y4", "yaxis": "y", "legendgroup": "y4", "line": {"color": "rgba(0, 0, 0, 1)", "shape": "linear", "dash": "solid", "width": 1}, "y": [1, 1], "type": "scatter", "x": [0, 9]}, {"showlegend": true, "mode": "lines", "xaxis": "x", "colorbar": {"y": 0.5, "title": {"text": ""}, "len": 0.9803149606299212, "x": 0.9934383202099737}, "name": "y5", "yaxis": "y", "legendgroup": "y5", "line": {"color": "rgba(0, 0, 0, 1)", "shape": "linear", "dash": "solid", "width": 1}, "y": [0, 9], "type": "scatter", "x": [2, 2]}, {"showlegend": true, "mode": "lines", "xaxis": "x", "colorbar": {"y": 0.5, "title": {"text": ""}, "len": 0.9803149606299212, "x": 0.9934383202099737}, "name": "y6", "yaxis": "y", "legendgroup": "y6", "line": {"color": "rgba(0, 0, 0, 1)", "shape": "linear", "dash": "solid", "width": 1}, "y": [2, 2], "type": "scatter", "x": [0, 9]}, {"showlegend": true, "mode": "lines", "xaxis": "x", "colorbar": {"y": 0.5, "title": {"text": ""}, "len": 0.9803149606299212, "x": 0.9934383202099737}, "name": "y7", "yaxis": "y", "legendgroup": "y7", "line": {"color": "rgba(0, 0, 0, 1)", "shape": "linear", "dash": "solid", "width": 2}, "y": [0, 9], "type": "scatter", "x": [3, 3]}, {"showlegend": true, "mode": "lines", "xaxis": "x", "colorbar": {"y": 0.5, "title": {"text": ""}, "len": 0.9803149606299212, "x": 0.9934383202099737}, "name": "y8", "yaxis": "y", "legendgroup": "y8", "line": {"color": "rgba(0, 0, 0, 1)", "shape": "linear", "dash": "solid", "width": 2}, "y": [3, 3], "type": "scatter", "x": [0, 9]}, {"showlegend": true, "mode": "lines", "xaxis": "x", "colorbar": {"y": 0.5, "title": {"text": ""}, "len": 0.9803149606299212, "x": 0.9934383202099737}, "name": "y9", "yaxis": "y", "legendgroup": "y9", "line": {"color": "rgba(0, 0, 0, 1)", "shape": "linear", "dash": "solid", "width": 1}, "y": [0, 9], "type": "scatter", "x": [4, 4]}, {"showlegend": true, "mode": "lines", "xaxis": "x", "colorbar": {"y": 0.5, "title": {"text": ""}, "len": 0.9803149606299212, "x": 0.9934383202099737}, "name": "y10", "yaxis": "y", "legendgroup": "y10", "line": {"color": "rgba(0, 0, 0, 1)", "shape": "linear", "dash": "solid", "width": 1}, "y": [4, 4], "type": "scatter", "x": [0, 9]}, {"showlegend": true, "mode": "lines", "xaxis": "x", "colorbar": {"y": 0.5, "title": {"text": ""}, "len": 0.9803149606299212, "x": 0.9934383202099737}, "name": "y11", "yaxis": "y", "legendgroup": "y11", "line": {"color": "rgba(0, 0, 0, 1)", "shape": "linear", "dash": "solid", "width": 1}, "y": [0, 9], "type": "scatter", "x": [5, 5]}, {"showlegend": true, "mode": "lines", "xaxis": "x", "colorbar": {"y": 0.5, "title": {"text": ""}, "len": 0.9803149606299212, "x": 0.9934383202099737}, "name": "y12", "yaxis": "y", "legendgroup": "y12", "line": {"color": "rgba(0, 0, 0, 1)", "shape": "linear", "dash": "solid", "width": 1}, "y": [5, 5], "type": "scatter", "x": [0, 9]}, {"showlegend": true, "mode": "lines", "xaxis": "x", "colorbar": {"y": 0.5, "title": {"text": ""}, "len": 0.9803149606299212, "x": 0.9934383202099737}, "name": "y13", "yaxis": "y", "legendgroup": "y13", "line": {"color": "rgba(0, 0, 0, 1)", "shape": "linear", "dash": "solid", "width": 2}, "y": [0, 9], "type": "scatter", "x": [6, 6]}, {"showlegend": true, "mode": "lines", "xaxis": "x", "colorbar": {"y": 0.5, "title": {"text": ""}, "len": 0.9803149606299212, "x": 0.9934383202099737}, "name": "y14", "yaxis": "y", "legendgroup": "y14", "line": {"color": "rgba(0, 0, 0, 1)", "shape": "linear", "dash": "solid", "width": 2}, "y": [6, 6], "type": "scatter", "x": [0, 9]}, {"showlegend": true, "mode": "lines", "xaxis": "x", "colorbar": {"y": 0.5, "title": {"text": ""}, "len": 0.9803149606299212, "x": 0.9934383202099737}, "name": "y15", "yaxis": "y", "legendgroup": "y15", "line": {"color": "rgba(0, 0, 0, 1)", "shape": "linear", "dash": "solid", "width": 1}, "y": [0, 9], "type": "scatter", "x": [7, 7]}, {"showlegend": true, "mode": "lines", "xaxis": "x", "colorbar": {"y": 0.5, "title": {"text": ""}, "len": 0.9803149606299212, "x": 0.9934383202099737}, "name": "y16", "yaxis": "y", "legendgroup": "y16", "line": {"color": "rgba(0, 0, 0, 1)", "shape": "linear", "dash": "solid", "width": 1}, "y": [7, 7], "type": "scatter", "x": [0, 9]}, {"showlegend": true, "mode": "lines", "xaxis": "x", "colorbar": {"y": 0.5, "title": {"text": ""}, "len": 0.9803149606299212, "x": 0.9934383202099737}, "name": "y17", "yaxis": "y", "legendgroup": "y17", "line": {"color": "rgba(0, 0, 0, 1)", "shape": "linear", "dash": "solid", "width": 1}, "y": [0, 9], "type": "scatter", "x": [8, 8]}, {"showlegend": true, "mode": "lines", "xaxis": "x", "colorbar": {"y": 0.5, "title": {"text": ""}, "len": 0.9803149606299212, "x": 0.9934383202099737}, "name": "y18", "yaxis": "y", "legendgroup": "y18", "line": {"color": "rgba(0, 0, 0, 1)", "shape": "linear", "dash": "solid", "width": 1}, "y": [8, 8], "type": "scatter", "x": [0, 9]}, {"showlegend": true, "mode": "lines", "xaxis": "x", "colorbar": {"y": 0.5, "title": {"text": ""}, "len": 0.9803149606299212, "x": 0.9934383202099737}, "name": "y19", "yaxis": "y", "legendgroup": "y19", "line": {"color": "rgba(0, 0, 0, 1)", "shape": "linear", "dash": "solid", "width": 2}, "y": [0, 9], "type": "scatter", "x": [9, 9]}, {"showlegend": true, "mode": "lines", "xaxis": "x", "colorbar": {"y": 0.5, "title": {"text": ""}, "len": 0.9803149606299212, "x": 0.9934383202099737}, "name": "y20", "yaxis": "y", "legendgroup": "y20", "line": {"color": "rgba(0, 0, 0, 1)", "shape": "linear", "dash": "solid", "width": 2}, "y": [9, 9], "type": "scatter", "x": [0, 9]}], "config": {"showlegend": false, "xaxis": {"tickangle": 0, "showline": false, "gridcolor": "rgba(0, 0, 0, 0.1)", "showticklabels": false, "gridwidth": 0.5, "visible": true, "ticks": "inside", "range": [-2.7028915662650617, 11.702891566265059], "domain": [0.006561679790026247, 0.9934383202099737], "linecolor": "rgba(0, 0, 0, 1)", "showgrid": false, "zeroline": false, "type": "linear", "title": {"text": ""}, "zerolinecolor": "rgba(0, 0, 0, 1)", "mirror": false, "anchor": "y"}, "paper_bgcolor": "rgba(255, 255, 255, 1.000)", "annotations": [{"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 8.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "5", "xref": "x", "x": 0.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 8.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "6", "xref": "x", "x": 1.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 8.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "9", "xref": "x", "x": 2.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 8.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "3", "xref": "x", "x": 3.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 8.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "7", "xref": "x", "x": 4.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 8.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "1", "xref": "x", "x": 5.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 8.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "4", "xref": "x", "x": 6.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 8.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "8", "xref": "x", "x": 7.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 8.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "2", "xref": "x", "x": 8.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 7.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "8", "xref": "x", "x": 0.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 7.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "1", "xref": "x", "x": 1.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 7.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "3", "xref": "x", "x": 2.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 7.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "9", "xref": "x", "x": 3.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 7.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "2", "xref": "x", "x": 4.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 7.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "4", "xref": "x", "x": 5.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 7.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "7", "xref": "x", "x": 6.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 7.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "5", "xref": "x", "x": 7.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 7.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "6", "xref": "x", "x": 8.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 6.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "2", "xref": "x", "x": 0.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 6.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "7", "xref": "x", "x": 1.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 6.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "4", "xref": "x", "x": 2.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 6.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "5", "xref": "x", "x": 3.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 6.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "8", "xref": "x", "x": 4.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 6.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "6", "xref": "x", "x": 5.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 6.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "3", "xref": "x", "x": 6.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 6.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "1", "xref": "x", "x": 7.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 6.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "9", "xref": "x", "x": 8.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 5.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "4", "xref": "x", "x": 0.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 5.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "2", "xref": "x", "x": 1.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 5.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "8", "xref": "x", "x": 2.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 5.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "6", "xref": "x", "x": 3.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 5.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "5", "xref": "x", "x": 4.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 5.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "3", "xref": "x", "x": 5.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 5.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "9", "xref": "x", "x": 6.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 5.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "7", "xref": "x", "x": 7.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 5.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "1", "xref": "x", "x": 8.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 4.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "1", "xref": "x", "x": 0.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 4.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "9", "xref": "x", "x": 1.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 4.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "7", "xref": "x", "x": 2.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 4.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "2", "xref": "x", "x": 3.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 4.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "4", "xref": "x", "x": 4.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 4.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "8", "xref": "x", "x": 5.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 4.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "6", "xref": "x", "x": 6.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 4.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "3", "xref": "x", "x": 7.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 4.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "5", "xref": "x", "x": 8.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 3.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "3", "xref": "x", "x": 0.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 3.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "5", "xref": "x", "x": 1.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 3.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "6", "xref": "x", "x": 2.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 3.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "7", "xref": "x", "x": 3.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 3.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "1", "xref": "x", "x": 4.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 3.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "9", "xref": "x", "x": 5.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 3.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "8", "xref": "x", "x": 6.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 3.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "2", "xref": "x", "x": 7.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 3.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "4", "xref": "x", "x": 8.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 2.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "9", "xref": "x", "x": 0.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 2.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "8", "xref": "x", "x": 1.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 2.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "5", "xref": "x", "x": 2.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 2.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "1", "xref": "x", "x": 3.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 2.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "6", "xref": "x", "x": 4.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 2.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "7", "xref": "x", "x": 5.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 2.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "2", "xref": "x", "x": 6.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 2.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "4", "xref": "x", "x": 7.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 2.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "3", "xref": "x", "x": 8.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 1.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "6", "xref": "x", "x": 0.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 1.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "4", "xref": "x", "x": 1.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 1.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "1", "xref": "x", "x": 2.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 1.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "8", "xref": "x", "x": 3.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 1.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "3", "xref": "x", "x": 4.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 1.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "2", "xref": "x", "x": 5.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 1.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "5", "xref": "x", "x": 6.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 1.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "9", "xref": "x", "x": 7.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 1.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "7", "xref": "x", "x": 8.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 0.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "7", "xref": "x", "x": 0.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 0.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "3", "xref": "x", "x": 1.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 0.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "2", "xref": "x", "x": 2.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 0.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "4", "xref": "x", "x": 3.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 0.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "9", "xref": "x", "x": 4.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 0.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "5", "xref": "x", "x": 5.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 0.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "1", "xref": "x", "x": 6.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 0.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "6", "xref": "x", "x": 7.5}, {"yanchor": "middle", "xanchor": "center", "rotation": 0, "y": 0.5, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "y", "showarrow": false, "text": "8", "xref": "x", "x": 8.5}], "height": 400, "margin": {"l": 0, "b": 20, "r": 0, "t": 20}, "plot_bgcolor": "rgba(255, 255, 255, 1.000)", "yaxis": {"tickangle": 0, "showline": false, "gridcolor": "rgba(0, 0, 0, 0.1)", "showticklabels": false, "gridwidth": 0.5, "visible": true, "ticks": "inside", "range": [-0.27000000000000046, 9.27], "domain": [0.009842519685039424, 0.9901574803149606], "linecolor": "rgba(0, 0, 0, 1)", "showgrid": false, "zeroline": false, "type": "linear", "title": {"text": ""}, "zerolinecolor": "rgba(0, 0, 0, 1)", "mirror": false, "anchor": "x"}, "width": 679.5}}