python - 将 AMPL 模型转换为 ORTools
问题描述
我正在尝试将我的 AMPL 模型转换为 ORTools。这是模型:
set NUTR;
set FOOD;
param cost {FOOD} > 0;
param f_min {FOOD} >= 0;
param f_max {j in FOOD} >= f_min[j];
param n_min {NUTR} >= 0;
param n_max {i in NUTR} >= n_min[i];
param amt {NUTR,FOOD} >= 0;
var Buy {j in FOOD} >= f_min[j], <= f_max[j];
minimize Total_Cost: sum {j in FOOD} cost[j] * Buy[j];
subject to Diet {i in NUTR}:
n_min[i] <= sum {j in FOOD} amt[i,j] * Buy[j] <= n_max[i];
这是我的 ORTools 的半 Python 代码。我不知道 Buy 是否正确以及如何添加约束:
Buy = {}
for f_ in FOOD:
Buy[f_] = solver.IntVar(0, 1000, 'Buy[%s]' % (f_,))
## Objective Function
Total_Cost = solver.Sum([cost[j_] * Buy[j_] for j_ in FOOD])
## Constraints
for i in NUTR:
for j in FOOD:
print(amt[i,j] *Buy[j])
#solver.Add( solver.Sum(amt[i,j] * Buy[j] <= n_max[i] ))
solver.Minimize(Total_Cost)
解决方案
错误的括号
solver.Add( solver.Sum(amt[i,j] * Buy[j]) <= n_max[i] )
推荐阅读
- twitter-bootstrap - 导航栏仅显示为无功能的汉堡菜单
- asp.net - 登录失败:未知用户名或错误密码错误
- python - 创建新 Shapefile 时使用 PyShp 的多部分形状问题
- sql - SQL在SQL Server上删除没有主键的表中的重复行
- python - GridSearchCV 对平均绝对误差的评分
- android - 如何在 Android 中将 ViewModel 与来自存储库(数据库/网络)的 LiveData 一起使用?
- ruby - 使用 Ruby 的 Open3 / Process.spawn() 捕获 ANSI 彩色输出
- javascript - Waypoints JS 找不到变量
- mysql - 复制 MySQL/MariaDB BLOB 列时复制了哪些数据?
- hyperledger-fabric - how to query the ledger (smart contract)