Я хочу определить функцию, которая ищет два параметра, скажем, A и B, чтобы их произведение было равно или больше заданного значения, с условием, что A и B кратны 5. Кроме того, я бы как это отношение A / B равно или больше, чем данное отношение ввода.
Вот что у меня есть:
Функция цели: product(x)
Ограничения: product(x) => required_product; A % 5 = 0; B % 5 = 0; A / B => input_ratio
def pair_designer(required_product, input_ratio):
x0 = np.asarray([5, 5])
cons = [{'type': 'eq', 'fun': lambda x: x[0] % 5},
{'type': 'eq', 'fun': lambda x: x[1] % 5},
{'type': 'ineq', 'fun': lambda x: product(x) - required_product},
{'type': 'ineq', 'fun': lambda x: (np.max(x) / np.min(x)) - input_ratio},
]
v = minimize(product, x0=x0, method='SLSQP', constraints=cons, options={'ftol': 1e-10})
return v.x
def product(x):
return x[0] * x[1]
print(pair_designer(1000, 2))
Код работает для первого ограничения, но полностью завершается ошибкой при добавлении второго и третьего ограничений. Можете ли вы помочь мне решить эту проблему? Заранее спасибо.