如何使用线性编程(优化)来制定?

时间:2018-01-26 23:48:42

标签: optimization linear-programming linear

我有8间房子彼此相邻,8人...... 我想分发房子,给每个人一个房子.. 现在的问题是每个人都有一个喜欢的房子(他想拥有)。 当每个人越来越远离他们喜欢的房子时,每个人都会越来越失望。

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

我在很多方面尝试过的第二部分,但我未能解决问题..

0 个答案:

没有答案