GEKKO含随机变量约束构建及tau减小致不可行问题求助
GEKKO跟踪优化问题求解求助
我尝试用GEKKO求解下述跟踪优化问题,但无法确认代码是否正确。当前出现了理论上不应有的情况:当略微减小tau值时,问题变得不可行,特此寻求协助。
这是一个状态变量依赖多个xi值的跟踪问题,优化问题公式如下:

我的实现代码如下:
from gekko import GEKKO import numpy as np from random import random import matplotlib.pyplot as plt # Initialize model m = GEKKO(remote=False) # Time points n = 10 m.time = np.linspace(0, 10, n) # parameters alpha = 0.95 m1 = 0.5 m2 = 0.3 tau = 0.5 # Number of random samples N = 10 # create the samples Xi = np.random.rand(N,n) S = [] for i in range(N): S.append(m.Param(list(Xi[i]))) # State variables x = m.Array(m.Var, N, value=5.0) # Control variable u = m.Var() # reference trajectory x_val = [5.0, 2.31, 1.45, 1.01, 0.75, 0.57, 0.45, 0.36, 0.31, 0.28] x_r = m.Param(x_val) # Equation m.Equations(5 * x[i].dt() == -x[i]**2 + u + S[i] for i in range(N)) m.Equation((1/N)*m.sum([(1 + m1 * tau) / (1 + m2 * tau * m.exp((-(x[i] - x_r[i])**2 + 10) / tau)) for i in range(N)]) <= 1 - alpha) m.Obj((1/N)*(m.sum([(x[i] - x_r[i])**2 for i in range(N)])) + u**2) # Solve the differential equation m.options.IMODE = 6 # m.options.SOLVER = 3; # 1: APOPT, 2:BPOPT, 3:IPOPT m.options.MAX_ITER = 10000 # change maximum iterations m.solve(disp=True)
我期望tau减小时目标值随之降低,但当前tau略减就导致问题不可行,恳请协助排查。
内容的提问来源于stack exchange,提问作者Ineza
相关产品推荐
相关产品推荐

