質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.37%
グラフ理論

グラフ理論とは、頂点(node)と辺(edge)で構成されたグラフに関する数学理論で、グラフの多様な性質を探求することを指します。グラフは、頂点と向き(矢印)を持つ辺で構成された有向グラフと、矢印のない無向グラフに分類。さまざまな日常の場面で使用することを目的としている理論です。

アルゴリズム

アルゴリズムとは、定められた目的を達成するために、プログラムの理論的な動作を定義するものです。

最適化

最適化とはメソッドやデザインの最適な処理方法を選択することです。パフォーマンスの向上を目指す為に行われます。プログラミングにおける最適化は、アルゴリズムのスピードアップや、要求されるリソースを減らすことなどを指します。

意見交換

クローズ

13回答

1428閲覧

旅館布団敷き巡回効率化について

IlIlIlIlIlIlIlI

総合スコア0

グラフ理論

グラフ理論とは、頂点(node)と辺(edge)で構成されたグラフに関する数学理論で、グラフの多様な性質を探求することを指します。グラフは、頂点と向き(矢印)を持つ辺で構成された有向グラフと、矢印のない無向グラフに分類。さまざまな日常の場面で使用することを目的としている理論です。

アルゴリズム

アルゴリズムとは、定められた目的を達成するために、プログラムの理論的な動作を定義するものです。

最適化

最適化とはメソッドやデザインの最適な処理方法を選択することです。パフォーマンスの向上を目指す為に行われます。プログラミングにおける最適化は、アルゴリズムのスピードアップや、要求されるリソースを減らすことなどを指します。

0グッド

1クリップ

投稿2024/09/14 03:00

編集2024/09/14 06:16

0

1

1 質問の動機
今,旅館で働いています。旅館では,客の登録情報をもとに,夜食事に向かう時間に応じて布団敷きの順番を決めます。ですが,現在,インバウンドの客が増加したことにより,より効率よく布団敷きの巡回をしなければならなくなりました。
そのため,効率的な布団敷き順路を,食事時間に応じて編成できるようなプログラムを作りたいと思っています。
どの旅館でも汎用性のあるプログラムにしたいので,部屋数,階数,移動方法などは打ち込みでできるようにしたいです。しかしここではサンプルとして,特定の旅館を提示してみたいと思います。

2 条件の例示
布団敷きでは,1階から5階までを階の両端にあるエレベーターで移動して目的の部屋に移動します。端から端まで20部屋あり、隣り合う部屋間の移動はx秒、エレベーターによる階数移動は回数に応じてy秒ずつ増加。一部屋の布団敷きにかかる時間はz秒。さらに、ランダムに食事時間(=布団敷き許容時間)が各部屋に割り当てられています。布団敷きをするチームは2つに分かれて独立して動くことができます。

このような状況下で、どのような計算が適しているか、みなさんと話し合いたいです!
抜けている条件など適宜は追加したいと思うので、たくさん意見くださったら嬉しいです。

(込み入った状況としては、各部屋人数がもちろん違うので、布団敷きにかかる時間も違います。そして、もし全ての部屋が時間に間に合わなそうな結果の場合、クレームを最小限にするため、間に合わない部屋数も最小化したいです。)

3 少し考えてみた。
最初の一部屋を割り出した後は、近くの部屋で、食事時間と対応し、かつ移動時間が少ない順に大きい方から点数をつけていき、最大の点数の部屋を次の部屋として指定する。
ハミルトン閉路の弱化版のような気がするので、総当たり戦が有効なのだろうか?
ぐらいしか思いつきません!助けてください!

4 展望
業務効率化で(自分の)ブラック労働を減らしたいので、そして、布団敷きに苦しむ色んな人に使って欲しいので、ゆくゆくは3D見取り図などに経路が表示されると素晴らしいなと思います。

どうにか皆さんとお話ししながらこの問題を解決したいです!!!

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

回答13

#1

TakaiY

総合スコア13687

投稿2024/09/14 03:42

おもしろそうなお題ですね。

最初の一部屋を割り出した後は、近くの部屋で、食事時間と対応し、かつ移動時間が少ない順に大きい方から点数をつけていき、最大の点数の部屋を次の部屋として指定する。

それがいいんじゃないかと思います。

