首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GEKKO -混合整数规划

GEKKO -混合整数规划
EN

Stack Overflow用户
提问于 2021-08-12 18:48:51
回答 1查看 40关注 0票数 2

我正在尝试用GEKKO解决一个混合整数问题。

代码语言:javascript
复制
p : continuous variable
I : binary indicator

举个例子,我可以找到解决这个问题的方法:

代码语言:javascript
复制
mdl.Equation(p[0][0][0] == 4)

但是,我正在寻找一种基于二进制指示符的解决方案:

代码语言:javascript
复制
mdl.Equation(p[0][0][0]* I[0][0][0] == 4)
代码语言:javascript
复制
def testGEKKO():
        import numpy as np
        from gekko import GEKKO

        t = np.linspace(1,6,6)
        m = np.linspace(1,3,3)
        j = np.linspace(1,2,2)
        
        c = np.array([0.0485, 0.0593, 0.0692, 0.0790, 0.085, 0.0883])
        
        mdl = GEKKO()
        
        p = mdl.Array(mdl.Var, (len(t), len(m), len(j)), lb = 0, ub = 5, integer = False)
        I = mdl.Array(mdl.Var, (len(t), len(m), len(j)), lb = 0, ub = 1, integer = True)
        
        mdl.options.SOLVER = 1
        for tt in range(len(t)):
            for mm in range(len(m)):
                for jj in range(len(j)):
                    mdl.Minimize(c[tt] * p[tt][mm][jj] * I[tt][mm][jj])
                    
        mdl.Equation(p[0][0][0]* I[0][0][0] == 4)
        mdl.options.SOLVER = 1            
        mdl.solve(disp=True)
        
        return p, I
EN

回答 1

Stack Overflow用户

发布于 2021-08-18 16:29:58

尝试以不同的方式编写等式,以便在二进制指示符为1时使用p[0][0][0]=4

代码语言:javascript
复制
mdl.Equation((p[0][0][0]-4)* I[0][0][0] == 0)

对于原始表达式,如果二进制指示符为零,则0==4是不可行的。

代码语言:javascript
复制
mdl.Equation(p[0][0][0]* I[0][0][0] == 4)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68762772

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档