小编Adr*_*ldo的帖子

具有二元变量的多个目标函数 Google OR-tools

我有一组U用户和一组S服务器。我想最大化分配给服务器的用户数量,同时最小化使用的服务器数量(这意味着我有两个目标函数)。

每个用户都有一些需求w ,每个服务器的总容量为C。

求解器变量如下:

# x[i,j] = True if user u[j] is allocated to server s[i]
# x[i,j] = False otherwise

# y[i] = True if server s[i] is used to serve users
# y[i] = False otherwise
Run Code Online (Sandbox Code Playgroud)

如前所述,我想最大化x[i,j],同时最小化y[i]

限制如下:

  • 容量约束:由于每台服务器i都有一定的容量,因此分配的j个用户不得超过该容量
  • 邻近约束:只有位于服务器范围内的用户才能分配给它。一个用户可以位于多个服务器的重叠范围内
  • 约束系列:确保每个用户最多分配到一台服务器。

使用这个库

from ortools.sat.python import cp_model
Run Code Online (Sandbox Code Playgroud)

到目前为止我已经做了:

  • 创建求解器变量(它们是布尔值)
  • 创建约束
  • 最大化 x[i,j] 变量
  • 获取目标函数

例如,如果我有 10 个用户和 4 台服务器,则所有 10 个用户都分配到 4 台服务器中

我需要但未能完成的事情:

  • 最大化x[i,j] …

python optimization constraint-programming or-tools cp-sat

3
推荐指数
1
解决办法
621
查看次数