Библиотеки 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, однако вам придется использовать вспомогательные переменные.

Другие вопросы по тегам