コンテンツにスキップ

最適化問題

私たちの日常やビジネスの場面では、「限られた条件の中で、最も良い結果を得るにはどうすればいいか」という問題にたびたび直面します。たとえば、限られた予算で売上を最大にしたい、決められた時間内でできるだけ多くの仕事をこなしたい、といった状況です。このように、さまざまな制約がある中で最善の答えを見つけ出す問題を最適化問題と呼びます。

最適化問題とは、いくつかの制約条件(守らなければならないルールや制限)のもとで、ある目的関数(最大にしたい、あるいは最小にしたい数値)の最適な値を求める問題です。

最適化問題を考えるときには、次の3つの要素を整理することが大切です。

要素意味
決定変数自分で決められる値製品Aと製品Bの生産個数
制約条件守らなければならない制限材料は100kg以内、作業時間は8時間以内
目的関数最大化または最小化したい値利益を最大にする、コストを最小にする

たとえば、あるパン屋さんが「小麦粉と砂糖の在庫には限りがあるが、食パンとメロンパンをそれぞれ何個作れば利益が最大になるか」を考える場面を想像してみてください。ここでは「食パンとメロンパンの個数」が決定変数、「小麦粉○kg以内・砂糖○kg以内」が制約条件、「利益の合計」が目的関数にあたります。

試験で出るポイント

最適化問題では「制約条件」と「目的関数」の2つの概念を区別できることが重要です。制約条件は「守るべきルール」、目的関数は「最も良くしたい値」と覚えておきましょう。

最適化問題を解くための代表的な手法が線形計画法(LP:Linear Programming)です。「線形」とは、変数同士がかけ算されたり、2乗されたりせず、足し算と定数との掛け算だけで表せる(1次式で表せる)という意味です。

線形計画法では、制約条件と目的関数をすべて1次式で表し、条件を満たす範囲の中から目的関数が最大(または最小)となる点を見つけます。

線形計画法の考え方は、グラフを使うと直感的に理解できます。

たとえば、先ほどのパン屋さんの例で、横軸に「食パンの個数」、縦軸に「メロンパンの個数」をとったグラフを描きます。制約条件(小麦粉の上限、砂糖の上限など)はそれぞれ直線で表され、すべての条件を同時に満たす領域が実行可能領域(条件を満たす組み合わせの範囲)になります。

利益が最大になる点は、実行可能領域の頂点(角の部分)のどれかに必ず存在します。そのため、すべての頂点で目的関数の値を計算し比較すれば、最適な答えを見つけることができます。

試験で出るポイント

線形計画法では、最適解は実行可能領域の「頂点」に存在するという性質がよく問われます。グラフのイメージとあわせて理解しておきましょう。

最適化問題の考え方は、ビジネスのさまざまな場面で活用されています。

  • 生産計画:複数の製品をどれだけ生産すれば利益が最大になるか
  • 配送ルート:複数の届け先を最短距離で回るにはどの順序が最適か
  • 人員配置:限られた人数で業務を効率よくこなすにはどう割り振るか
  • 在庫管理:在庫コストと品切れリスクのバランスが最も良い発注量はいくつか

ITパスポート試験では、こうした応用の詳細までは問われませんが、「制約がある中で最善の解を求める」という最適化問題の基本的な考え方を理解しておくことが大切です。

アプリで問題を解こう!