新浪博客

python 线性代数:线性规划求最优解

2016-07-16 17:11阅读:
现在有个需要解决的问题:我找到了一份实习工作,于是想租一个房子,最好离工作近点,但是还没毕业,学校时不时有事,还不能离学校远了;而且有时候还要去女朋友那里,她希望我就住在她附近,于是,我怎么选择房子的地址?假定:公司、学校、女盆友的在地图上的坐标分别是:(1,1),(4,6),(9,2),求我的房子的坐标?

  1. 我们解决的方法是用scipy提供的一个scipy.optimize.minimize 方法,首先要写出一个计算距离的方程:
    python <wbr>线性代数:线性规划求最优解
  2. 分别把三个地点的横坐标和纵坐标都保存在两个列向量里
python <wbr>线性代数:线性规划求最优解
  • 找一个起始点:
  • python <wbr>线性代数:线性规划求最优解
  • 看一下,随便选择的这个住址到三个地点的距离的平方和
  • python <wbr>线性代数:线性规划求最优解
    求得这个值很大:6224

  • 求最优解
  • python <wbr>线性代数:线性规划求最优解
  • 求得最优解
    [ 4.66666667 3. ]
    46.6666666667

  • python <wbr>线性代数:线性规划求最优解
    输出为:

  • 将地图绘制出来
  • python <wbr>线性代数:线性规划求最优解
    求得我的地址就标在地图上(house的地方)


  • python <wbr>线性代数:线性规划求最优解

假如考虑房租:

######看来大家对数学还是很感兴趣的,根据大家的留言,现在又有了新的问题,在上面我求得的房子的位置房租太贵,所以我需要租一个离市中心远一点的地方。假设市中心的坐标是(0,0),那么我们其实只要重新定义一个需要最小化的函数就可以了:
python <wbr>线性代数:线性规划求最优解
新求得的房子地址:
python <wbr>线性代数:线性规划求最优解

假如考虑我的房子只能在五环边上:

  1. 有的人还说了,假如我的预算有限,只能租得起五环边上的房子,那么问题也很简单,就是设定我的房子的坐标是(x,y),假如五环到市中心(0,0)的距离为r=10,那么我的房子在五环边上,就可以用等式x**2+y**2-100=0来表示。可以写到我的代码里:
  2. python <wbr>线性代数:线性规划求最优解
  3. 在求最优解得时候,我们加上一个参数constraints
  4. python <wbr>线性代数:线性规划求最优解
  5. 最后我们将五环也绘制在图上,看看我的房子是不是在五环上:
  6. python <wbr>线性代数:线性规划求最优解
  7. 最后求得的结果绘图如下:蓝色线就表示五环
  8. python <wbr>线性代数:线性规划求最优解

我的更多文章

下载客户端阅读体验更佳

APP专享