Нахождение решения системы неравенств в Python без функции оптимизации - PullRequest
3 голосов
/ 08 марта 2020

У меня есть большая система линейных неравенств, которую я пытаюсь решить в python, в идеале с неотрицательными целыми числами.

Например: enter image description here

У меня есть матрица A размера (1000 * 700) и матрица b размера (700), где каждая строка в системе установить так, чтобы A *C <= b. Я пытаюсь решить для C. Несколько онлайн-решений включают модуль оптимизации Scipy, однако для этого требуется функция оптимизации. Попытка поставить все 0 для коэффициентов в функции оптимизации и ввести ограничения как систему неравенств дает мне решение, которое является неправильным. Я записал часть своего кода ниже. </p>

    from scipy.optimize import linprog
    coefficients_min_y = [0] * len(A[0])
    res = linprog(coefficients_min_y, A_ub=A, b_ub=b, bounds=(0, None))
    if res.success:
        coefficients = res.x
    else:
        print("Solution is infeasible")
    matrixMult = np.dot(A, coefficients)

Учитывая, что linprog выводит выполнимое решение, я использую matrixMult, чтобы проверить, удовлетворяет ли решение условиям. Однако это не решает правильно. Это из-за функции оптимизации или я что-то не так делаю.

...