2025年07月02日 12:07:52
お客様各位
平素はQAZUCHI をご利用いただき、誠にありがとうございます。
お問い合わせいただきましたCHATGPT による課題のモデル化が完了しました。
下記の通り、ご報告させていただきます。
最適化したいもの:まとめて野菜を販売する八百屋の利益を最大化したい
ルール:まとめる野菜の販売価格は500円未満、重さは3kg未満
まとめて野菜を販売する八百屋の利益 まとめる野菜の販売価格は500円未満、重さは3kg未満 この問題は、利益を最大化する最適化問題です。量子アニーリングにおいては、通常QUBO(Quadratic Unconstrained Binary Optimization)モデルに変換して解きます。
各野菜について、以下のような二つの変数を導入します。
- $x_i\in\{0,1\}$:野菜 $i$ をまとめるかどうかを表すバイナリ変数
- $y_i\in\mathbb{Z}$:野菜 $i$ のまとめる量を表す整数変数
目的関数は、野菜の単価、量、利益から以下のように導出されます。
$$
\max_{x,y} \sum_{i=1}^n x_i \cdot y_i \cdot p_i
$$
ここで、$n$ は野菜の種類数、$p_i$ は野菜 $i$ の単価、$x_i$ は野菜 $i$ をまとめるかどうかのバイナリ変数、$y_i$ は 野菜 $i$ のまとめる量を表す整数変数です。
制約条件は、以下のように表されます。
$$
\sum_{i=1}^n y_i w_i \leq 3000 \\
\sum_{i=1}^n x_i \leq k
$$
ここで、$w_i$ は野菜 $i$ の重さ、$k$ はまとめて販売する野菜の種類数の上限です。
これらの式をQUBO形式に変換するには、以下のような式が必要になります。
- 目的関数の2次の項をQUBO形式に変換する式
- 制約条件のバイナリ変数を扱うための制約条件を表すペナルティ項
具体的には、以下のような式が必要です。
1. 目的関数の2次の項をQUBO形式に変換する式
$$
\begin{aligned}
& \max_{x,y} \sum_{i=1}^n x_i \cdot y_i \cdot p_i \\
& \Leftrightarrow \max_{x,y} \sum_{i=1}^n \sum_{j=1}^n x_i \cdot x_j \cdot y_i \cdot y_j \cdot\frac{1}{2}(p_i + p_j) \\
& \Leftrightarrow \min_{x,y} -\sum_{i=1}^n \sum_{j=1}^n x_i \cdot x_j \cdot y_i \cdot y_j \cdot\frac{1}{2}(p_i + p_j) \\
& \Leftrightarrow \min_{x,y} -\sum_{i=1}^n \sum_{j=1}^n x_i \cdot x_j \cdot y_i \cdot y_j \cdot p_i - \sum_{i=1}^n \sum_{j=1}^n x_i \cdot x_j \cdot y_i \cdot y_j \cdot \frac{1}{2}p_j
\end{aligned}
$$
2. 制約条件のバイナリ変数を扱うための制約条件を表すペナルティ項
$$
\begin{aligned}
& \text{重さの制約条件: } \left(\sum_{i=1}^n y_i w_i\right) - 3000 \leq M_1\cdot z_1 \\
& \text{品目数の制約条件: } \left(\sum_{i=1}^n x_i\right) - k \leq M_2\cdot z_2
\end{aligned}
$$
ここで、$z_1, z_2$ はバイナリ変数であり、それぞれ重さの制約条件、品目数の制約条件を満たしているかどうかを表します($z_1=1$ならば、重さの制約条件を満たしていないことを意味する)。$M_1, M_2$ は大きな正の定数で、ペナルティの度合 いを決めます。
これらの式をまとめてQUBO形式で表すと、以下の式となります。
$$
E(x, y, z) = -\sum_{i=1}^n \sum_{j=1}^n x_i \cdot x_j \cdot y_i \cdot y_j \cdot p_i - \sum_{i=1}^n \sum_{j=1}^n x_i \cdot x_j \cdot y_i \cdot y_j \cdot \frac{1}{2}p_j + M_1\cdot z_1 \left(\sum_{i=1}^n y_i w_i - 3000 \right) + M_2\cdot z_2 \left(\sum_{i=1}^n x_i - k \right)
$$
以上のようにQUBO形式に変換することで、この問題を量子アニーリングで解くことができます。
なお、モデリング結果はCHATGPTが抽出したもので、量子アニーリングで必ず正しい結果が得られるものではありません。
ご理解ご協力のほどよろしくお願い申し上げます。
詳しくは、QAZUCHI の「量子アニーリングなんでも相談」をご利用ください。
https://qazuchi.com
twitter ID: @QtmAnnealing
Discord QAZUCHI server
オンライン勉強会
以上