gpt4 book ai didi

constraints - GEKKO - 矩阵形式的优化

转载 作者:行者123 更新时间:2023-12-03 19:12:24 25 4
gpt4 key购买 nike

我正在尝试解决一个优化问题,我需要使用 2D 矩阵来指定问题和约束。我一直在使用 SCIPY,其中一维数组是要求。我想检查 GEKKO 是否允许使用 2D 矩阵指定目标函数、边界和约束。

我在此处的帖子中提供了问题的详细信息和可重现版本:

SCIPY - building constraints without listing each variable separately

谢谢
C

最佳答案

您可以使用 m.Array函数在 gekko .我不建议您使用 np.triu()使用 Gekko 数组,因为消除的变量仍将求解,但可能会从结果中隐藏。这是一个解决方案:

import numpy as np
import scipy.optimize as opt
from gekko import GEKKO

p= np.array([4, 5, 6.65, 12]) #p = prices
pmx = np.triu(p - p[:, np.newaxis]) #pmx = price matrix, upper triangular

m = GEKKO(remote=False)
q = m.Array(m.Var,(4,4),lb=0,ub=10)
# only upper triangular can change
for i in range(4):
for j in range(4):
if j<=i:
q[i,j].upper=0 # set upper bound = 0

def profit(q):
profit = np.sum(q.flatten() * pmx.flatten())
return profit

for i in range(4):
m.Equation(np.sum(q[i,:])<=10)
m.Equation(np.sum(q[:,i])<=8)
m.Maximize(profit(q))

m.solve()

print(q)

这给出了解决方案:
[[[0.0] [2.5432017412] [3.7228765674] [3.7339217013]]
[[0.0] [0.0] [4.2771234426] [4.2660783187]]
[[0.0] [0.0] [0.0] [0.0]]
[[0.0] [0.0] [0.0] [0.0]]]

关于constraints - GEKKO - 矩阵形式的优化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61646792/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com