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

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

新規登録して質問してみよう
ただいま回答率
85.46%
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

1回答

931閲覧

待ち行列の問題で、サービス時間が0になった項の置き換え方法について教えてください。

run_ron_pon

総合スコア0

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2021/07/04 18:03

編集2021/07/05 01:06

前提・実現したいこと

窓口での残りサービス時間を表現する2列の行列を作成し,全要素から1を引く操作を繰り返す.同時に,客の到着間隔を表現する値を一つ発生し,この値から1を引く操作を繰り返す.また,待ち行列長を表す値を一つ用意する.

『①サービス時間について、マイナスになった項を0に置き換え、0の項がある場合はその時点で待ち行列が存在するかを調べる。

②待ち行列が存在する場合は、待ち行列長から1を引き、新たなサービス時間を生成する。

③待ち行列が無くなるか、サービス時間が0である項が無くなるまでこの操作を繰り返す。

④客の到着間隔は0になった時点を客の到着とみなし、待ち行列長に1を加える。』

という問題です。

発生している問題・エラーメッセージ

①マイナスになった項を0に置き換えるという言葉の意味がよくわかりません。 項とは何を指しているのでしょうか。 ②待ち行列がなくなるのは「queue = 0」だと思うのですが、サービス時間が0である項がなくなるまで繰り返すという動作を行うコードが思いつきません。

該当のソースコード

Python

1def q(num): 2 service = np.random.exponential(3.0, 2) 3 arrival = np.random.exponential(2.5) 4 queue = 0 5 len_total = 0 6 7 for i in range(num): 8 service = service - 1 9 arrival = arrival - 1 10 11 if service < 0 and queue > 0: 12 queue = queue - 1 13 service = np.random.exponential(3.0, 2) 14 15 if queue = 0 or service = 0: 16 break 17 18 len_total = len_total + queue 19 if service > 0: len_total = len_total + 1 20 21 print("平均系内客数: " + str(len_total/num))

試したこと

if service < 0:
serice = 0
にしましたが、うまくいっていません。
置き換えについて調べましたが、リストでのreplaceを使う例しか出てきませんでした。
こういったリストではない場合の置き換えとはどういう意味なのか教えていただきたいです。

補足情報(FW/ツールのバージョンなど)

3.6です

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

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

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

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

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

guest

回答1

0

M/D/2の問題なのですね。

①マイナスになった項を0に置き換えるという言葉の意味がよくわかりません。
項とは何を指しているのでしょうか。

待ち行列のアルゴリズムの説明では「項」という用語は使いません。
Pythonの文法で「項」という用語を使うときは別の意味です。

  • 解決策
  1. 番号リストWebページなどを参考にしている場合

そのページを参考にするのは止めて、しっかりとした本を購入することをお勧めします。
Webページの情報はあてになりません。
0. 独学で参考書を読んでいる場合
それより前のページに「項」の説明がないようなら参考書を買い換えることをお勧めします。もっとも、こういう「項」の使い方をしている本ですので、前のページを調べるまでもなく買い換えた方が良いかもしれません。
0. プログラミングスクールや大学等での出題である場合
それまでに「項」の説明があったかどうか、教科書やノートで調べ、ないようなら学校をかえることをお勧めします。もっとも、こういう「項」の使い方をしてい学校ですので、教科書やノートで調べるまでもなく学校をかえる方が良いかもしれません。

②待ち行列がなくなるのは「queue = 0」だと思うのですが、サービス時間が0である項がなくなるまで繰り返すという動作を行うコードが思いつきません。

「項」の意味が分からない状態でコードを作れないのは当然でしょう。
上に書いた解決策を実行して、もっとまともに書かれた問題を解きましょう。

純粋にnumpyのndarrayについてであれば、繰り替えしをつかわなくても以下でできますが、それは待ち行列の問題の本質ではありません。繰り返しを使って書くことも可能です。

python

1service[service<0] = 0

ソースコードには文法エラーもありますし、実行条件の日本語を読み取れていないことによる誤りもありますので、それを直さないと求める答えは得られないでしょう。

投稿2021/07/05 04:16

ppaul

総合スコア24666

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問