Optimization 动态变量背包优化
我试图解决一个优化问题,它非常类似于背包问题,但不能用动态规划来解决。 我想解决的问题与这个问题非常相似:Optimization 动态变量背包优化,optimization,machine-learning,mathematical-optimization,cplex,knapsack-problem,Optimization,Machine Learning,Mathematical Optimization,Cplex,Knapsack Problem,我试图解决一个优化问题,它非常类似于背包问题,但不能用动态规划来解决。 我想解决的问题与这个问题非常相似: 事实上,您可以使用CPLEX解决这个问题。 让我在OPL中向您展示这一点 model.mod {string} categories=...; {string} groups[categories]=...; {string} allGroups=union (c in categories) groups[c]; {string} products[allGroups]=...;
事实上,您可以使用CPLEX解决这个问题。 让我在OPL中向您展示这一点 model.mod
{string} categories=...;
{string} groups[categories]=...;
{string} allGroups=union (c in categories) groups[c];
{string} products[allGroups]=...;
{string} allProducts=union (g in allGroups) products[g];
float prices[allProducts]=...;
int Uc[categories]=...;
float Ug[allGroups]=...;
float budget=...;
dvar boolean z[allProducts]; // product out or in ?
dexpr int xg[g in allGroups]=(1<=sum(p in products[g]) z[p]);
dexpr int xc[c in categories]=(1<=sum(g in groups[c]) xg[g]);
maximize
sum(c in categories) Uc[c]*xc[c]+
sum(c in categories) sum(g in groups[c]) Uc[c]*Ug[g]*xg[g];
subject to
{
ctBudget:
sum(p in allProducts) z[p]*prices[p]<=budget;
}
{string} solution={p | p in allProducts : z[p]==1};
execute
{
writeln("solution = ",solution);
}
这就给了
solution = {"Product11" "Product21" "Product41"}
您好,非常感谢您的宝贵反馈,这为我节省了很多时间。我曾尝试下载IBMCPlexOpStudio免费版,但不幸的是我无法下载,因此我无法直接尝试我正在尝试将此代码转换为python来尝试的代码。所以我有两个问题,我不能理解第11行dexpr,如果我理解正确的话,这一行创建了一个布尔数组xg,但是这是一个嵌入的if语句:每个组g的z[p]的所有值之和都应该大于1,而不是xg[g]为0?你对解决这个问题的算法有什么想法?再次感谢你,我可以在那里获得免费的CPLEX社区版,这是我使用了你在linkedin帖子中提供的链接,但是因为我不在美国,我无法下载,为了解决这个问题,我在IBM论坛上发布了一个问题。我使用IBM DropSolve OAAS作为临时解决方案。你的代码工作得很好。非常感谢你。
solution = {"Product11" "Product21" "Product41"}