小编Ant*_*one的帖子

优化求和函数 - GEKKO

我刚刚开始学习优化,在寻找以下问题的最佳值时遇到一些问题。注意:这只是我想到的一个随机问题,没有实际应用。

问题:

其中x可以是列表 ([2,4,6]) 中的任何值,并且y介于 1 和 3 之间。

我的尝试:

from gekko import GEKKO
import numpy as np
import math

def prob(x,y,sel):
    z = np.sum(np.array(x)*np.array(sel))
    cst = 0
    i=0
    while i <= y.VALUE:
        fact = 1
        for num in range(2, i + 1): # find the factorial value
            fact *= num
        cst += (z**i)/fact
        i+=1
    return cst


m = GEKKO(remote=False)

sel = [2,4,6] # list of possible x values
x =  m.Array(m.Var, 3, **{'value':1,'lb':0,'ub':1, 'integer': True}) …
Run Code Online (Sandbox Code Playgroud)

optimization gekko

5
推荐指数
1
解决办法
1052
查看次数

计数功能评估

我刚刚完成了阅读器和记录器的教程。我想知道是否有一种方法可以计算每个学科被调用的次数。下面我在 Sellar 问题中使用全局变量来计算这个。更好的方法是什么?另外,如果问题没有解决者,建议的方式会改变吗?

import numpy as np
import time
import openmdao.api as om

tic = time.perf_counter()
dc1 = 0
dc2 = 0

class SellarDis1(om.ExplicitComponent):
    def setup(self):
        self.add_input('z', val=np.zeros(2))
        self.add_input('x', val=0.)
        self.add_input('y2', val=1.0)
        self.add_output('y1', val=1.0)
        self.declare_partials('*', '*', method='fd')

    def compute(self, inputs, outputs):
        global dc1
        dc1+=1
        z1 = inputs['z'][0]
        z2 = inputs['z'][1]
        x1 = inputs['x']
        y2 = inputs['y2']
        outputs['y1'] = z1**2 + z2 + x1 - 0.2*y2

class SellarDis2(om.ExplicitComponent):

    def setup(self):
        self.add_input('z', val=np.zeros(2))
        self.add_input('y1', val=1.0)
        self.add_output('y2', val=1.0)
        self.declare_partials('*', '*',method='fd')

    def compute(self, inputs, …
Run Code Online (Sandbox Code Playgroud)

openmdao

1
推荐指数
1
解决办法
301
查看次数

标签 统计

gekko ×1

openmdao ×1

optimization ×1