24 魔女の相談
ソラが商業ギルドで働き始めてから、二週目の朝となった。
目覚まし時計に起こされたソラは、初めての休日を振り返る。
――結局、週末の残りは部屋の掃除と洗濯で終わってしまった。なんか身体がだるいし、休み疲れかな。
しぶしぶ起き上がり、顔を洗い、いつもの美少女服を着る。
今週からは、朝食を自分で作らないといけない。オーブンでパンを焼き、バターを塗って食べる。
歯磨きして出かける。朝の掃除。お茶出し。もうすっかり慣れたものである。受付のカウンター席に座り、受付業務を開始する。
ぼんやりしていたソラの前に、黒いローブにとんがり帽子のヤクがやってきた。
「おはよう、ソラちゃん。先週は助かったわ。相談があるんだけどいいかしら?」
ソラは一瞬でしゃっきりし、身構える。
しかし、先週と違い、ヤクは機嫌がよさそうである。
ソラは安堵して、ヤクに挨拶する。
「おはようございます、ヤク様。個別相談となりますと、会議室レンタル代込みで、30分5000円になりますが、よろしいでしょうか?」
ヤクは、分かったわ、と承諾して、マネーカードを取り出し、支払った。
「では、二階の小会議室にご案内いたします」
ソラは、会議室の鍵を持って二階に上がった。
ソラは、会議室に入ると、ヤクに奥の席を勧め、自分はドアよりの席に座った。
「それで、どんなご相談でしょうか?」
ソラが切り出すと、ヤクはゆっくりと話し始めた。
「先週、ポーション素材の納期が遅れて、ポーションが作れなくなりかけたでしょ。今後、そんなことが起こらないように、余裕を持って計画的に素材を発注したいの。でも、保管場所や使えるMPには限度があるわ。どれだけ発注したらよいか、相談に乗ってもらえないかしら?」
ああ、これは師匠から習った数理計画法の出番だな。ソラは、そう考え、ヤクに詳細を問い合わせることにした。
「ヤク様、喜んで対応させていただきます。まずは、ポーション作成の大まかな流れをお聞かせください」
ヤクは安心した表情を浮かべ、ポーション作成の流れを説明する。
「二種類のポーション素材、以前に合わせてA、Bと呼ぶわね、を使って、二種類のポーションP、Qを作るの。一か月周期で、素材発注、素材購入、ポーション作成、ポーション販売を繰り返しているわ。ここまではいいかしら」
ソラはうなずいて、返答する。
「はい、大丈夫です。次に、ポーション作成における制約条件について教えていただけますか」
「制約条件?」
ヤクの疑問に対して、ソラは、保管場所やMPによってポーション作成がどう制限されるか、ということです、と補足した。
ヤクは、分かったわ、と返し、制約条件について解説した。
ヤクによると、ポーション作成における制約条件は以下の三つである。
保管制約:二つの素材A、Bを保管する際に、乾燥魔導具に収まること
MP制約:ポーション作成で消費するMPが所定範囲に収まること
均等制約:二種類のポーションP、Qをほぼ半々に作成すること
制約条件のあらましが分かったところで、ソラは目的関数が何かをヤクに尋ねる。
「どうもありがとうございます。ところで、ポーション作成でもっとも重視していることは何でしょうか?」
ソラの質問に、ヤクは淀みなく答える。
「それは、もちろんポーション販売での利益よ。作った分は一か月で全部、売り切れるから、できるだけたくさん作って利益を上げたいわ」
ヤクの回答に対して、ソラは確認の質問をする。
「利益というのは、ポーションの売り上げから、素材購入に掛かった経費を差し引いたものと理解してよろしいですか?」
「税金を払うときは、家賃なども経費に入れるけど、ポーション販売の利益としてはそれでいいわ。ポーションPは1本3000円、ポーションQは1本2700円で売っているわ。素材Aはグラム500円、素材Bはグラム600円よ」
――つまり、目的関数は、ポーション販売の利益。三つの制約条件を満たしつつ、これを最大化するようにポーションP、Qの作成量を決める問題ということだな。
ソラが、頭の中で目的関数について整理していると、ヤクが口を開く。
「そうそう、これを忘れていたわ。素材A、Bともに1グラム単位で管理。ポーションは、1本単位で販売するけど、できればダース単位で作りたいわ」
ソラは、承知しました、と応えた。
「あと、何か必要な情報があるかしら?」
ヤクの問いかけに、ソラは、三つの制約条件の詳細を教えてください、と依頼した。
「じゃあ、まず保管制約からいくわね。乾燥魔導具は辺が43.5cmと45cmの長方形よ。ここに、グラム単位でまとめた素材を少しずつ離して縦横に並べていくの。いつも感覚的に並べているので、来る前に測ってきたけど、素材Aは2.83cmごと、素材Bは2.45cmごとだったわ」
ソラは、ヤクの話に基づき、まず一度の購入量を記号で表し、素材Aがaグラム、素材Bがbグラムと置いた。ただし、a、bは正の整数である。
――素材の並べ方の詳細が分からないから、とりあえず正方形でモデル化する。素材Aが占有する面積は、2.83掛ける2.83掛けるa、素材Bが占有する面積は、2.45掛ける2.45掛けるbだ。両方を足したものが、乾燥魔導具の面積、すなわち43.5掛ける45、以下になる。これが保管制約を表す式だ。
ソラは、保管制約を式で表すことができ、嬉しくなった。
「次は、MP制約ね。私たち魔法スキル持ちは、自分のステータスを見ることができるのだけど、魔導具みたいに数字では分からないの」
ヤクの説明の途中で、ソラは、え、そうなんですか、と思わず声を上げた。
「HPやMPは明るさとして見えるの。だから多いか少ないかは分かるけど、正確にいくつかは分からないわ。でも、それだと他人に伝えられないから、魔導具を使って測っているの」
ヤクはそう言った後、一か月の周期でのMP使用量を解説する。
「ポーションPもQも1ダース作るのに、MPを12消費するわ。一週間くらいかけてポーション作るけど、MPの消費は200くらいが限界ね」
ヤクの説明に対して、ソラは要望を伝える。
「MPの限界は204と決めていいですか?」
「なんか中途半端ね」
「いえ、ちょうど12で割り切れる数です。こうしておくと、ダース単位でぎりぎりまでポーションが作れます」
ヤクは、なるほどね、204で構わないわ、と応じた。
――ポーションPをxダース、ポーションQをyダース作るとしよう。x、yはできれば正の整数、そうでない場合でも1/12の整数倍だ。MP制約を表す式は簡単だ。12掛けるx、足す、12掛けるyが、204以下になる。
ソラは、MP制約を頭の中で整理した。
「最後は、均等制約ね。これは簡単で、ポーションQの割合を全体の4割から6割にしてほしいの」
――これは、容易に式で表せるな。0.4掛ける(x足すy)がy以下、かつ、yが0.6掛ける(x足すy)以下になる。
ソラは、均等制約も頭の中で式にまとめた。
これで準備は完了である。ソラは、ヤクにお礼を述べる。
「ありがとうございます。これで情報は十分です。計算しますので、数分お時間をください」
ソラは、紙とペンを使って計算を始めた。
――まず、保管制約をx、yの式にしよう。測定値には誤差があるし、a、bが整数だから小数点以下は落として、8掛けるa、足す、6掛けるbが1956以下でいいだろう。ポーションのダース数x、yとの関係は先週聞いた。それを使うと、11掛けるx、足す、8掛けるyが163以下となる。これでOK。
ソラは、保管制約をx、yの式で書けたことに気をよくした。
――MP制約は、x足すyが17以下、と簡単化できる。均等制約は、(2/3)掛けるxがy以下、とyが(3/2)掛けるx以下、の二つに分けられる。目的関数は、万円単位にすれば、2.55掛けるx、足す、2.46掛けるyと書けるな。
ソラは、残り二つの制約条件と目的関数を簡単な式で表した。
――x、yの組を平面上の一点とみなして、平面上で制約条件を満たす範囲がどうなるか考えよう。制約条件は四つの不等式だから、制約条件を満たす範囲は平面に描かれたある四角形とその内側になる。だから、目的関数が最大になるのは四角形の頂点のどれか一つになるはず。
ソラは、四つの不等式が定める四角形のそれぞれの頂点のx、yの値を求め、そこにおける目的関数の値を計算する。その結果、xが9、yが8のときに、目的関数は最大値42.63となることを見出す。
計算が終わったソラは、計算結果をヤクに伝える。
「お待たせしました。一か月でポーションPを9ダース、ポーションQを8ダース作成すると、利益が最大になります。そのときの利益は42.63万円です」
ヤクは目を見開いた。
「そんなことまで分かるの! すごいわ!」
ヤクに感心されて、ソラは内心でやったね、と声を上げた。
ソラは、計算結果を書いた紙をヤクに手渡しながら、補足する。
「従って、一か月のポーション作成で必要となるのは素材Aが129グラム、素材Bが154グラムです。今のストック量を引いて発注すればよいと思います」
ヤクは、ありがとう、分かったわ、と言いながら、紙を受け取った。
相談が一段落したところで、ヤクが思い出したように口を開く。
「それにしても、ソラちゃんてステータスが読みにくいのよね。何か特殊なスキルでも持っているの? ちょっと鑑定していいかしら?」
ソラは、ステータスや鑑定を騙す偽装のネックレスをしているとも言えず、緊張しながら、はい、どうぞ、と応じた。
ヤクはしばらくソラを見つめていたが、あきらめたように告げる。
「特に変わったスキルはないようね」
――よかった。偽装のネックレスはちゃんと働いているようだ。
ソラは魔法使いに質問するいい機会と思い、ヤクに尋ねる。
「魔法使いの人にとって、スキルはどういう風に見えるのですか?」
「スキルはカテゴリが色として見えるわ。戦闘系は赤色、生産系は青色、商業系が黄色、農林水産業が緑色、その他の専門職は金色や銀色、特にスキルがないときは白色よ。ソラちゃんは残念ながら白だったわ」
「スキルの名前は分からないのですか?」
「鑑定の応答の魔導波には名前が含まれていないから、無理だと思うわよ。ジン様が発明された鑑定の魔導具では、魔導波と膨大な辞書を突き合わせて名前を調べていると聞いたことがあるわ」
ソラは、ありがとうございます、と返した。
――お世話になった孤児院の院長も魔法使いだったから、もしボクを鑑定していれば金色や銀色に見えたのか。でもそんな話は聞かなかったから、鑑定しなかったのかも。
ソラは院長の派手な服装を思い出し、ヤクに尋ねる。
「知り合いの魔法使いの人は黒いローブを着なかったんですが、黒いローブは何か理由があるのですか?」
「これは、自分以外の魔導波を通しにくくする効果があるの。鑑定時のノイズが減らせるし、魔法で攻撃されたときの簡易防御になるわ」
ヤクの説明に、ソラは、なるほど、と相槌を打った。
時計を見ると、ちょうど30分になろうとしている。
ヤクは、椅子から立ち上がって、ソラに近づく。
ソラも挨拶のため立ち上がった。
「ソラちゃん、今日はどうもありがとう!」
ヤクはそう言って、いきなりソラを抱きしめた。
ソラは、突然のことに気が動転して、あわあわしてしまう。
一呼吸して落ち着いたところで、お役に立てて嬉しいです、と応えた。
上機嫌のヤクが会議室から出るのを見送り、ソラは会議室の鍵を掛けて階段を下りる。
――数理計画法は、現実世界の色々な課題を綺麗にモデル化できる強力な手法だな。今回は、整数の制約を無視して求めた答えがたまたま整数になったから、よかったけど、そうでなかったら四角形の内側を調べる必要があった。この場合、手計算だとしんどいので、魔導具の出番かな。
ソラは、数理計画法の威力に改めて感心する。また、何か使える課題があるといいなあと思いながら、受付に戻った。