ハミルトン閉路の弱化版のような気がするので、総当たり戦が有効なのだろうか?

お客さんが時間どおりに 食事に行っていないなどで、途中で状況が変わる可能性が高いと想像できるので、アプリケーションとしては、予め全ての経路を決定するのではなく、直近の上位5つを表示するなどにとどめ、状況の変化に応じて出力を変えるなどはどうでしょう。
将棋のソフトみたいな感じです。スマホアプリなど担当者が持ち歩く端末が必要になります。

ただ、この方式で行くと、局所最適になってしまい、最後の方で効率が悪くなってしまったりしやすくなりそう。
このあたりどう回避するかってのも、おもしろそうですね。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

#2

IlIlIlIlIlIlIlI

総合スコア0

投稿2024/09/14 03:55

回答有難う御座います!

お客さんが時間どおりに 食事に行っていないなどで、途中で状況が変わる可能性が高いと想像できるので、アプリケーションとしては、予め全ての経路を決定するのではなく、直近の上位5つを表示するなどにとどめ、状況の変化に応じて出力を変えるなどはどうでしょう。

そうなんです。実際お客さんは人間なので不確定要素をどうカバーするかが実装に関わってくると思います。後続の変数を許すため、確定させるものをすくなくするのは、実際有効そうですね。

とはいえおっしゃる通り、近くから潰していく方式だと、最後に飛び飛びに残る部屋ができてしまいますし、、

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

#3

TakaiY

総合スコア13687

投稿2024/09/14 05:00

最後に飛び飛びに残る部屋ができてしまいます

  • 候補の部屋の評価をするときに、重み付けを工夫する。
    たとえば、最上階から着手するチームであれば、上の階ほど優先のように。
  • 現在どのように対応しているかヒアリングする
    こういうシステムを作るときに、現状のノウハウというのが重要になることが多いです。もしかしたら飛び飛びのものを残したほうが最終的に効率が良いなど。
  • 現場の判断に対応できるようなシステムにする
    上にも関連しますが、候補/ルートに無い部屋を現場の判断で対応できるようにしておく。イレギュラーで対応してもちゃんと再計算されるように。

タグにJavaしか付いていませんが、言語に依存しない話題なので、変えたほうがいいと思います。
パッと見たところ、アルゴリズム・グラフ理論・最適化・機械学習あたりでしょうか。 機械学習は 違うかな。 経路探索とかあるといいんですけどね。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

#4

IlIlIlIlIlIlIlI

総合スコア0

投稿2024/09/14 06:13

ありがとうございます!

うーんなるほど、とても参考になります。
結局理論だけを考えて頭でっかちにならないことが重要ですね。

タグをつけ直してもう一回投稿もしてみます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

#5

meg_

総合スコア10720

投稿2024/09/14 08:05

今,旅館で働いています。旅館では,客の登録情報をもとに,夜食事に向かう時間に応じて布団敷きの順番を決めます。ですが,現在,インバウンドの客が増加したことにより,より効率よく布団敷きの巡回をしなければならなくなりました。

今までや現在はどのような方法で実施されているのでしょうか?
またどのくらい間に合っていいない感じでしょうか?

業務効率化で(自分の)ブラック労働を減らしたいので、

ブラックな職場ということはバイトなどの人員増加は無しという条件でしょうか?

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

#6

TN8001

総合スコア9819

投稿2024/09/14 10:54

こういうのですか?
OR-Tools  |  Google for Developers

わたしは算数どまりなので何ひとつわかっておりませんがw

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

#7

IlIlIlIlIlIlIlI

総合スコア0

投稿2024/09/14 12:50

#5
現在はマンパワー100%で、チームリーダーの計画のもと布団敷きを行います。しかし、効率はその方達に大幅に負っているので、人により全く布団敷きが間に合わないことがあります。色々状況を説明しないとわかりにくいと思うのですが30分(だいたい5部屋)の遅れという感じでしょうか。

経営側は人件費を削減したいので、新たな従業員を雇うことは考えていないと思います。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

#8

IlIlIlIlIlIlIlI

総合スコア0

投稿2024/09/14 12:54

#6

ざっと見た感じ近そうです!

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

#9

TakaiY

総合スコア13687

投稿2024/09/14 13:30

