person_number : 1 2 3 4 5 6 7 8
prefered_house : 1 5 6 6 7 5 1 8
(意思是第四个人例如更喜欢门牌号6)
我需要在人与人之间分配房屋,以使最满意的人和最不满意的人之间的差距最小化。
如何使用线性编程来表达问题?
第1节(我已经解决了):
在本节中,我需要以最大的满意度分配房屋。 这就是我解决这一部分的方法:
变量:Xi binary i = 1,2,3 .. 64
( 1 --> yes , 0 --> no )
Xi i=1,2,..8 ---> person 1 gets house i .
Xi i= 9,10 .. 16 ---> person 2 got house i-8
.
.
.
Xi i=57 ... 64 --> person 8 got house i-56
功能:
min z(最喜欢的房子和他得到的房子之间的最小距离)
min Z=(0*x1 + 1*x2 + 2*x3 + 3*x4 + 4*x5 + 5*x6 + 6*x7 + 7*x8)
+ (4*x9 + 3*x10 + 2*x11 + 1*x12 + 0*x13 + 1*x14 + 2*x15 + 3*x16 )
+ (5*x17 + 4*x18 + 3*x19 + 2*x20 + 1*x21 + 0*x22 + 1*x23 + 2*x24 )
+ (5*x25 + 4*x26 + 3*x27 + 2*x28 + 1*x29 + 0*x30 + 1*x31 + 2*x32 )
+ (6*x33 + 5*x34 + 4*x35 + 3*x36 + 2*x37 + 1*x38 + 0*x39 + 1*x40 )
+ (4*x41 + 3*x42 + 2*x43 + 1*x44 + 0*x45 + 1*x46 + 2*x47 + 3*x48 )
+ (0*x49 + 1*x50 + 2*x51 + 3*x52 + 4*x53 + 5*x54 + 6*x55 + 7*x56 )
+ (7*x57 + 6*x58 + 5*x59 + 4*x60 + 3*x61 + 2*x62 + 1*x63 + 0*x64 )
Σ Xi(i=1,..8) = 1
Σ Xi(i=9,..16) = 1
.
.
.
Σ Xi(i=57,..64) = 1
x1 + x9 + x17 + x25 + x33 + x41 + x49 + x57 =1
x2 + x10 + x18 + x26 + x34 + x42 + x50 + x58 =1
x3 + x11 + x19 + x27 + x35 + x43 + x51 + x59 =1
x4 + x12 + x20 + x28 + x36 + x44 + x52 + x60 =1
x5 + x13 + x21 + x29 + x37 + x54 + x53 + x61 =1
x6 + x14 + x22 + x30 + x38 + x46 + x54 + x62 =1
x7 + x15 + x23 + x31 + x39 + x47 + x55 + x63 =1
x8 + x16 + x24 + x32 + x40 + x48 + x56 + x64 =1
结果:最优解z = 5
我在很多方面尝试过的第二部分,但我未能解决问题..