Python GEKKO:非线性优化的优化性能

问题描述 投票:0回答:1

我正在使用GEKKO‍解决非线性编程问题。我的目标是将GEKKO‍的性能与其他性能进行比较,因此,我想确保从GEKKO‍的性能中获得最大的收益。

n个二进制变量,每个变量从区间[[[0,1]中分配一个权重。每个约束都是线性的。目标函数是非线性的:它是非零变量的权重的乘积,目标是使乘积最大化。

我首先将目标函数指定为

m.Obj(-np.prod([1 - variables[i] + weights[i] * variables[i] for i in range(len(variables))]))

但是我会碰到APM model error: string > 15000  characters。所以我使用if3函数切换为辅助变量,如[]

aux_variables = [m.if3(variables[i], weights[i], 1) for i in range(len(variables))] m.Obj(-np.prod(aux_variables))

我要手动设置的唯一全局参数在下面的代码中。

# initialize model m = GEKKO(remote=False) # set global variables m.options.SOLVER = 1 # APOPT solver # "APOPT is an MINLP solver" # "APOPT is also the only solver that handles Mixed Integer problems." m.options.IMODE = 3 # steady state optimization m.solver_options = ['minlp_maximum_iterations 500', \ # minlp iterations with integer solution 'minlp_max_iter_with_int_sol 10', \ # treat minlp as nlp 'minlp_as_nlp 0', \ # nlp sub-problem max iterations 'nlp_maximum_iterations 50', \ # 1 = depth first, 2 = breadth first 'minlp_branch_method 1', \ # maximum deviation from whole number 'minlp_integer_tol 0.05', \ # covergence tolerance 'minlp_gap_tol 0.01'] # initialize variables variables = m.Array(m.Var, (number_of_vars), lb=0, ub=1, integer=True) # set initial values for var in variables: var.value = 1

问题:

还有什么,如果有的话,就全局参数和目标函数的制定而言,我可以针对该特定问题优化GEKKO‍的性能吗?

同时,我希望GEKKO‍产生不错的结果。

我正在使用GEKKO‍解决非线性编程问题。我的目标是将GEKKO‍性能与其他性能进行比较,因此,我想确保从GEKKO‍获得最佳效果...

python nonlinear-optimization gekko
1个回答
0
投票
© www.soinside.com 2019 - 2024. All rights reserved.