数学建模入门事件簿——初识线性规划

本人是21届的大一新生,响应时代号召成为数学建模大军的一员,希望在这里能以一种类似于日记的形式和大家分享数学建模的经历,共同成长,共同进步。

在司守奎先生的著作里,线性规划被充作开启数学建模大门的钥匙,究其原因,是在历年的教育改革中,不少本属于高等数学范畴内的知识已经下放到中学课本中,其中便以线性规划最为易于理解。而笔者也会在这篇文章中与大家分享关于线性规划的一些知识。

利用线性规划进行求解的题目都有一个共同的特点——最值。无论是max还是min都属于线性规划的范畴,譬如在商业运营中所需要得到的最低损耗或最高利润,都可以用线性规划的方法进行解决。

而确定了某个问题需要用到线性规划之后,首先要解决的是找出决策变量,也就是问题中要确定的未知量,如某种商品的产量、通过不同交通方式运输的贸易量等等,我们用xi(i=1,2……,n)来表示。在得到决策变量后,我们不难发现,由于行业规范、技术限制等种种原因,在实际生活中决策变量不得不满足一系列等式或不等式,也就是所谓的约束条件。在以上两点均达成后,便可以根据找到的条件来构造一个线性的目标函数,进行最值的求解。

分析完案例之后,就需要使用matlab或python或者其他你熟悉的求解软件来求解,笔者在这里使用的是python(编译器用的pycharm)。

无论是使用matlab还是python,都先需要把数学问题化作标准形式,如下图:

数学建模入门事件簿——初识线性规划_第1张图片

 这里进行一下简单说明,c、x、b、beq、lb、ub都为列向量,其中c为价值向量;Aeq、A为等式约束和不等式约束对应的矩阵。

下面是对应的代码,为了保证可行性和合理性,笔者在这里引用了一道例题的参数

数学建模入门事件簿——初识线性规划_第2张图片

数学建模入门事件簿——初识线性规划_第3张图片 

 

说明:(1)这里导入了scipy库与其优化器模块optimize以及numpy库来进行计算

(2)数据类型都是数组(array)

(3)使用了linprog函数求解最小值

后话:文章是笔者第一次写博客,如果有什么纰漏之处请多包涵,谢谢大家。

你可能感兴趣的:(线性代数,算法)