当前位置: 首页 > 知识库问答 >
问题:

动态变量背包优化

邰勇军
2023-03-14

我试图解决一个优化问题,它非常类似于背包问题,但不能用动态规划来解决。我想解决的问题与这个问题非常相似:

共有1个答案

养聪
2023-03-14

事实上,你可以用CPLEX解决这个问题。让我给你看看OPL。

模型(.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);
}

数据. dat

categories={Carbs,Protein,Fat};
groups=[{Meat,Milk},{Pasta,Bread},{Oil,Butter}];
products=[
{Product11,Product12},{Product21,Product22,Product23},
{Product31,Product32},{Product41,Product42},
{Product51},{Product61,Product62}];

prices=[1,4,1,3,2,4,2,1,3,1,2,1];

// User 1
Uc=[1,1,0];
Ug=[0.8,0.2,0.1,1,0.01,0.6];
budget=3;

//User 2
//Uc=[1,1,0];
//Ug=[0.8,0.2,0.1,1,0.01,0.6];
//budget=2;

而这给了

solution =  {"Product11" "Product21" "Product41"}
 类似资料:
  • 表名,excel文件路径,excel文件名是动态的(它是基于用户输入的)。我是SSIS的新手,我只使用过静态值。如何在SSIS中实现上述场景?

  • 问题内容: 有什么方法可以根据html元素上的类设置颜色变量?还是通过其他方式实现这一目标? 问题答案: 这是基本主题。您可能想使用mixin或包含一个CSS文件中的多个主题。这是使用包括以下内容的方法: _theme.scss main.scss 您可以轻松地制作一个混合色,它使用3种颜色作为其参数来代替include:

  • 我正在写一个程序,以找到最好的MLB阵容使用背包解决方案。为此,我传入球员数据,其中有球员计算的价值和工资。就背包问题而言,工资将是我的“重量”。 我的问题不是能够选择球员,而是选择最优的阵容。我正在选择一个投手,一个中锋,一垒手,二垒手,三垒手,短停,和三个外野手。我可以成功地完成这一切。我希望我的“体重”是36000,但我目前只选择了一个总共21000的阵容。 我是在犯一个公然的错误,我只是没

  • 动态规划 动态规划 Dynamic Programming,核心思想就是将大问题划分成小问题进行解决,从而一步一步的获得最优解的处理算法 动态规划跟分治算法思想类似,但动态规划算法会依赖到上一次计算的结果,每次求解是建立在上一次子阶段的结果基础之上进一步处理,而分治算法分解出来问题往往是独立的 动态规划一般可以通过填表的方式进行逐步推进得到最优解 0/1背包问题 01背包问题是经典的利用动态规划算

  • 我有一个场景,我需要一些帮助来制定问题,这样我才能正确地实施优化方法。我希望有人能给我一些指导,表面上看起来很简单,但我很难弄清楚如何正确编码变量、约束等。 情况是这样的: 需要将多个物品放入箱子/背包中 例: 每个项目有两个值的向量: 项目=[[7,6],[14,2],[27,23],[5,15]] 箱子/背包的向量,第一个值为物品第一个值可接受的上限。第二个值相同,但适用于箱子/背包中每个物品

  • 我正在开发一个程序来解决0/1背包问题的变体。 原始问题如下所述:https://en.wikipedia.org/wiki/Knapsack_problem.如果将来链接丢失,我会给你一个0/1背包问题的摘要(如果你熟悉它,跳过这一段):假设我们有项,每个项都有重量和值。我们想把物品放在一个袋子里,这个袋子支持最大重量,这样袋子里的总价值是最大的,而不会加重袋子的重量。项目不能有多个实例(即,我