java - 具有“加权”边和顶点最小/最大容量的 Ford-Fulkerson 算法
问题描述
我的问题与此类似:
但是,我合并了作业的最小和最大容量。不仅边有一个权重(“训练”),而且每个学生都必须被分配,而且有些作业不会有学生分配给他们,有些作业将是学生的最大容量,而所有其他作业至少处于最低限度。
proc optmodel;
set Students = {'S1', 'S2', 'S3', 'S4', 'S5', 'S6'};
set Projects = {'P1', 'P2', 'P3'};
number projMinCapacity{Projects} = [2, 2, 2];
number projMaxCapacity{Projects} = [3, 3, 3];
number ranking{Students, Projects} = [
1 2 0
2 1 0
0 1 2
2 1 0
1 0 2
2 0 1
];
var flow{Students, Projects} binary;
maximize z = sum{s in Students, p in Projects}(flow[s, p]*(ranking[s, p]));
con sumPerStudent{s in Students} : sum{ p in Projects}flow[s,p] = 1;
con maxFlow{p in Projects} : sum{s in Students}flow[s,p] <= projMaxCapacity[p];
con minFlow{p in Projects} : sum{s in Students}flow[s,p] >= projMinCapacity[p];
solve;
print z flow;
quit;
^我已将我在 SAS Studio 中的工作实现作为 PoC 包含在此处,但对于我的项目,我需要可以合并到 Web 应用程序中的东西。
所以我试着弄乱 PuLP,但我的 Python 有点生疏,所以我真的很感激 Java 实现。有没有我可以轻松做到这一点的库?否则对于具有相同要求的问题的一个很好的参考实现?
谢谢!
解决方案
推荐阅读
- c++ - 尝试使用生产者消费者模型来模仿 linux cat 命令,但输出似乎显示了一行的多个副本
- python - 是否可以使用 EasyGui multenterbox 创建默认值?
- python-3.x - TimeGrid() 的 Python QuantLib 问题
- android-studio - Android studio 4.1,Kotlin 1.4.20-RC,不正确的导入语法错误显示
- reactjs - 组件重新渲染时状态不更新?
- neo4j - 返回不是由特定导演执导但在其他电影中与该导演合作过的演员和电影。密码(neo4j)
- r - 计算并将值附加到R中数据框中的新列
- java - 如何使用 Discord API 指定父类别?
- prolog - 如何在 SWI-Prolog 中的所有统一中启用发生检查?
- c# - Xamarin 表单条目小数分隔符在不同的 CultureInfo 上无法正常工作