python 线性代数:[18]线性规划求最优解
现在有个需要解决的问题:我找到了一份实习工作,于是想租一个房子,最好离工作近点,但是还没毕业,学校时不时有事,还不能离学校远了;而且有时候还要去女朋友那里,她希望我就住在她附近,于是,我怎么选择房子的地址?假定:公司、学校、女盆友的在地图上的坐标分别是:(1,1),(4,6),(9,2),求我的房子的坐标?
我们解决的方法是用scipy提供的一个scipy.optimize.minimize 方法,首先要写出一个计算距离的方程:
![python 线性代数:[18]线性规划求最优解](https://exp-picture.cdn.bcebos.com/5e615d715fdb3620ba02cb3aabc5260f89358d8e.jpg)
![python 线性代数:[18]线性规划求最优解](https://exp-picture.cdn.bcebos.com/dccb47de450788013448d3f2b18ca608a40f828e.jpg)
分别把三个地点的横坐标和纵坐标都保存在两个列向量里
![python 线性代数:[18]线性规划求最优解](https://exp-picture.cdn.bcebos.com/51cd85cec7f88a774be58eff6e4a2f27e6eff88e.jpg)
找一个起始点:
![python 线性代数:[18]线性规划求最优解](https://exp-picture.cdn.bcebos.com/6a408cdd3340b6f3b1bf05af12c0affce086ee8e.jpg)
看一下,随便选择的这个住址到三个地点的距离的平方和
![python 线性代数:[18]线性规划求最优解](https://exp-picture.cdn.bcebos.com/955ea0e434daf05e611b7fc2751d96d81919e58e.jpg)
求最优解
![python 线性代数:[18]线性规划求最优解](https://exp-picture.cdn.bcebos.com/0d2fe5f202b375d7af43bd47515872dadf49d88e.jpg)
求得最优解
![python 线性代数:[18]线性规划求最优解](https://exp-picture.cdn.bcebos.com/983aa5f4da5872dae47167bc0056ad042f68d48e.jpg)
[ 4.66666667 3. ]
46.6666666667
将地图绘制出来
![python 线性代数:[18]线性规划求最优解](https://exp-picture.cdn.bcebos.com/50a010f85856d53dec1cde5a47d2bb665059ca8e.jpg)
![python 线性代数:[18]线性规划求最优解](https://exp-picture.cdn.bcebos.com/ba274f598540102a4fda3811b142a07aa110c58e.jpg)
假如考虑房租:
######看来大家对数学还是很感兴趣的,根据大家的留言,现在又有了新的问题,在上面我求得的房子的位置房租太贵,所以我需要租一个离市中心远一点的地方。假设市中心的坐标是(0,0),那么我们其实只要重新定义一个需要最小化的函数就可以了:
![python 线性代数:[18]线性规划求最优解](https://exp-picture.cdn.bcebos.com/a151a233ec3834bb4ad7a4ec8714c27bd3823d8f.jpg)
新求得的房子地址:
![python 线性代数:[18]线性规划求最优解](https://exp-picture.cdn.bcebos.com/b6f0f0f97fbd4c7c6a8b3af2b8bad341027d308f.jpg)
假如考虑我的房子只能在五环边上:
有的人还说了,假如我的预算有限,只能租得起五环边上的房子,那么问题也很简单,就是设定我的房子的坐标是(x,y),假如五环到市中心(0,0)的距离为r=10,那么我的房子在五环边上,就可以用等式x**2+y**2-100=0来表示。可以写到我的代码里:
![python 线性代数:[18]线性规划求最优解](https://exp-picture.cdn.bcebos.com/2a1ecb460596b81498e8b3b043d246fe464e228f.jpg)
在求最优解得时候,我们加上一个参数constraints
![python 线性代数:[18]线性规划求最优解](https://exp-picture.cdn.bcebos.com/460fdc8333bf3bef4177560b3f3ea8db564a1a8f.jpg)
最后我们将五环也绘制在图上,看看我的房子是不是在五环上:
![python 线性代数:[18]线性规划求最优解](https://exp-picture.cdn.bcebos.com/2db6c1b2dc19ce2c2423186d7fdca039121f118f.jpg)
最后求得的结果绘图如下:蓝色线就表示五环
![python 线性代数:[18]线性规划求最优解](https://exp-picture.cdn.bcebos.com/d2987775f2c4ec99d07b02b2c3fe1e425c6b078f.jpg)
声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。