Библиотеки Python для представления расстояния между точкой и ДНФ неравенств
Зафиксируем число переменных равным 4: значит, x0, x1, x2, x3.
Я ищу конструкцию Python, которая позволяет мне:
(i) хранить в памяти дизъюнктивную нормальную формулу, где атомарными формулами являются неравенства: a0x0 + a1x1 + a2x2 + a3x3 >= a4 или равенства: a0x0 + a1x1 + a2x2 + a3x3 == a4.
(ii) Учитывая формулу не в ДНФ, у меня есть функция для преобразования ее в такую.
(iii) Учитывая точку (u1,u2,u3,u4), я могу найти установленное расстояние этой точки до формулы ДНФ.
Я знаю, что numpy позволяет мне писать атомарные формулы и вычислять их расстояние от точки, но не позволяет мне писать их соединения или дизъюнкции; и я не могу вычислить установленное расстояние от точки до ДНФ.
Я даже проверил pyeda, но там атомарные формулы должны быть булевыми переменными, а неравенства и равенства не допускаются.
Я могу переписать весь код, чтобы определить свои собственные классы для DNF и определить свою собственную функцию расстояния, но я не хочу изобретать велосипед. Какие библиотеки Python я могу использовать (и как), чтобы упростить выполнение моей задачи?
1 ответ
Мой ответ — это моя интерпретация вашей проблемы, но я признаю, что заполняю некоторые пробелы своими предположениями.
(i) может быть решена с помощью линейного программирования .
(ii) очень открытый вопрос, я его пропущу.
(iii) Если вы довольны расстоянием
sum |x[i] - u[i]|
проблема все еще может быть решена с помощью linproc, однако вам придется использовать вспомогательные переменные.