记录一个关于0-1规划问题(指派问题、分配问题)模型的建立、实现、求解的过程,并在基础模型通过添加惩罚或激励机制考虑多种情况。记录目的在于学习交流以及日后自己对该类模型能进行较快的进行描述实现。
问题描述(基础)
考虑这么一个分配问题有9个数,让他们其中分成2组每组不超过6人,每组又分成A、B两队,每队不超过3人。目标使得每组A、B两队和之差最小。用数学题的语言进行描述该问题,现有9人,分成2组,每组最多6人,每组内又分AB两队,如何安排才能使得每组两队分数较为平衡。
思考解的形式
我们将解分成2*2个(两组每组两队)部分,每个部分需要重9个数中进行选择,用0-1来表示在该部分中是否被选中,那么它的解的个分别数为9*2*2,用矩阵形式为:
将其用向量的形式进行表示:
思考约束条件以及目标
解的形式确定之后,思考如何针对该解的形式,然后对问题进行描述,从问题中和解的形式,我们可以总结出以下的2个约束:
- 每组中的A部分和B部分分别小于等于3人
- 每个数只能出现1次,即每一列的和为1
用公式进行表达为:
∑j=113x1ja<=3∑i=13xi1a<=1∑j=113x1jb<=3∑i=13x