Python求解二次规划模型

这篇具有很好参考价值的文章主要介绍了Python求解二次规划模型。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

        在学习司守奎老师编写的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对矩阵对角线进行赋值文章来源地址https://www.toymoban.com/news/detail-430991.html

到了这里,关于Python求解二次规划模型的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【算法学习】斐波那契数列模型-动态规划

            我在算法学习过程中,针对斐波那契数列模型的动态规划的例题进行了一个整理,并且根据标准且可靠一点的动态规划解题思路进行求解类似的动归问题,来达到学习和今后复习的必要。         所谓的斐波那契数列模型,即当前状态的值等于前两种状态的值之和。

    2024年02月04日
    浏览(54)
  • 数学模型:Python实现非线性规划

    上篇文章:整数规划 文章摘要:非线性规划的Python实现。 参考书籍:数学建模算法与应用(第3版)司守奎 孙玺菁。 PS:只涉及了具体实现并不涉及底层理论。学习底层理论以及底层理论实现:可以参考1.最优化模型与算法——基于Python实现 渐令 粱锡军2.算法导论(原书第3版)

    2024年02月08日
    浏览(54)
  • 线性规划模型(数学建模python版)

    前言:本篇文章只涉及问题的应用层面(如何调用包调用函数,如何把问题归结为一般形式方便使用第三方库中的函数求解),不涉及问题的具体求解原理。 首先回顾一下高中学过的线性规划:求一个线性目标函数在先行可行域内的 最值问题。 高中遇到的问题:配送运输问

    2024年02月20日
    浏览(39)
  • 数学建模--二次规划型的求解的Python实现

    目录 1.算法流程简介 2.算法核心代码 3.算法效果展示

    2024年02月10日
    浏览(36)
  • 【数学建模】二次规划求解约束极值问题(Python+Gurobi实现)

    目录 1 概述 2 算例及Python代码实现 2.1 算例 2.2 方法1 2.3 方法1求解结果 2.4 方法2         根据约束条件的不同,二次规划可分为等式约束二次规划问题和不等式约束二次规划问题。等式约束二次规划问题即只含有等式约束,常见的解法有直接消去法、广义消去法、拉格朗日

    2024年02月08日
    浏览(63)
  • 二次规划(QP)求解与序列二次规划(SQP)求解非线性规划问题

    二次规划(QP)是求解一种特殊的数学优化问题的过程——具体地说,是一个(线性约束)二次优化问题,即优化(最小化或最大化)多个变量的二次函数,并服从于这些变量的线性约束。二次规划是一种特殊的非线性规划。        序列二次规划(SQP,Sequental Quadratic Programming)算法是

    2024年02月02日
    浏览(40)
  • 【数学建模】优化模型——规划模型

    在数学建模中,优化类问题是很常见的一种问题。这种问题里面通常涉及多个 变量 和 约束条件 ,并需要在这些变量和条件之下 优化某个函数 。最常见的例子就是,“达到最好效果”、“取得最大利润”、“极大降低风险”等等。遇到这类字眼,应首先考虑优化模型求解。

    2024年01月25日
    浏览(39)
  • 数学模型之整数规划(0-1规划)

    常见的规划问题大体四类 1.线性规划 2.非线性规划 3.整数规划 (0 1规划) 4.动态规划 提示: 规划中的变量(部分或全部)限制为整数时,称为整数规划。若在线性规划模型中, 变量限制为整数,则称为整数线性规划。目前所流行的求解整数规划的方法,往往只适 用于整数

    2024年01月19日
    浏览(35)
  • 规划模型Matlab代码

    数学规划是统筹学的一个分支,用来研究:在给定条件下(约束条件),如何按照某一行衡量指标(目标函数)来寻求计划、管理工作中的最优方案。 通俗的讲,就是求目标函数在一定约束条件下的极值问题。 线性规划 非线性规划 整数规划 0-1规划 目标函数f(x)和约束条件均

    2024年02月14日
    浏览(32)
  • 【数学建模】-- 数学规划模型

    概述: 什么是数学规划? 数学建模中的数学规划是指利用数学方法和技巧对问题进行数学建模,并通过数学规划模型求解最优解的过程。数学规划是一种数学优化方法,旨在找到使目标函数达到最大值或最小值的变量取值,同时满足一系列约束条件。 数学规划包括多种不同

    2024年02月12日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包