Movatterモバイル変換


[0]ホーム

URL:


はてラボはてな匿名ダイアリー
ようこそ ゲスト さんログインユーザー登録
< anond:20250204123814 |anond:20250204123554 >

2025-02-04

線型計画法の例題

ある会社が2つの製品(XとY)を2台の機械(AとB)を使って製造しています。Xの1単位生産するには、機械Aで50分、機械Bで30分の処理時間必要です。Yの1単位生産するには、機械Aで24分、機械Bで33分の処理時間必要です。

今週の始めの時点で、在庫にはX製品が30単位、Y製品が90単位あります。今週の機械Aの利用可能な処理時間は40時間機械Bは35時間予測されています

今週のX製品需要は75単位、Y製品需要は95単位予測されています会社方針は、週末時点でのXとY製品在庫単位数の合計を最大化することです。

問題

1: 今週、各製品をどれだけ製造するかを決定する問題線形計画問題として定式化してください。

2: この線形計画問題をglpkを用いて解いてください。

回答

問題1:線形計画問題の定式化

決定変数:

x: 今週製造するX製品単位

y: 今週製造するY製品単位

目的関数:

最大化 Z = (x + 30 - 75) + (y + 90 - 95) = x + y - 50

※週末時点での在庫単位数の合計を最大化

制約条件:

1.機械Aの処理時間制約: 50x +24y ≤2400 (40時間 =2400分)

2.機械Bの処理時間制約: 30x +33y ≤ 2100 (35時間 = 2100分)

3. X製品需要制約: x ≥ 45 (需要75 -在庫30 = 45)

4. Y製品需要制約: y ≥ 5 (需要95 -在庫90 = 5)

5. 非負制約: x ≥ 0, y ≥ 0

問題2: GLPKを用いた解法

GLPKで解くために、以下のようなモデルファイル(例:model.mod)を作成します:

/* 決定変数 */var x&gt;= 45;var y&gt;= 5;/*目的関数 */maximize Z: x + y - 50;/* 制約条件 */s.t. machine_A: 50*x +24*y &lt;=2400;s.t. machine_B: 30*x +33*y &lt;= 2100;end;

このモデルファイル使用して、コマンドラインで以下のコマンドを実行します:

glpsol --modelmodel.mod -o solution.txt

GLPKが問題を解いた結果は以下です。

Problem:modelRows:       3Columns:    2Non-zeros:  6Status:     OPTIMALObjective:  Z = 1.25 (MAXimum)   No.   RownameSt   Activity     Lower bound   Upper bound    Marginal------ ------------ -- ------------- ------------- ------------- -------------     1 Z            B          51.25                                  2 machine_A    NU24002400     0.0416667      3 machine_B    B        1556.25                        2100    No. ColumnnameSt   Activity     Lower bound   Upper bound    Marginal------ ------------ -- ------------- ------------- ------------- -------------     1 xNL            45            45                    -1.08333      2 y            B           6.25             5               Karush-Kuhn-Tucker optimality conditions:KKT.PE:max.abs.err = 4.55e-13on row 2max.rel.err =9.47e-17on row 2        High qualityKKT.PB:max.abs.err = 0.00e+00on row 0max.rel.err = 0.00e+00on row 0        High qualityKKT.DE:max.abs.err = 0.00e+00on column 0max.rel.err = 0.00e+00on column 0        High qualityKKT.DB:max.abs.err = 0.00e+00on row 0max.rel.err = 0.00e+00on row 0        High qualityEnd of output

以下のような最適解が得られます

x = 45 (X製品生産量)

y = 6.25 (Y製品生産量)

Z = 1.25 (週末時点での余剰在庫数)

この結果から会社は今週、X製品を45単位、Y製品を6.25単位製造するべきであることがわかります。これにより、週末時点での余剰在庫数は1.25単位となり、最大化されます

注意:実際の生産では、Y製品生産量を6単位に切り下げるか7単位に切り上げる必要があるかもしれません。

Permalink |記事への反応(0) | 12:39

このエントリーをはてなブックマークに追加ツイートシェア

記事への反応 -

記事への反応(ブックマークコメント)

全てのコメントを見る

人気エントリ

注目エントリ

ログインユーザー登録
ようこそ ゲスト さん
Copyright (C) 2001-2025 hatena. All Rights Reserved.

[8]ページ先頭

©2009-2025 Movatter.jp