効率はその方達に大幅に負っているので、人により全く布団敷きが間に合わないことがあります。色々状況を説明しないとわかりにくいと思うのですが30分(だいたい5部屋)の遅れという感じでしょうか。

まさに、そういう人たちがどのように考えているのかを吸い上げることができれば、よいアルゴリズムができるでしょう。

ただし、どのような業務アプリでも発生することですが、そうすることで職を失う=存在価値を失う人が出てしまうという懸念から、なかなかそういう人からの協力が得にくいということもまま発生しますけどね。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

#10

meg_

総合スコア10720

投稿2024/09/14 16:55

チームリーダーの計画のもと布団敷きを行います。

その人のロジックは何でしょうね?経験からのものでしょうがそれを言語化するのが初手かと思います。その中に無駄がないか?もっと良い方法がないか?考えて改善していくのが良いように感じます。そのときに周りの協力が不可欠かと思います。
一から作る場合や改善する場合には「数理最適化」などのワードで調べると良いかと思います。

そのため,効率的な布団敷き順路を,食事時間に応じて編成できるようなプログラムを作りたいと思っています。

これは業務として行うのでしょうか?上司からの業務命令あるいは質問者さんからの提案で上司の許可を得ているのでしょうか?そうでない場合は周りの協力は得にくいかもしれません。

どの旅館でも汎用性のあるプログラムにしたいので,部屋数,階数,移動方法などは打ち込みでできるようにしたいです。

上記についても同様ですが業務としてでしょうか?考え方はすばらしいのですが汎用性のあるものを作ろうとすると工数がかかるかと思うのです。

経営側は人件費を削減したいので、新たな従業員を雇うことは考えていないと思います。

スポット的にアルバイトは雇えないのでしょうか?予約の多い日の夕方のみなどです。場所によっては応募がないかもしれませんが。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

#11

umimi

総合スコア504

投稿2024/09/17 14:06

[香車]東上☆Aho(英帆)☆海美「
『布団を敷く人個人の能力差』等はプログラムに反映しがたいので、汎用アプリ化は挫折すると思います。

『アプリを作る』のではなく、他の方の書込にあったように『人員を増やす』のが正解だと思います。そういう権限がない。というなら、転職を考えた方がよろしい、かと。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

#12

fana

総合スコア11954

投稿2024/09/18 01:59

各従業員は「今,部屋に入りました」「今,部屋から出ます(布団敷き終えました)」というのを何らかの方法でシステムに通知し,
システムは(その入力を受けて計画を動的に更新して)「そしたらお前は次はこの部屋に行けな」という指示を従業員に出す

……的な形態であれば,全体的な進捗状態や各従業員の能力差(:上記の2つの通知の間の時間差)考慮した物になり得るのではないか? という気がしないでもない.(けど,それができるアルゴリズムとかは知らぬ)

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

#13

nov.a

総合スコア1

投稿2024/09/18 04:58

こういうの考えるの楽しいですね!

プログラミング初学者ながら自分なりに少し考えてみました。
職場の状況的に、

  • 布団敷きスタッフは、ある部屋の布団敷き開始・完了をリアルタイムで報告することができる
  • お客さんの食事開始時刻、終了予定時刻をリアルタイムで管理できる

が可能とすると、各部屋の作業可能か否か、作業可能時間帯、〆切り予定時刻、各スタッフの現在地、がわかるようになると思いますので、各スタッフが業務開始時点、あるいは、ある部屋の完了をした時点で、次にどこの部屋へ行くべきかを、

  • 基本的には、次に作業可能な部屋までの距離と方向の条件(自分が近いのが最優先、そしてできるだけ他のスタッフから離れるように)で各スタッフに対し次の部屋を算出する
  • 〆切間近の部屋があった場合は、規定の残り時間になるとその部屋に対し誰が最も早いかを算出して指名する

という流れで決定していく。
算出のときは、布団敷き時間も想定、食事時間も想定ですが、各部屋各スタッフ完了時に再計算されるので柔軟に対応できるのかなと期待されますが、果たして、「自分が近いのが最優先、あとは他のスタッフから離れるように」が最適になっているかはちょっとまだ検討が足りないところです。。。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

最新の回答から1ヶ月経過したため この意見交換はクローズされました

意見をやりとりしたい話題がある場合は質問してみましょう!

質問する

関連した質問