Lecture3——线性最优化(Linear Optimization)

news2024/12/25 10:26:28

一,本文重点

  • 线性最优化(LP)和标准线性最优化(Standard LP form)的定义
  • 如何将LP转换为Standard LP
  • 用Python解决LP问题
  • 将非线性最优化问题(NLP)转换为LP

二,定义

1,线性最优化
  • 定义

线性最优化问题,或者线性规划(linear programming,缩写:LP)是一个目标函数和所有限制函数(在决策变量中)都是线性的最优化问题。

注意:线性最优化是连续最优化的子集

  • 普遍表达

一个LP问题通常可以写成如下模式:

m1,m2,m3是{1,...,m}的子集,n1,n2,n3是{1,...,n}的子集。

注意:最大化问题与之类似。

  • 紧凑型表达

借助矩阵的知识,让形式更紧凑

在这里A1,A2,A3都是矩阵(维度为m1xn,m2xn,m3xn),b,d,e都是向量,变量x是维度为n的列向量。

2,标准形式(Standard LP form)
  • 定义

标准型通常更系统和紧凑,在不同的课本中对标准形式的定义可能不同,在本系列采用如下形式。

x∈Rn,A是维度为m×n的矩阵,b\in R^{m}

三,将LP转换为Standard LP

1,说明

标准形式主要用于分析,平时解决问题只需要能够便于理解就行,但LP到Standard LP的转换技巧可以帮助我们分析和解决问题

2,技巧和步骤

(1)步骤

  • 首先检查变量范围,Standard LP要求变量非负。
  • 然后检查目标函数,将求最大转换为求最小
  • 最后检查限制条件,将不等式转换为等式

(2)技巧(数学表达)

  • maxx c⊤x → minx −c⊤x
  • Ax ≤b →Ax+s =b,s ≥0
  • Ax ≥b →Ax−s =b,s ≥0
  • xi ≤ 0 →yi =−xi ≥0 free
  • xi → xi = x+ i −x− i ,x+ i ≥ 0,x− i ≥ 0
3,示例

转化为standard LP:

minimize -x1  -2x2

s.t             x1            +s1                    =100

                        2x2         +s2              =200

                 x1 + x2                 +s3       =150

                x1, x2, s1, s2, s3              >=0

四,用Python解决LP问题

1,方案

被用来解决最优化问题的语言有MATLAB,Python,Julia,而一个非常重要的库是CVX。课上教授用的多是MATLAB,不过笨人更习惯Python,所以会用Python来解决课程中的问题。学习步骤如下:

  • 下载cvxpy(Python中的CVX)
  • 学习如何使用
  • 解决问题

2,示例

以前文的例子为例:

使用Python解决:

#import package
import cvxpy as cp

#decision variable
x1=cp.Variable()
x2=cp.Variable()

#constraint
consts=[x1<=100,2*x2<=200,x1+x2<=150,x1>=0,x2>=0]

#construct problem
obj=cp.Maximize(x1+2*x2)
prob=cp.Problem(obj,consts)

#output result
result=prob.solve()
x1_sol=x1.value
x2_sol=x2.value

print("Best result:",result)
print("Best x1:",x1_sol)
print("Best x2:",x2_sol)

'''
Output:
Best result: 249.99999997999043
Best x1: 49.99999998623639
Best x2: 99.99999999687702
'''

五,非线性问题向线性问题的转化。

1,常见的非线性因素
  • 目标函数或限制条件自带最大值最小值函数
  • 目标函数或限制条件包含绝对值函数

对于两种问题有不同的解决方案

2,对于自带最大值最小值的问题
  • 最大化问题

(1)思路

假设变量S小于或等于问题中的min

(2)示例:

原问题:

转换:\Delta \leq t_{j+1}-t_{j}

结果:

  • 最小化问题

(1)思路

假设变量S大于或等于问题中的max

(2)示例

原问题:

转换:

结果:

3,对于绝对值
  • 最小化问题

采用最大值方式,假设变量t,使t大于或等于绝对值。

  • 通用模式(可将绝对值扩展到函数)

假设变量t,使t大于或等于函数。

  • 数学表达范例

minimize\underset{x}{}\sum_{i=1}^{n}f_{i}(x) s.t. x\in \Omega

