Excelで整数線形計画法を解く方法|ソルバーを使った簡単な手順を徹底解説
この記事では、Excelで整数線形計画法(Integer Linear Programming)を解く方法を詳しく解説します。Microsoft Excelでは、標準搭載されている「ソルバー」アドインを活用することで、整数線形計画問題の最適解を素早く求めることができます。
本記事では、初心者の方でも迷わず作業できるよう、手順を一つひとつ丁寧に説明していきます。記事の後半では、混合整数線形計画法(Mixed Integer Linear Programming)の具体的な解き方の例もご紹介しますので、ぜひ最後までお読みください。
練習用ファイルのダウンロード
この記事で使用する練習用ブックは、こちらからダウンロードできます。
整数線形計画法とは?
整数線形計画法とは、変数が整数値であるという条件のもとで、線形の目的関数と制約式から構成される数学的な最適化手法です。線形計画法を活用することで、与えられた制約条件下において、問題の最小値または最大値を求めることができます。
限られたリソースを最も効率的に配分するための意思決定ツールとして、生産計画や物流、予算配分など、さまざまなビジネスシーンで活用されています。
すべての線形計画法には、次の3つの主要な要素が含まれます。
- 決定変数: 目的関数を最小化または最大化するために決定する変数です。
- 目的関数: 決定変数と結果(利益・コストなど)の関係を表す関数です。この関数の値を最大化または最小化することが目標となります。
- 制約条件: 実行可能な解が満たすべき条件を表す関数です。
なお、本記事では整数線形計画法に加えて、連続変数と整数変数が混在する混合整数線形計画法の例も後半で取り上げます。
Excelで整数線形計画法を解く手順
ここからは、以下の問題を例に、実際の手順を段階的に説明します。まずは問題文をよく読み、制約条件と目的関数を導き出すところから始めましょう。
【問題】
ある機械を使用して、2種類の互換性のある製品を生産するとします。機械の設定Aでは、1日あたり最大製品1を20単位、製品2を10単位まで生産できます。一方、設定Bに切り替えると、1日あたり最大製品1を12単位、製品2を25単位まで生産可能です。市場調査によると、両製品の合計需要は1日あたり最大35単位です。製品1と製品2の単位あたり利益はそれぞれ$10と$12であるとき、どちらの機械設定を選ぶべきでしょうか?
STEP 1:問題を分析してデータセットを作成する
- まずは、与えられた整数線形計画問題を理解し、内容を慎重に分析します。
- 問題を分析すると、以下のような要素が見えてきます。
決定変数:
- X1: 製品1の生産数量
- X2: 製品2の生産数量
- Y: 設定Aを選んだ場合は 1、設定Bを選んだ場合は 0
目的関数:
利益の合計を最大化するため、目的関数は次のようになります。
Z = 10X1 + 12X2
制約条件:
問題文からは主に3つの制約条件が導き出せます。
- X1 + X2 ≤ 35
市場調査により、両製品の合計需要は1日あたり最大35単位であるためです。 - X1 − 8Y ≤ 12
これは製品1に関する制約条件です。 - X2 + 15Y ≤ 25
これは製品2に関する制約条件です。 - Y = {0, 1}
Yの値は0または1のいずれかになります。 - X1, X2 ≥ 0
生産数量が負になることはありません。
- 続いて、これらの制約条件・目的関数・変数を踏まえて、下図のようなデータセットを作成します。必要に応じて内容は自由に変更してください。

STEP 2:Excelでソルバーアドインを有効にする
- 次に、Excelでソルバーアドインを読み込みます。すでに有効になっている場合は、STEP 3へ進んでください。
- まず、リボンの「ファイル」タブをクリックします。

- 画面左下にある「オプション」を選択すると、「Excelのオプション」ウィンドウが開きます。

- ウィンドウ内で「アドイン」を選択します。
- 下部の「管理」ボックスで「Excelアドイン」を選び、「設定」をクリックします。
- 「アドイン」ダイアログボックスが表示されます。

- 「ソルバー アドイン」にチェックを入れ、「OK」をクリックします。

