线性规划的典型例题:投料问题

线性规划的典型例题2

提前说明:本文为博主原创文章,未经原作者允许不得转载本文内容,否则将视为侵权;需要转载或者引用本文内容请注明来源及原作者,对于不遵守此声明或者其他违法使用本文内容者,本人依法保留追究权。

例题2:投料问题

问题如下:

在这里插入图片描述

防雷:此博只做线性规划问题中投料问题的笔记,也就是第一问,第二问是非线性规划的选址问题,这个的笔记+程序代码,在下一博

第一问:

(一) 问题分析

我觉得微软雅黑这个字体emmmm不太喜欢,我直接放我自己写的PPT吧,图片形式:
在这里插入图片描述在这里插入图片描述1. 目标函数:
因为他让吨千米数最少,即让料场 i 到工地 j 的距离*xij 最小,而 i 只有两个,j 有6个,所以在写完 距离×吨数 之后,需要在前面加上求和符号,i 从1到2,j 从1到6;
在这里插入图片描述
2. 约束条件:

1).等式约束:
在这里插入图片描述在此图中,工地 I 的水泥日需求量来源于料场A、B的运送量之和,x11+x21=d1,其他的同理。而日需求量是谁的,是工地的,所以我们可以固定住工地 j 。用一句话表述:对于工地 j 来说,他的水泥需求来自2个料场。所以,我们可以直接用下式来表示:
在这里插入图片描述
2).不等式约束:
因为实际情况中,日存储量一定是大于或者等于所有工地的日需求量的。那日储存量是谁的,是料场的,所以我们可以把料场 i 固定住。用一句话表述:对于料场 i 来说,他的存储量要大于或者等于运往的6个工地水泥总量,我们用下式表示:
在这里插入图片描述
3).上下界约束
肯定是运送的水泥量大于或者等于0,下界是0,上界正无穷。
在这里插入图片描述3. Matlab线性规划问题的标准型
在这里插入图片描述

(二)程序代码

6*2=12个决策变量,而以我们一开始xij双下标形式去定义决策变量的话是不符合Matlab规划问题决策变量的标准型的,所以我们需要做转换:

双下标决策变量单下标决策变量
x11x1
x12x2
…………
x16x6
x21x7
x22x8
…………
x26x12

不等式约束如下:
在这里插入图片描述等式约束如下:
在这里插入图片描述

代码如下:

% Matlab求解例题2
%% 例题2:投料问题
clear;clc
format long g
a = [5 2];b = [1 7];% 料场横坐标放a矩阵,纵坐标放b矩阵
x = [1.25 8.75 0.5 5.75 3 7.25];% 工地横坐标放x矩阵
y = [1.25 0.75 4.75 5 6.5 7.25];% 工地纵坐标放y矩阵
% 系数矩阵
C = [];
for i=1:2
    for j=1:6
        C = [C;sqrt((a(i)-x(j))^2+(b(i)-y(j))^2)];
    end
end
% 不等式约束
A = zeros(2,12);
A(1,1:6)=1;A(2,7:12)=1;
b = [20 20]';
% 等式约束
Aeq = zeros(6,12);
for i=1:6
    Aeq(i,i)=1;Aeq(i,i+6)=1;
end
beq = [3 5 4 7 6 11]';
% 上下界约束
lb = zeros(12,1);
% 使用命令求解
[x fval] = linprog(C,A,b,Aeq,beq,lb)

运行结果如下:
在这里插入图片描述因为一开始定义的是单下标决策变量,为了方便查看算的各决策变量的数值(弄成双下标决策变量),运行下面一行代码,将x以6行2列的形式展示:

x = reshape(x,6,2)

得到下面结果:
在这里插入图片描述

第二问:

因为不是线性规划问题,而是非线性规划问题,所以放下一篇博客了,一天两博,大概是头发比较多给定我的勇气吧,好了,发表!

最后:本文为博主原创文章,如果对您有帮助的话,记得点个赞啊,有问题的话,评论区可以批评指正~对此,小女子感谢不尽,一起加油啊,数模秃子们!

©️2020 CSDN 皮肤主题: 1024 设计师:上身试试 返回首页