Почему ограниченная минимизация не удается в PythonPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Почему ограниченная минимизация не удается в Python

Сообщение Anonymous »

Я пытаюсь численно решить некоторый вопрос о разработке механизма, используя следующий код. Однако выход не является оптимальным (просто оставайтесь на моем первоначальном предположении). Как заставить это работать?import numpy as np
from scipy.optimize import minimize

p0=0.3
r1=0.4
r2=0.8

p1s=r1/(r1+1)
p2s=r2/(r2+1)

q1=(r1+r1*r2)/(r2+r1*r2)

q2=r1/r2

q=(q1+q2)/2

def v_1(k,p0):
if p0>p1s and k>p0:
return r1-p0*r1/k
elif p0p1s:
return p0+p0*r1-p0*r1/k
return 0

def v_2(k,p0):
if p0>p2s and k>p0:
return r2-p0*r2/k
elif p0p2s:
return p0+p0*r2-p0*r2/k
return 0

def V(p):
if pp2s:
return q*r2*(1-p)
A=r1-r1/(r2-r1)*(p+p*r2-r1)
return q*p+(1-q)*A

def objective(x):
k1,k2,p1,p2 = x
return -q*(p2+V(k2))+(1-q)*(p1+V(k1)) # Convert to minimization

def IR1(x):
k1,k2,p1,p2 = x
return v_1(k1,p0)-p1

def IR2(x):
k1,k2,p1,p2 = x
return v_2(k2,p0)-p2

def IC1(x):
k1,k2,p1,p2 = x
return v_1(k1,p0)-p1-v_1(k2,p0)-p2

def IC2(x):
k1,k2,p1,p2 = x
return v_2(k2,p0)-p2-v_2(k1,p0)-p1

constraints = [
{'type': 'ineq', 'fun': lambda x: IR1(x)},
{'type': 'ineq', 'fun': lambda x: IR2(x)},
{'type': 'ineq', 'fun': lambda x: IC1(x)},
{'type': 'ineq', 'fun': lambda x: IC2(x)}
]

# Bounds for x1, x2
bounds = [(p0, 1), (p0, 1), (0,p0), (0,p0)] #k1,k2>=p0,p0>=p1,p2>=0

# Initial guess
x0 = [p0, 1, 0,p0 ]

# Solve the problem
result = minimize(objective, x0, bounds=bounds, constraints=constraints,method='SLSQP')

# Print results
if result.success:
print("Optimal solution found:")
print(f"k1 = {result.x[0]:.4f}, k2 = {result.x[1]:.4f}")
print(f"p1 = {result.x[2]:.4f}, p2 = {result.x[3]:.4f}")
print(f"Maximum function value: {-result.fun:.4f}")
else:
print("Optimization failed:", result.message)**strong text**


Подробнее здесь: https://stackoverflow.com/questions/794 ... -in-python
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»