如何用python对这个MILP问题建模?

如何用python对这个MILP问题建模?,python,mixed-integer-programming,branch-and-bound,Python,Mixed Integer Programming,Branch And Bound,我有一个问题我想解决,但在问之前我不知道如何建模。我做了研究,找到了一些有帮助的东西,但我没办法去想它。下面是我遇到的问题的例子 所以我有很多项目,比如说40个,每个项目有2或3个功能,每个功能只有在有3,4,5,。。。它们的数量取决于功能 目标是用10个不同的项目获得最大数量的不同有用功能 示例(如果3个或更多不同项目包括a,则功能a有用;如果5个或更多不同项目包括b、c 8或更多项目等,则功能b有用) 一个示例组合 item1+item2+...+item10 = a(3), b(5)

我有一个问题我想解决,但在问之前我不知道如何建模。我做了研究,找到了一些有帮助的东西,但我没办法去想它。下面是我遇到的问题的例子

所以我有很多项目,比如说40个,每个项目有2或3个功能,每个功能只有在有3,4,5,。。。它们的数量取决于功能

目标是用10个不同的项目获得最大数量的不同有用功能

示例(如果3个或更多不同项目包括a,则功能a有用;如果5个或更多不同项目包括b、c 8或更多项目等,则功能b有用)

一个示例组合

item1+item2+...+item10 = a(3), b(5) 
所以a和b是有用的特性(c不是有用的,因为有5个我们需要8个使其有用)

我想我想建立一个混合整数线性规划模型,用分枝定界解算器求解。目标是每个项目和每个特征的特征数量权重(?)我想把它建模为背包问题,但我想不出如何应用类似的容量是10,但值和权重?对功能的使用有最低要求,我需要一些指导或通用算法来解决这个问题,如果我有什么可以开始的话,我可以进一步调查我的方法是:

步骤1:建立数学模型 拿一张纸,写下一个数学模型。例如:

数据:

二进制变量:

 x(i) = 1    if item i is selected
        0    otherwise

 u(f) = 1    if feature f is useful in selection
        0    otherwise
型号:

  maximize sum(f,u(f))
  subject to 
       sum(i,x(i)) = N
       u(f)*K(f) <= sum(i, a(i,f)*x(i))   for all f
最大化总和(f,u(f))
从属于
和(i,x(i))=N
我的方法是:

步骤1:建立数学模型 拿一张纸,写下一个数学模型。例如:

数据:

二进制变量:

 x(i) = 1    if item i is selected
        0    otherwise

 u(f) = 1    if feature f is useful in selection
        0    otherwise
型号:

  maximize sum(f,u(f))
  subject to 
       sum(i,x(i)) = N
       u(f)*K(f) <= sum(i, a(i,f)*x(i))   for all f
最大化总和(f,u(f))
从属于
和(i,x(i))=N

u(f)*K(f)在本例中,您有3个具有“a”特征的项,但在输出中您写入了a(3)。是否正确?在本例中,您有3个具有“a”功能的项,但在输出中您写入了a(3)。对吗?