税金 最適化
税金に関する最適化問題の例として、税金の申告を行う個人が受ける税金控除の種類や額を最適に選択する問題を考えてみましょう。
具体的には、以下のような問題設定を考えます。
ある個人が申告する税金の総額を $T$ とします。
この個人は、以下のような種類の税金控除を受けることができます。
🔹住宅ローン控除: 最大で $H$ 円までの住宅ローンの利息を控除できる。
🔹教育費控除: 最大で $E$ 円までの教育費を控除できる。
🔹寄附金控除: 寄附金のうち、最大で $D$ 円までを控除できる。
この個人は、これらの控除を組み合わせて、総支払額である $T$ 円を最小限に抑えたいと考えています。
解法
最小限の支払額を求めるために、PuLPを用いた線形計画法を適用してみましょう。
数学モデルを以下に示します。
【変数】
🔹$h$: 住宅ローン控除額
🔹$e$: 教育費控除額
🔹$d$: 寄附金控除額
【目的関数】
🔹$\min$ $T - (h+e+d)$
【制約条件】
🔹住宅ローン控除は $H$ 円以内でなければならない:$h \leq H$
🔹教育費控除は $E$ 円以内でなければならない:$e \leq E$
🔹寄附金控除は $D$ 円以内でなければならない:$d \leq D$
🔹総控除額は総支払額 $T$ 以下でなければならない:$h+e+d \leq T$
PuLPを使ってこの問題を解くには、以下のようになります。
1 | from pulp import * |
このコードを実行すると、以下のような結果が得られます。
[実行結果]
Status: Optimal Optimal value: 370000.0 h: 500000.0, e: 100000.0, d: 30000.0
この結果から、総支払額 $T$ が $1000000$ 円の場合、最小限の支払額は $370000$ 円であり、そのうち $500000$ 円が住宅ローン控除、$100000$ 円が教育費控除、$30000$ 円が寄附金控除であることがわかります。