- これで、「データ」タブの「分析」グループに「ソルバー」が表示されるようになります。

STEP 3:制約式と目的関数の係数を入力する
- 続いて、データセットに制約条件と目的関数の内容を入力していきます。
- ここでは、各制約式および目的関数の係数を入力するのがポイントです。
- 最初の制約条件は X1 + X2 ≤ 35 です。これは、設定Aを選択した場合、両製品の合計が35以下でなければならないことを意味します。
- したがって、X1の係数は 1、X2の係数も 1 となります。
- また、この式は設定Aを表すため、Yの係数は 1 です。
- 記号は ≤、上限値は 35 です。

- 同じ要領で、残りの制約条件についても係数をすべて入力します。

- 次に、セルE10を選択し、以下の数式を入力します。
=SUMPRODUCT($B$6:$D$6,B10:D10)

この数式では、SUMPRODUCT関数を使って、決定変数と対応する制約の係数を掛け合わせ、その積を合計しています。具体的には、セルB6×セルB10、セルC6×セルC10、セルD6×セルD10を計算し、それらをすべて足し合わせた結果が表示されます。
- Enterキーを押したら、フィルハンドルを下方向へドラッグして数式をコピーします。

- 続いて、目的関数の係数をセルB16〜C16に入力します。
- 今回の目的関数は Z = 10X1 + 12X2 なので、係数は10と12です。

- さらに、セルE16を選択し、以下の数式を入力します。
=SUMPRODUCT($B$6:$D$6,B16:D16)

- Enterキーを押すと、係数と数式の入力が完了したデータセットは下図のようになります。

STEP 4:ソルバーのパラメータを設定する
- 「データ」タブを開き、「分析」グループの「ソルバー」をクリックします。「ソルバー パラメーター」ウィンドウが開きます。

- 「目的値の設定」ボックスには、目的関数の値が入るセルを指定します。
- ここでは $E$16 を入力します。
- 今回は利益の最大値を求めたいので、「最大」を選択します。
- 「変数セル」には、決定変数が格納されている $B$6:$D$6 を指定します。

STEP 5:制約条件を追加する
- 次に、制約条件を追加します。変数がバイナリ(0か1)か整数か、そして制約式の関係性を指定する必要があります。
- 「追加」ボタンをクリックすると、「制約の追加」ダイアログボックスが開きます。

- 「制約の追加」ウィンドウで、「セル参照」ボックスに $D$6 を入力し、プルダウンメニューから bin(バイナリ) を選択します。
- セルD6にはYの値(0または1)が入るため、バイナリ数値として指定するのが適切です。
- 「OK」をクリックして進みます。

- 再び「追加」をクリックします。

- 今度は、「セル参照」に $E$10:$E$12、プルダウンから ≤ を選択し、「制約」ボックスに =$G$10:$G$12 を入力します。
- 「OK」をクリックします。

- さらに、「ソルバー パラメーター」ウィンドウで「追加」をクリックします。

- 「セル参照」に $B$6:$C$6 を入力し、プルダウンメニューから int(整数) を選択します。
- セルB6とC6には、整数であるX1とX2の値が格納されるためです。
- 再度「OK」をクリックします。

STEP 6:計算方法を選択する
- 「解法の選択」セクションで Simplex LP を選択し、「解決」をクリックします。
- このとき、「制約されていない変数を非負にする」にチェックが入っていることを必ず確認してください。

- 「解決」をクリックすると、「ソルバー結果」ウィンドウが表示されます。
- 「OK」を選択しましょう。

STEP 7:最適解を確認する
- 最後に、ワークシート上の該当セルに最適解が表示されます。
- このケースでは、2番目の機械設定(設定B)を選んだ方が最良の結果が得られることがわかります。

STEP 8:解答レポートを作成する
- さらに、解答レポートを作成することもできます。
- 「ソルバー結果」ウィンドウの「レポート」セクションで 「回答」 を選択し、「OK」をクリックしてください。

- 新しいワークシートにレポートが出力されます。

