gekko - Gekko 中的拉格朗日乘数(边际)
问题描述
Gekko 中是否有一条线来检索拉格朗日乘数(类似于 GAMS 中的边际),或者如果没有一条线,则另一种方式?
谢谢您的帮助。
解决方案
这是检索拉格朗日乘数的一行。
lam = np.loadtxt(m.path + '/apm_lam.txt')
您需要将诊断级别设置为m.options.DIAGLEVEL=2
并在本地使用m=GEKKO(remote=False)
. DIAGLEVEL=2
当您使用 . 打开文件夹时,您可以看到生成的其他一些文件m.open_folder()
。这是一个测试脚本。
from gekko import GEKKO
import numpy as np
m = GEKKO(remote=False)
#initialize variables
xi = [1,5,5,1]
x1,x2,x3,x4 = [m.Var(xi[i],lb=1,ub=5) for i in range(4)]
m.Equation(x1*x2*x3*x4>=25)
m.Equation(x1**2+x2**2+x3**2+x4**2==40)
m.Obj(x1*x4*(x1+x2+x3)+x3)
m.options.DIAGLEVEL=2
m.solve(disp=False)
print('')
print('Results')
print('x1: ' + str(x1.value))
print('x2: ' + str(x2.value))
print('x3: ' + str(x3.value))
print('x4: ' + str(x4.value))
print('Lagrange multipliers')
lam = np.loadtxt(m.path + '/apm_lam.txt')
print(lam)
这会产生结果:
Results
x1: [1.000000057]
x2: [4.74299963]
x3: [3.8211500283]
x4: [1.3794081795]
Lagrange multipliers
[-0.55227642 0.16143862]
推荐阅读
- javascript - REPEAT onload 动画 onclick - Raphael Javascript SVG 动画
- c# - 出现“已添加具有相同密钥的项目”的错误“app.UseBlazor”
- bash - 使用 sudo 执行脚本时出现语法错误
- javascript - Javascript中的独立倒计时
- excel - 在 VBA 项目参考中找不到适用于 Microsoft Office 的 SAS 插件
- excel - 应用于多个表格的多个单元格范围的 VBA 透视过滤器
- cobalt - 1分钟后面临youtube播放问题
- apache-camel - 直接在骆驼路线中归档,无需文件消费者
- xml - 如何在 PL/SQL 中使用 FOR LOOP 从具有相同标签的 xml clob 中提取值
- javascript - 如何在云 Firestore 中使用事务执行 OR 查询?