我正在使用cvxpy内python来解决特定类型的分配问题。我想以最小化成本的方式将 M 人分配到 N 个组,对组有以下限制:
当然,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
我有一个Jupyter笔记本,我想将其转换成一个Python使用脚本nbconvert命令从内的Jupyter笔记本电脑。
我在笔记本的末尾包含了以下行:
!jupyter nbconvert --to script <filename>.ipynb
Run Code Online (Sandbox Code Playgroud)
这将创建一个Python脚本。但是,我希望生成的.py文件具有以下属性:
# 在[27]:
# 编码:utf-8
忽略%magic命令,例如:
%matplotlib inline!jupyter nbconvert --to script <filename>.ipynb,即笔记本中执行Python转换的命令目前,%magic命令被转换为形式:get_ipython().magic(...),但这些不一定在Python.