小编pro*_*ofj的帖子

使用 CVXPY 解决具有条件最小组大小的分配问题

我正在使用cvxpypython来解决特定类型的分配问题。我想以最小化成本的方式将 M 人分配到 N 个组,对组有以下限制:

  1. 组的成员不能超过 J 个
  2. 如果一个组被填充,它必须至少有 K 个成员,否则一个组可以有零个成员。

当然,K <= J。我可以忽略上面的#2 来解决问题。在下面的例子中,M = 6,N = 3 和 J = 3。理想情况下,我想设置 K = 2。我生成的偏好使得每个人都喜欢第 1 组(成本函数中的第 1 列),然后大多数人更喜欢第 2 组,但一个人更喜欢第 3 组而不是第 2 组:

import numpy as np import cvxpy as cp

preference = np.array([[1,2,3],
                       [1,2,3],
                       [1,2,3],
                       [1,2,3],
                       [1,2,3],
                       [1,3,2]])

groupmax = np.array([3,3,3])

selection = cp.Variable(shape=preference.shape,boolean=True)

group_constraint_1 = cp.sum(selection,axis=0) <= groupmax

assignment_constraint = cp.sum(selection,axis=1) == 1

cost = cp.sum(cp.multiply(preference,selection))

constraints = [group_constraint_1,assignment_constraint]

assign_prob = …
Run Code Online (Sandbox Code Playgroud)

mathematical-optimization linear-programming integer-programming cvxpy

5
推荐指数
1
解决办法
1167
查看次数

Jupyter Notebook nbconvert 无魔法命令/无降价

我有一个Jupyter笔记本,我想将其转换成一个Python使用脚本nbconvert命令从Jupyter笔记本电脑。

我在笔记本的末尾包含了以下行:

!jupyter nbconvert --to script <filename>.ipynb
Run Code Online (Sandbox Code Playgroud)

这将创建一个Python脚本。但是,我希望生成的.py文件具有以下属性:

  1. 没有输入语句,例如:

    # 在[27]:

  2. 没有降价,包括以下声明:

    # 编码:utf-8

  3. 忽略%magic命令,例如:

    1. %matplotlib inline
    2. !jupyter nbconvert --to script <filename>.ipynb,即笔记本中执行Python转换的命令

    目前,%magic命令被转换为形式:get_ipython().magic(...),但这些不一定在Python.

python jupyter-notebook nbconvert

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