在学习司守奎老师编写的Pyhon数学实验与建模。学到第6.6求解二次规划模型的时候,忽然觉得很多地方又看不懂了,之前学的一些都忘记了,所以又赶紧查资料弥补一下知识。放在这里,给后面学习的小伙伴提供一些参考吧。

import numpy as np
from cvxopt import matrix,solvers
n=3;
P=matrix(0.,(n,n))
P[::n+1]=[3,2,1.7]
q=matrix([3,-8.2,-1.95])
A=matrix([[1.,0,1],[-1,2,0],[0,1,2]]).T
b=matrix([2.,2,3])
Aeq=matrix(1.,(1,n))
beq=matrix(3.)
s=solvers.qp(P,q,A,b,Aeq,beq)
print("最优解为:",s['x'])
print("最优值为:",s['primal objective'])

详细拆解一下当时遇到的问题

P=matrix(0.,(n,n))

此处用到的matrix是cvxopt库里面的,其一般格式为:cvxopt.matrix(array,dims),表示把array按照dims重新排成矩阵。则上面那行代码里面的(n,n)表示的是一个n×n的维度。0后面的点,表示设置为浮点数。matrix里区分int和double,所以数字后面都需要加小数点

需要注意的是cvxopt.matrix与numpy.matrix的排列顺序不同,其中cvxopt.matrix是列优先,numpy.matrix是行优先。举例说明如下:

from cvxopt import matrix
>>> A = matrix([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], (2,3))
>>> print(A)
[ 1.00e+00  3.00e+00  5.00e+00]
[ 2.00e+00  4.00e+00  6.00e+00]
>>> A.size
(2, 3)

这个程序中,最让让我原地爆炸的是这一行代码

P[::n+1]=[3,2,1.7]

这一行代码的主要作用是把3,2,1.7的数值赋给P矩阵的对角线元素,但是由于自己把之前学的知识都忘得差不多了,所以半天没想明白是怎么回事,花了一两天时间查资料,终于弄懂,开心飞起!

举例而言:

比如a=[0,3,8,11,15,16,20,17,28]

其实list[::]的意思是list[start:end:step],其中,

-start:起始位置,默认=0;

-end:结束位置,默认=list的长度;

-step:步长,默认=1;

因此,a[::]就相当于是从a的第一个元素开始,到最后一个元素为止,一步一步的输出a的所有元素。

a[::2] (等价于a[0:len(a):2])就是每两跳输出一个值,即[0, 8, 15, 20, 28]。

因此,P[::n+1],表示的是在P矩阵中,从第一个元素开始,每隔4(n+1)个元素赋一次值,正好就是给对角线元素赋值。

至此,也算是弄明白了。学习过程中参考了以下资料,把链接放在这里,感谢其他朋友分享的知识。

python中y和n_花里胡哨!Python中的[:n],[::n],[:,:,n],[...,n]都是什么鬼!

python对矩阵对角线进行赋值

Python求解二次规划模型相关推荐

  1. python求解二次规划_Python二次规划和线性规划使用实例

    这篇文章主要介绍了Python二次规划和线性规划使用实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 对于二次规划(quadratic progr ...

  2. 计算机软件求解线性规划模型--Python

    线性规划简介 线性规划(Linear programming,简称LP),是运筹学中研究较早.发展较快.应用广泛.方法较成熟的一个重要分支,它是辅助人们进行科学管理的一种数学方法.研究线性约束条件下线 ...

  3. 数学建模:整数规划示例模型 (Python 求解)

    目录 例 1 : 选课策略模型 1. 为了选修课程门数最少, 应学习哪些课程? 建立 0-1 规划模型 Python 求解 2. 选修课程最少时, 为了学分尽量多, 应学习哪些课程? 例 2 : 装箱 ...

  4. 2021-04-24 Python 最小二乘法求解线性回归模型

    Python 最小二乘法求解线性回归模型 机器学习线性回归模型 线性回归(linear regression)是一种线性模型,它假设输入变量 x 和单个输出变量 y 之间存在线性关系 具体来说,利用线 ...

  5. 用Python求解数学规划问题

    一.线性规划简介 线性规划(Linear Programming 简记为LP)是数学规划的一个重要分支. 规划问题分类 线性规划: 在一组线性约束条件的限制下,求一线性目标函数最大或最小的问题: 整数 ...

  6. python 物理学中的应用_利用python求解物理学中的双弹簧质能系统详解

    前言 本文主要给大家介绍了关于利用python求解物理学中双弹簧质能系统的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧. 物理的模型如下: 在这个系统里有两个物体,它们的质 ...

  7. Python计算机视觉——照相机模型与增强现实

    Python计算机视觉--照相机模型与增强现实 文章目录 Python计算机视觉--照相机模型与增强现实 1 针孔照相机模型 1.1 照相机矩阵 1.2 三维点的投影 1.3 照相机矩阵的分解 1.4 ...

  8. python代码物理_利用python求解物理学中的双弹簧质能系统详解

    前言 本文主要给大家介绍了关于利用python求解物理学中双弹簧质能系统的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧. 物理的模型如下: 在这个系统里有两个物体,它们的质 ...

  9. 用Python求解线性规划问题

    线性规划简介及数学模型表示线性规划简介一个典型的线性规划问题线性规划模型的三要素线性规划模型的数学表示图解法和单纯形法图解法单纯形法使用python求解简单线性规划模型编程思路求解案例例1:使用sci ...

最新文章

  1. 赠票 | 第三届语言与智能高峰论坛200个免费参会名额!
  2. php中count获取多维数组长度的方法
  3. 浅淡Webservice、WSDL三种服务访问的方式(附案例)
  4. Windows Server 2012 配置远程桌面帐户允许多用户同时登录
  5. iOS10权限设置问题以及xcdoe8更新细节问题
  6. 请列举你了解的分布式锁_这几种常见的“分布式锁”写法,搞懂再也不怕面试官,安排!...
  7. 微芯片TWIZ5200: W5200 以太网 PICtail Plus 板
  8. 什么是锁PHP,PHP简单分布式锁-PHP中的锁
  9. AdapterVIew
  10. Mugeda(木疙瘩)H5案例课—房地产楼书H5制作-岑远科-专题视频课程
  11. 环境监测神器——智慧环境监测数据可视化平台
  12. char * 与char []区别总结
  13. Joyful Pandas--综合练习
  14. day 82 Vue学习三之vue组件
  15. Python中的数学函数
  16. 登录模板源码 : bootstrap风格
  17. QQ邮箱炸啦,我的附件名怎么乱码?解决javaMail发送QQ邮件,附件名乱码的问题
  18. 架构(B站尚硅谷大数据项目实践 电影推荐系统概述)
  19. VectorCAST/C++在汽车电子C++代码测试的应用
  20. 嵌入式:Keil uvision5环境下创建一个工程模板(步骤超详细)

热门文章

  1. mysql阿里云不显示中文乱码_MySQL命令窗口下中文显示乱码的解决过程
  2. 计算机辅助教学发展的现状,后时代,我们何去何从――浅谈计算机辅助教学现状与发展.doc...
  3. CamStudio——手用得录屏软件
  4. UI设计师和平面设计师有哪些区别?
  5. 国际企业邮箱哪个好用?企业邮箱域名怎么修改?
  6. 基于模板匹配的图像拼接技术研究-含Matlab代码
  7. windows系统“IE浏览器将此网站添加兼容性视图”详细图文教程
  8. 【解决方案】LaTeX报错:Illegal unit of measure (pt inserted).
  9. 在新一年里提升你的工作效率,收下这 6 款协作工具
  10. 基于SFM的三维重建点云合并及位移测量