可以转换成minimize\underset{x,t}{}\sum_{i=1}^{n}t_{i} s.t. x\in \Omega , f_{i}(x)\leq t_{i },\forall i

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1821036.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java多线程面试重点-1

0. 什么是并发&#xff1f;什么是并行&#xff1f; 并发&#xff1a;把时间分成一段一段&#xff0c;每个线程轮流抢占时间段。 如果时间段非常短&#xff0c;线程切换非常快&#xff0c;被称为伪并行。并行&#xff1a;多个线程可以同时运行。 并发与并行造成的影响&#xff…

k8s之kubelet证书时间过期升级

1.查看当前证书时间 # kubeadm alpha certs renew kubelet Kubeadm experimental sub-commands kubeadm是一个用于引导Kubernetes集群的工具&#xff0c;它提供了许多命令和子命令来管理集群的一生周期。过去&#xff0c;某些功能被标记为实验性的&#xff0c;并通过kubeadm a…

vue3 前端验证码-删除最后一个,焦点聚焦在前一个值上,并不会删除值

删除最后一个数字&#xff0c;焦点聚焦在前一个值上&#xff0c;并不会删除值 <inputv-for"(box, index) in boxes":key"index"ref"inputRefs":value"box"input"onInputChange(index)"keyup"onKeyDown($event, inde…

WARNING: pip is configured with locations that require TLS/SSL

在pycharm中运行pip下载软件包遇到该问题&#xff1a;WARNING: pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available 原因&#xff1a;没有安装openssl&#xff1b; 到https://slproweb.com/products/Win32OpenSSL.ht…

u-boot(五) - 启动流程概述

一&#xff0c;XIP设备 一上电&#xff0c;CPU必定从XIP设备得到第1条指令。 XIP设备是指一种可以直接在存储器中执行程序代码的设备&#xff0c;而不需要将代码复制到内存中。XIP的全称是eXecute In Place&#xff0c;即芯片内执行。这类设备包括片内的SRAM、NOR Flash、Boot…

社区论坛圈子软件APP ,提供互动交流、知识共享和专业交流的社交平台。

社区论坛圈子软件APP的开发能够为用户提供一个互动交流的社交平台&#xff0c;促进用户之间的知识分享、交流和互助。本文将突出社区论坛圈子软件APP的前景、作用和特点&#xff0c;以帮助您了解该系统的潜力和优势。 一、前景&#xff1a; 知识共享&#xff1a;社区论坛圈子软…

线程有规律循环打印输出,线程拷贝图片运用

1&#xff1a;线程打印循环&#xff08;保证循环顺序输出&#xff09; 使用互斥锁和条件变量实现&#xff1a; #include <stdio.h>#include <pthread.h>#include <unistd.h>#include <stdlib.h>#include <string.h>#include <semaphore.h>…

【SAP-ABAP】-权限批导-批量给某个角色导入事务码权限

需求&#xff1a;SAP期初上线的时候&#xff0c;业务顾问经常会遇到批量创建角色和分配角色权限的情况 岗位需求&#xff1a;一般是业务顾问定义权限&#xff0c;BASIS进行后期运维&#xff0c;今天讲两个批导功能&#xff0c;方便期初上线 主要函数&#xff1a;PRGN_READ_ROLE…

群体优化算法----多乌鸦搜寻算法介绍,找多目标函数组解,Pareto前沿

介绍 乌鸦搜寻算法&#xff08;Crow Search Algorithm&#xff0c;CSA&#xff09;是一种新型的群体智能优化算法&#xff0c;其灵感来源于乌鸦的行为特性&#xff0c;尤其是乌鸦在食物搜寻和藏匿过程中的智能行为。乌鸦是一种高度聪明的鸟类&#xff0c;它们展示出复杂的社会…

html实现粘贴excel数据,在页面表格中复制

录入数据时&#xff0c;有时候需要把excel中的数据一条条粘贴到页面中&#xff0c;当数据量过多时&#xff0c;这种操作很令人崩溃。本篇文章实现了从excel复制好多行数据后,可在页面粘贴的功能 具体实现代码 <!DOCTYPE html> <html lang"en"> <head…

自适应巡航控制技术规范(简化版)

