import numpy
from numpy import asarray
Initial = numpy.asarray [2.0, 4.0, 5.0, 3.0, 5.0, 6.0] # Initial values to start with
bounds = [(1, 5000), (1, 6000), (2, 100000), (1, 50000), (1.0, 5000), (2, 1000000)]
# actual passed bounds
b1 = lambda x: numpy.asarray([1.4*x[0] - x[0]])
b2 = lambda x: numpy.asarray([1.4*x[1] - x[1]])
b3 = lambda x: numpy.asarray([x[2] - x[3]])
constraints = numpy.asarray([b1, b2, b3])
opt= optimize.fmin_slsqp(func,Initial,ieqcons=constraints,bounds=bounds, full_output=True,iter=200,iprint=2, acc=0.01)
Проблема: Я хочу передать в неравенство ограничений. Считают, что у меня есть 6 параметровИспользование лямбда для функции ограничения
[ a, b, c, d, e, f]
в Initial
ценности, и мои ограничения:
a<=e<=1.4*a ('e' varies from a to 1.4*a)
b<=f<=1.4*b ('f' varies from b to 1.4*b)
c>d ('c' must always be greater than d)
Но это не работает должным образом. Я не знаю, что это за ошибка. Есть ли лучший способ передать мои ограничения как функцию? Пожалуйста, помогите мне.
Я не знаю NumPy, но а и Ь отрицательные? в противном случае я не вижу, как любые значения e и f могут удовлетворять 1.4 * a <= e <= a и 1.4 * b <= f <= b. – hughdbrown
Это поможет, если вы четко укажете, что именно вы делаете, что вы хотите, и что на самом деле происходит, вместо простого вставки фрагмента кода. – MAK
@pear, я попытался ответить на ваш вопрос, но, как сказал hughdbrown, ограничения в вашем коде выше не работают для положительных чисел. Может быть, знаки отступают на первых двух? –