数理最适化笔记1

  • 1.1数理最适化是什么?

实际的问题通过数学公式表达出来,并且找到最优解的一种方叫做数理最适化。

数理最适化问题通常是 目的函数 ,和制约条件组成。

数理最适化问题有很多,最基本的叫做 线性最适化问题

eg. minimize 3x+4y

s.t. 5x+6y>=10

7x+5y>=5

x,y>=0

  • 1.2线性最适化问题

首先是说明什么是线性最适化问题,太简单了,跳过。

解决方法,首先是(1)import开始。(2)定义模型,比如名字。(3)定义x,y。

(4)定义上限,下限。(5)输入制约公式。(6)感觉像是输入矩阵。(7)左边的L1<右边的数字。(8)完成所有制约公式。(9)输入目的函数。

  • 1.3整数最适化问题

线性最适化问题加个整数制约条件就行,比如鸡兔同笼问题我觉得可以用线性最适化问题解决。

  • 1.4运输问题

古典的线性最适化问题。比如你要向5个顾客配送产品,有3个工厂,并且已知工厂的生产量,顾客的运输费用,顾客的需要量,你如何选择,总运费最小。

解决问题首先,定义线性最适化模型。

顾客数为n,工厂为m,顾客i=1,2,...,n.工厂j=1,2,...,m有番号表示。另外,顾客的集合I={1,2,...,n},工厂的集合J={1,2,...,m},顾客i的需求量为di,顾客i和工厂j之间,每1单位配送的运费为cij,工厂j的容量为Mj。

接下来定义连续变数

xij = 工厂j到顾客i的运送量。

最后结合调查,和定义的数学公式,整理结合一下

|-------|----|-----|-----|-----|-----|------|
| 顾客i | 1 | 2 | 3 | 4 | 5 | |
| 需求量di | 80 | 270 | 250 | 160 | 180 | |
| 工厂j | 运输费用Cij ||||| 容量Mj |
| 1 | 4 | 5 | 6 | 8 | 10 | 500 |
| 2 | 6 | 4 | 3 | 5 | 8 | 500 |
| 3 | 9 | 7 | 4 | 3 | 4 | 500 |

公式 minimize Zi属于I Zj属于J cijxij

s.t. Zj属于J xij = di Ai属于J

Zi属于I xij <=Mj Aj属于J

xij >=0 Ai属于I;Aj属于J

对于上面的数学公式,目的函数是求运送费用的最小化,为了满足制约1,制约2为工厂容量。

为了编程解决此问题,(1)输入,需求di,运送费用cij,容量Mj。(2)输入顾客的编号I,工厂的编号J。(3)输入cij,这个应该是个5行3列的矩阵。(4)生成空集x。(5)2个for循环ij,意思是遍历ij矩阵。(6)然后xij加名字。(7)加制约条件。

  • 1.5双对问题

比如针对上面的问题,你要扩张工厂,怎么消减扩建的费用。另外,顾客追加订单的话,如果收费呢。

  • 1.6多品种运输问题

和之前的问题一样,就是种类多了。

xijk = 工厂j到顾客i运输的k类商品的量

顾客i中需要k的量为dik,工厂j配送到顾客i的种类k的每1单位配送费用为cijk。

接下来多品种运输问题数学公式化

minimize Zi属于I Zj属于J Zk属于K cijk xijk

s.t. Zj属于J xijk=dik Ai属于I;k属于K

Zi属于I Zk属于K xijk<=Mj Aj属于J

xijk >=0 Ai属于I;J属于J;K属于K

制约1表示满足各制品的需求,制约2工厂容量大于配送量。

  • 1.7混合问题

材料配比的。

  • 1.8分数最适化
  • 1.9背包问题
  • 1.10营养问题

基本上差距不大。

相关推荐
客梦8 分钟前
Java 道路信息系统
java·笔记
一只侯子9 小时前
Face AE Tuning
图像处理·笔记·学习·算法·计算机视觉
whale fall12 小时前
【剑雅14】笔记
笔记
星空的资源小屋13 小时前
跨平台下载神器ArrowDL,一网打尽所有资源
javascript·笔记·django
Xudde.13 小时前
Quick2靶机渗透
笔记·学习·安全·web安全·php
AA陈超14 小时前
Git常用命令大全及使用指南
笔记·git·学习
愚戏师15 小时前
Python3 Socket 网络编程复习笔记
网络·笔记
降临-max15 小时前
JavaSE---网络编程
java·开发语言·网络·笔记·学习
大白的编程日记.16 小时前
【计算网络学习笔记】MySql的多版本控制MVCC和Read View
网络·笔记·学习·mysql
IMPYLH17 小时前
Lua 的 require 函数
java·开发语言·笔记·后端·junit·lua