python求解带约束的优化问题

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

带约束的优化问题可被定义为:
python求解带约束的优化问题
在python中,可以使用scipyoptimize包进行求解,具体求解函数为linprog,下面举例说明求解方法:

假设问题被定义为:
python求解带约束的优化问题
首先,求解最大值问题,我们可以通过取负转换为求解最小值问题,包括不等式约束也是如此,那么该问题的python求解代码如下:

import numpy as np
from scipy.optimize import linprog
fun = np.array([-29.0, -45.0, 0.0, 0.0])
A_ub = np.array([[1.0, -1.0, -3.0, 0.0],
                [-2.0, 3.0, 7.0, -3.0]])
b_ub = np.array([5.0, -10.0])
A_eq = np.array([[2.0, 8.0, 1.0, 0.0],
                [4.0, 4.0, 0.0, 1.0]])
b_eq = np.array([60.0, 60.0])
x0_bounds = (0, None)
x1_bounds = (0, 5.0)
x2_bounds = (-np.inf, 0.5)  # +/- np.inf can be used instead of None
x3_bounds = (-3.0, None)
bounds = [x0_bounds, x1_bounds, x2_bounds, x3_bounds]
result = linprog(fun, A_ub=A_ub, b_ub=b_ub, A_eq=A_eq, b_eq=b_eq, bounds=bounds)
print(result.message)

上述代码会显示:

The problem is infeasible. (HiGHS Status 8: model_status is Infeasible; primal_status is At lower/fixed bound)

这说明问题无解,重新调整x1边界范围后,继续执行:

x1_bounds = (0, 6)
bounds = [x0_bounds, x1_bounds, x2_bounds, x3_bounds]
result = linprog(c, A_ub=A_ub, b_ub=b_ub, A_eq=A_eq, b_eq=b_eq, bounds=bounds)
print(result.message)
print(result.x)
print(result.fun)

终端显示:

Optimization terminated successfully.
[ 9.41025641 5.17948718 -0.25641026 1.64102564]
-505.97435889013434

这说明问题求解成功,当 x 1 = 9.41025641 , x 2 = 5.17948718 , x 3 = − 0.25641026 , x 4 = 1.64102564 x_1=9.41025641,x_2=5.17948718,x_3=-0.25641026,x_4=1.64102564 x1=9.41025641,x2=5.17948718,x3=0.25641026,x4=1.64102564 目标函数取最大值,最大值为 505.97435889013434 505.97435889013434 505.97435889013434.

注意将最大值优化问题转换为最小值优化问题时,结果要再取反!


参考文献:文章来源地址https://www.toymoban.com/news/detail-474870.html

  • https://docs.scipy.org/doc/scipy/tutorial/optimize.html#linear-programming-linprog

到了这里,关于python求解带约束的优化问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • scipy求解约束无导数优化问题:SHGO算法

    SHGO,即simplicial homology global optimize,来自2018年的文章,是一种基于组合拓扑学的优化方法,是一个非常新的算法。 这种算法适用于CDFO(constrained deriviate free optimisation)问题,所谓无导数优化,就是把目标函数当作黑箱子处理,而无法获取其一阶导数,自然也不能通过导数来判

    2024年02月14日
    浏览(49)
  • 详细介绍如何使用Ipopt非线性求解器求解带约束的最优化问题

       本文中将详细介绍如何使用Ipopt非线性求解器求解带约束的最优化问题,结合给出的带约束的最优化问题示例,给出相应的完整的C++程序,并给出详细的解释和注释,以及编译规则等    一、Ipopt库的安装和测试    本部分内容在之前的文章《Ubuntu20.04安装Ipopt的流程介

    2024年02月08日
    浏览(75)
  • 机器学习笔记之最优化理论与方法(七)无约束优化问题——常用求解方法(上)

    本节将介绍 无约束优化问题 的常用求解方法,包括 坐标轴交替下降法、最速下降法 。 本节是对优化算法(十~十七)最速下降法(梯度下降法)的理论补充,其中可能出现一些定理的 证明过程 这里不再赘述,并在相应位置 附加链接 。 从本节开始,将介绍 四大类 无约束优化问

    2024年02月10日
    浏览(52)
  • 机器学习笔记之最优化理论与方法(九)无约束优化问题——常用求解方法(下)

    上一节介绍了 牛顿法、拟牛顿法 。本节将继续以 拟牛顿法 为基础,介绍 DFP , BFGS text{DFP},text{BFGS} DFP , BFGS 方法 。 经典牛顿法缺陷与修正牛顿法 关于 经典牛顿法 中关于 下降方向 D k ( k = 1 , 2 , ⋯   , ∞ ) mathcal D_k(k=1,2,cdots,infty) D k ​ ( k = 1 , 2 , ⋯ , ∞ ) 的 数学符号 表

    2024年02月09日
    浏览(54)
  • 利用 MATLAB 编程实现乘子法求解约束最优化问题。 拟 Newton 法

    1、画出 PH 法的算法流程图; 2、MATLAB 编写 PH 法求解约束优化问题的函数,无约束子问题用精确一 维搜索的拟 Newton 法((函数式 M 文件,精度设为 epson 可调);编写程序(命 令式 M 文件),调用 PH 法,求解如下问题:   初始点取(10,10),按教材 P217,例 12 取不同的参

    2024年02月11日
    浏览(51)
  • 通用的改进遗传算法求解带约束的优化问题(MATLAB代码精讲、实际工程经验分享)

    在对多约束、非线性问题的求解上,传统线性规划等方法往往无法有效求解(求解时间过长、无法处理非线性约束等。 进化算法是一类强有力的工具,已经在多个领域有了较为成功的应用。然而,在利用遗传算法、粒子群等等进化算法求解实际的优化问题时,还存在许多困难

    2023年04月19日
    浏览(87)
  • Python中scipy.optimize求解有无约束的最优化算法举例(附代码)

    目录 算法需要输入的参数 算法输出的优化结果 优化算法应用举例 优化算法举例代码  优化算法输出结果  其他优化问题举例 最优化求解问题标准格式如下:  Python中scipy库有很多包,其中一个就是scipy.optimize.minimize求解有无约束的最小化问题。 原文请参考: scipy.optimize.m

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

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

    2024年02月08日
    浏览(70)
  • 约束优化求解之罚函数法

    罚函数法 本部分考虑约束优化问题: min ⁡ f ( x ) s . t . x ∈ χ (1) begin{aligned} min f(x) \\\\ s.t. xinchi end{aligned} tag{1} min f ( x ) s . t . x ∈ χ ​ ( 1 ) 这里 χ ⊂ R n chisubsetmathbb{R}^n χ ⊂ R n 为问题的可行域。与无约束问题不同,约束优化问题中自变量 x x x 不能任意取值,这导致

    2023年04月19日
    浏览(33)
  • 遗传算法求解车辆路径优化问题VRP(Python代码实现)

    学会了前面两篇遗传算法,但是那都是针对抽象的数学问题求解的,那么应用到现实中的实际问题中,我们又该怎样把遗传算法套进去呢,然后我第一个接触到的问题就是车辆路径优化问题VRP,当然也是找到了一篇比较好的文章,物流管理论文实现:基于遗传算法的带时间窗

    2024年01月18日
    浏览(53)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包