1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

数理計画(MATLAB①)

Last updated at Posted at 2021-08-21

MATLABで数理計画(最適化)を行う場合、”Optimize ToolBox”必要になる。
MATLABで”EXCEL①”で記載したモデルで求解してみる。

【問題:条件】
  一週間の製造計画について考えます。(土曜日から金曜日)
  出荷は翌日朝から実施するため、前日に必要量を製造する。
  翌週のために金曜日の貯蔵量を守る。

  目的:製造量を最小化
  説明変数:製造量
  制約条件:
   ・製造量 ≦ 一日の最大製造量
   ・製造量 ≧ 一日の最小製造量
   ・貯蔵量 ≦ 貯蔵できる最大量
   ・貯蔵量 ≧ 翌日の出荷量
   ・最終貯蔵量 ≧ 翌週のための貯蔵量

  貯蔵量 = 前日の貯蓄量+製造量-出荷量
まずは、説明変数を定義しますが、EXCELの時のように自動計算(貯蔵量)はしてくれないので、貯蔵量も説明変数として考えます。
 ①貯蔵量            Xhld  
 ②製造量            Xgen

MatLABでは、連続した配列で定義するため上記は”Xという名前の配列”として考える。
 Xhld → X[1:7]
 Xgen →  X[8:14]

下記はパラメータ(固定値)として考えます。
 ①出荷量            Output
 ②前週金曜日の貯蔵量      Before      
 ③来週の金曜日の貯蔵予定量   After         
 ④最大製造量          MaxGen  
 ⑤最小製造量          MinGen  
 ⑥最大貯蔵量          MaxHld  
本来であれば、引数などで汎用性を持たせるのが普通だが、ここでは固定とする。

Mファイル(スプリプ)として作成します。
我流のため、良い書き方ではないかもしれません。

sample.m
%  Xhld   1-7
%  Xgen   8-14

%% 固定データの定義
Output = [100, 150, 0, 300, 0, 400, 200];
Before = 200;
After = 100;
MaxGen = 300;
MinGen = 0;
MAXHld = 500;

%% 上下限範囲設定
MAX(1:14,1) = zeros(14,1);
MAX(1:7,1) = MAXHld;
MAX(8:14,1) = MaxGen;
MIN(1:14,1) = zeros(14,1);
MIN(1:6,1) = 0;
MIN(7,1) = After;
MIN(8:14,1) = 0;

%% 目的関数
F=zeros(14,1);
F(8:14,1) = 1

%% 整数制約
INT=1:14;

%% 等式制約
eqA=zeros(7,14);
eqB=zeros(7,1);

% 貯蔵量制約
eqA(1,1) = -1;
eqA(1,8) = 1;
eqB(1)=Output(1) - Before;

for c=2:7
    eqA(c,c) = -1;
    eqA(c,7+c) = 1;
    eqA(c,6+c) = 1;
    eqB(c)=Output(c);
end

%% 不等式制約
A=zeros(6,14);
B=zeros(6,1);

% 翌日の出荷量制約
for c=1:6
    A(c,c) = -1;
    B(c) = -Output(c+1); 
end

x = intlinprog(F,INT,A,B,eqA,eqB,MIN,MAX);

実行すると
image.png


image.png

上側が貯蔵量、下側が製造量

EXCELの場合と最小値は同じですが、説明変数の値が異なることが分かります。

image.png

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?