混合整数線形計画法の解き方(Excelでの実例)
このセクションでは、Excelで混合整数線形計画法を解く簡単な例をご紹介します。以下の手順に従えば、混合整数計画問題もスムーズに解けるようになります。
まず、この例で使う目的関数と制約条件を見てみましょう。
目的関数:
Z = 2.39X1 + 1.99X2 + 2.99X3 + 300Y1 + 250Y2 + 400Y3
制約条件:
- X1 + X2 + X3 = 1000
- X1 − 400Y1 ≤ 0
- X2 − 550Y2 ≤ 0
- X3 − 600Y3 ≤ 0
ここで、X1、X2、X3は整数変数、Y1、Y2、Y3はバイナリ変数(0または1)です。また、Zの最小値を求めることが目標となります。
それでは、以下の手順に沿って解いていきましょう。
手順:
- まず、決定変数・制約条件・目的関数の係数を格納するデータセットを作成します。

- 次に、目的関数の変数に対応する係数を入力します。

- 続いて、下図のように制約条件の変数の係数を入力します。「合計」列は空欄のままにしておいてください。

- その後、セルH10を選択し、以下の数式を入力します。
=SUMPRODUCT($B$6:$G$6,B10:G10)

- Enterキーを押し、フィルハンドルを下方向へドラッグします。

- 次に、セルH6に以下の数式を入力します。
=SUMPRODUCT($B$6:$G$6,B10:G10)
- Enterキーを押します。

- 続いて、「データ」タブから「ソルバー」を選択し、「ソルバー パラメーター」ウィンドウを開きます。

- ウィンドウ内で、目的値のセルを $H$6 に設定し、「最小」を選択します。変数セルは $B$6:$G$6 を指定します。

- 「追加」をクリックします。

- ここで制約条件を1つずつ追加し、「解法の選択」で Simplex LP を選びます。
- 「解決」をクリックして実行します。

- すると、「ソルバー結果」ウィンドウが表示されます。
- 「OK」をクリックしましょう。

- 最終的に、結果は下図のようになります。

まとめ
この記事では、Excelで整数線形計画法を解く手順を、ステップごとに詳しく解説しました。ソルバーアドインを活用すれば、複雑に思える最適化問題も効率よく解決できます。記事冒頭の練習用ブックをダウンロードすれば、ご自身のスキルを試すこともできますので、ぜひ活用してみてください。
その他のExcelに関する便利なテクニックについては、ExcelDemyのウェブサイトでも多数の記事を公開しています。ご質問やご意見がありましたら、下のコメント欄からお気軽にお寄せください。
-
Excelで試算表を作成する方法|初心者向け2ステップ解説
Excelで試算表(トライアルバランス)を作成する方法をお探しの方は、この記事がぴったりです。実務では、会社の財政状態を正確に把握するために試算表を作成する場面が多くあります。Excelを活用すれば、その作業はぐっと楽になります。本記事では、試算表の基本を押さえながら、Excelでの具体的な作成手順をわかりやすく解説します。 Excelで試算表を作成する2つのステップ 作業に入る前に、元帳と試算表という2つの概念を理解しておきましょう。どちらも会計業務で欠かせない存在であり、Excelでも効率的に管理できます。 ステップ1:元帳(総勘定元帳)の作成 会計における元帳とは、貸借対照表や損益計算書
-
Excelでアイソメ図を描く方法|3つのステップで誰でも簡単に作図できる
重要な内容をより分かりやすく伝えるために、画像や図面を活用することは少なくありません。物体の立体的な特徴を明確に把握したいときに役立つのがアイソメ図(等角図)です。このような作図にはシンプルで実用的なツールが多数ありますが、実はMicrosoft Excelでも十分に図面を描くことができます。本記事では、Excelでアイソメ図を描く方法をステップバイステップで詳しく解説します。図形描画機能の使い方に悩んでいる方にとって、きっと役立つ内容となるはずです。 アイソメ図とは? アイソメ図(等角図)は、アイソメトリックスケッチとも呼ばれ、物体の縦・横・高さという3つの次元をすべて表現した図面のこ