julia - Julia - 在 @variable 和 @constraint 表达式中按名称访问 Dict 值
问题描述
我想知道是否可以在表达式中按名称访问 Dict 值,例如:
@objective(
premex,
Min,
sum((u["cap"] - PRODAMOUNT[op, u, t]) * u["util_cost1"]
for op in _ORDER_PRODUCTS, u in UNITS, t in TIME))
_订购_产品:
Dict{String,Dict{String,Any}}("o18-p25" => Dict("order" => "o18","value" => 3000.0f0,"product" => "p25"),"o18-p36" => Dict("order" => "o18","value" => 63.0f0,"product" => "p36"),"o23-p39" => Dict("order" => "o23","value" => 204.75f0,"product" => "p39"),"o16-p32" => Dict("order" => "o16","value" => 336.0f0,"product" => "p32"),"o22-p37" => Dict("order" => "o22","value" => 50.0f0,"product" => "p37"),"o1-p5" => Dict("order" => "o1","value" => 60.0f0,"product" => "p5"),"o11-p28" => Dict("order" => "o11","value" =....
单位:
UNITS = Dict(["CINTAS" => Dict(["cap" => 1000, "mincap" => 50, "dcap" => 24830, "util_cost1" => 1000, "maxprodr" => 24830]), "BUHLER1" => Dict(["cap" => 1500, "mincap" => 60, "dcap" => 37245, "util_cost1" => 1000, "maxprodr" => 37245]), ...
当我运行它时,我得到了一个错误:
错误:LoadError:MethodError:没有方法匹配 getindex(::Pair{String,Dict{String,Integer}}, ::String)
当我将 u["cap"] 替换为一个数字时,它会起作用。
解决方案
自己找到了答案(...):
@variable(premex, PRODAMOUNT[op in keys(_ORDER_PRODUCTS), u in keys(UNITS), t in TIME])
@objective(
premex,
Min,
sum((u["cap"] - PRODAMOUNT[key1, key2, t]) * u["util_cost1"]
for (key1, op) in _ORDER_PRODUCTS, (key2, u) in UNITS, t in TIME
))
有3个因素需要注意:
- 不能用字典对象索引变量,所以它必须是 Int 或 String
- 这是遍历字典的方法:for (key1, op) in _ORDER_PRODUCTS
- 这是仅获取索引变量的键的方法: op in keys(_ORDER_PRODUCTS)
推荐阅读
- android - 为 Android TV 开发应用程序 - SVG 文本在 4K 电视上像素化和模糊
- android - Sectigo 证书被我的 Android CK65 Honeywell 设备上的 Google Chrome 接受,即使 Sectigo 不在受信任的凭据列表中
- python - 当我要求它遍历列表时,为什么 python 会打印整个列表?
- reactjs - Redux vs Context API 和 useReducer 钩子
- flask - 混合内容....但请求了不安全的框架“http://www.searchvity.com/”
- firebase-realtime-database - 为什么 firebase CLI 将数据推送到实时数据库上的随机路径?
- javascript - 从 axios API 搜索 vue b-table 中的特定数据
- reactjs - 在函数组件主体之外访问 React Context 值
- acumatica - 如何通过 Rest API 获取/更新客户 GL 帐户信息
- datetime - 在 Google Apps 脚本中使用日期、时间