自适应巡航控制技术规范(简化版) 1 系统概述2 功能需求3 性能需求4 功能激活条件5 功能抑制条件6 系统局限性1 系统概述 ACC 自适应巡航系统可自动控制纵向跟车距离,减轻驾驶员的工作量,即驾驶员无需频繁的踩制动和油门便可完成部分的驾驶任务,但责任主体仍然是驾驶员,驾…

OrangePi AIpro测评:性能、应用与开发者体验解析

一、OrangePi AIpro介绍 OrangePi AIpro(8T)采用昇腾AI技术路线&#xff0c;具体为4核64位处理器AI处理器&#xff0c;集成图形处理器&#xff0c;支持8TOPS AI算力&#xff0c;拥有8GB/16GB LPDDR4X&#xff0c;可以外接32GB/64GB/128GB/256GB eMMC模块&#xff0c;支持双4K高…

SPI转四串口芯片CH9434的设计

一、CH9434的介绍 CH9434 是一款SPI转四串口转接芯片&#xff0c;提供四组全双工的9线异步串口&#xff0c;用于单片机/嵌入式系统扩展异步串口。CH9434包含四个兼容16C550的异步串口&#xff0c;最高支持4Mbps波特率通讯。最多支持25 路GPIO&#xff0c;提供半双工收发自动切换…

Rust基础学习-ModulesPackage

在Rust中&#xff0c;模块有助于将程序分割成逻辑单元&#xff0c;以提高可读性和组织性。一旦程序变得更大&#xff0c;将其拆分为多个文件或命名空间非常重要。 模块有助于构建我们的程序。模块是项目的集合&#xff1a;包括函数、结构体甚至其他模块。 Module 定义模块 在…

嵌入式硬件VS软件,到底哪个更难?

在嵌入式系统开发中&#xff0c;硬件和软件是密不可分的两个方面。但是&#xff0c;究竟是硬件开发更具挑战性&#xff0c;还是软件开发更难以应对呢&#xff1f;本文将就这一问题展开讨论&#xff0c;探究嵌入式硬件和软件在开发过程中的各种挑战与特点。 一、硬件开发&#…

12.实战私有数据微调ChatGLM3

实战私有数据微调ChatGLM3 实战私有数据微调ChatGLM3实战构造私有的微调数据集基于 ChatGPT 设计生成训练数据的 Prompt使用 LangChain GPT-3.5-Turbo 生成训练数据样例训练数据解析、数据增强和持久化存储自动化批量生成训练数据集流水线提示工程&#xff08;Prompt Engineer…

HTTPS请求阶段图解分析

HTTPS请求阶段分析 请求阶段分析 请求阶段分析 一个完整、无任何缓存、未复用连接的 HTTPS 请求需要经过以下几个阶段&#xff1a; DNS 域名解析、TCP 握手、SSL 握手、服务器处理、内容传输。 一个 HTTPS 请求共需要 5 个 RTT 1 RTT&#xff08;域名解析&#xff09; 1 RTT…

element table 点击某一行中按钮加载

在Element UI中&#xff0c;实现表格&#xff08;element-table&#xff09;中的这种功能通常涉及到数据处理和状态管理。当你点击某一行的按钮时&#xff0c;其他行的按钮需要动态地切换为加载状态&#xff0c;这可以通过以下步骤实现&#xff1a; 1.表格组件&#xff1a;使用…

NodeClub:NodeJS构造开源交流社区

NodeClub&#xff1a; 连接每一个想法&#xff0c;NodeClub让社区更生动- 精选真开源&#xff0c;释放新价值。 概览 NodeClub是一个基于Node.js和MongoDB构建的社区系统&#xff0c;专为开发者和社区爱好者设计。它提供了一套完整的社区功能&#xff0c;包括用户管理、内容发…

基于 Nginx Ingress + 云效 AppStack 实现灰度发布

作者&#xff1a;子丑 场景简介 灰度发布是降低生产部署风险&#xff0c;提升线上服务稳定性的重要手段&#xff0c;这在当前快速迭代的软件研发中尤为重要。相对于 K8s 默认的滚动部署或者简单的 Pod 分批&#xff0c;基于流量特征的灰度发布验证更精准&#xff0c;风险更低…