投稿者 トピック: tiny timetable patch / 簡易タイムテーブルパッチ  (参照数 139806 回)

wackdone

  • 準急
  • ***
  • 投稿: 126
「アシスタント」の構成
« 返信 #60 on: 2012/07/14 20:39 »
時刻表ウィンドウの「アシスタント」は、今、構成(分割)を作りなおしています。
「運行周期」が計画アシスタントにあって、始点発時刻がここに出てこないのはまずい。

しばしお待ちを。

wackdone

  • 準急
  • ***
  • 投稿: 126
kanedaiさん、20 っていうのは、実際にあなたの手元で走らせているゲーム内で列車が表示した値のことでいいですか?
なぜ時間通り発車できるのに20も延発がおこるのかがわからないんだが。

だとすると、これは現状のTTTの限界、仕様です。
Simutransの元の積載機能などなどが、どうしても余計な時間を発生させてしまいます。
これに立ち入ると、もはやSimutransの機能の改変 (拡張とは言いにくい) になってしまうので、
今は手をつけていません。(少しでも早められないか、探ってみるつもりではあります。)

また、ゲームの規模が大きくなって処理が重くなってくると、「発車時刻チェック」がされる間隔も開いてしまいます。
(これもSimutransのシミュレーションの仕組み上、仕方がない)
なので、どうしても遅れ気味になります。
私の手元でもだいたい、10〜15くらいはあたり前に延発です。

ですがこの延発分は記憶されていますので、一応はご安心を。
先で回復します。で、先でまた微妙に延発するのでその先で回復を試みて...くりかえし。

大雑把に言えば、全列車は設定した時間計画を常に 20 くらい遅れた時刻で運用している、となります。
(遅れが溜っていくわけではない)
« 最終編集: 2012/07/14 20:46 by wackdone »

kanedai

  • 各駅停車
  • *
  • 投稿: 22
そうです。ゲーム内の列車に表示される時間です。

限界なんですね。
わかりました。

ありがとうございます。

gonyo

  • 各駅停車
  • *
  • 投稿: 16
wackdoneさん 難しく考えすぎではないでしょうか。   説明が下手じゃないんです。 やってることが難しすぎるんですよ。 
それだけ考えられるならいいもの作れると思いますよ。 

私のほうで実験してみましたが問題点があります。
引用
  運行周期は、時間(TT)が この周期の倍数になったときにしか発車できない設定
     車両間隔+始発出発時刻は、オマケ。周期を車両間隔+始発出発時刻の分だけ過ぎたら発車する

時間の関係について、誤解のないよう式風で書いてしまえば、
いつもの運行: 路線に運行周期 C、列車個々に始点発時刻 O が設定されていて、それぞれの列車が始点を出発するのは
   ゲーム時間が、 Cの倍数 + O
になった時です。
このように始点発時刻はけしてオマケではなく、運行周期と同じくらい重要です。
これが無いと路線に所属する全ての列車が同じ時刻に同じ場所(始点)を出発しようとします。
↑の内容だいたいわかりました 私の想像していたものと少し異なるようです。

引用
これが無いと路線に所属する全ての列車が同じ時刻に同じ場所(始点)を出発しようとします。
それでいいと思うんですよ。 2編成発車しない限り   (遅延発生時に使う10%ルールを適用すると2編成とも発車してしまうのが難点orz)
延発もあまりよくない。 発車してくれれば良いが発車タイミング見逃してしまうとちょっと厄介

往復28分で運行できる路線があったとします。 3編成の列車が10分間隔で運行して始発駅で2分調整する設定です。 
wackdoneさんの考えではこれは30分周期になるのではないでしょうか。 私はこれを10分周期にしてみてはどうかと考えているのです。
gonyo案では ゲーム時間が、 P(運行間隔)の倍数 + ずらし分(シフト) Sになると発車

※私の案だと この3編成の列車は同じ列車である必要がある。(列車の長さ、最高速度などが同じものを使用する)

wackdoneさんの案だと問題点があります。
この路線でなんらかの理由(車庫からの出庫、線路工事でのトラブルなど)で同じ路線の列車の順番が入れ替わってしまった場合どうなるのでしょうか。
始発駅 に1時02分に 1時20分発の列車が来ました そのうしろに1時10分発の電車が来ました。そのうしろに1時30分発の列車がいるとします。
さて、列車の行き違いができないとするとこれはどうなってしまうんでしょうか 2編成しか運行してなければ元に戻りますが3編成以上運行した場合こんなトラブルが起こりえます。 こうなるとどう待機時間を調整しても無駄です。

gonyo案の場合 1時20分発の列車は1時10分発に発車し 次の列車は1時20分に発車することでこの問題を解消できます。

要するに同じ路線の全編成に同じ時刻表を当てはめるということです。 このほうが簡単でしょう。

あともう1つ、 別の路線との連絡、急行との連絡などを考えると他の列車も10分間隔、もしくは5分、20分、などで運行することが望ましいと思います。 これを自動でやるとうまくいくのではないでしょうか。  そしてこれを計算すると必要な編成数が求められます。

私の案:(だいぶ前の交差点信号と変わってませんが)  設定するのはP(運行間隔)の倍数 と ずらし分(シフト) S  だけ、   
C(運行周期時間)÷P(運行間隔)= H(編成数)     ※H(編成数)は小数点以下切り上げ これじゃダメかな?

後は指定した駅での停車時間を設定できる機能とかもあるといいかもしれません(退避などに必要)(それ以外の駅では現在時刻を確認せずすぐ発車)


説明してもわかりそうにないのでTTTの設定終わった状態でのセーブデータ交換が望 ましいと思いますがいかかでしょうか?  私の作ったマップなら余計なアドオンとかないので全員読み込めるかなと・・・
« 最終編集: 2012/07/14 22:25 by gonyo »

wackdone

  • 準急
  • ***
  • 投稿: 126
gonyoさん、そうですね。
ただどうも私の癖として、概要と詳細を分離せずに書き連らねてしまうもので。。。
詳細機能を使いこなす「応用編」はともかくとして、まずは基本機能を最小限の設定で使う「導入編」の文章が必要かなと。

引用
wackdoneさんの考えではこれは30分周期になるのではないでしょうか。 私はこれを10分周期にしてみてはどうかと考えているのです。
gonyo案では ゲーム時間が、 P(運行間隔)の倍数 + ずらし分(シフト) Sになると発車
整理していただきありがとうございます。
私も当初はgonyo案の使い方も考えていました。仕組みとしてはgonyo案が可能なようにしてありますが、
いつの間にか考えが凝り固まってしまい、この可能性を忘れてしまっていましたね。すみません。

今の仕組みであれば、gonyo案による運行方法を包含しています。
    路線を行って帰ってくる一周の時間(駅間時間の合計) が30分だったとして、
   運行周期(C) を 10分
   始点発時刻(O)を 2分 (たとえば)
に設定すれば、gonyoさんのおっしゃる運行になります。
(この時は、自動等間隔設定とか一切使う必要なし。)
(またこの時は、運行周期の設定では自動計算は使えません。合計とは別にCを設定でるようにしていたのは実はこのため)

私の考え (周期を区間時間の合計(上の例なら)30分にする)  という使い方は、各列車のOを細かく調整したい場合ですかね。
前の投稿の例で示したように、同じ駅を発車する列車の本数が路線によって異ったりする場合です。

gonyoさんの使い方の方が(後で説明されている問題もないし)、基本利用には適していると思います。
ですが応用できる余地も作っておきたいので、中の仕組みは今のようにしておきたい。
あとはどう見せるか、どのように使い方を誘導するか、だと思います。

引用
wackdoneさんの案だと問題点があります。
この路線でなんらかの理由(車庫からの出庫、線路工事でのトラブルなど)で同じ路線の列車の順番が入れ替わってしまった場合どうなるのでしょうか。
はい、gonyoさんのおっしゃるこれも、強制段落ちの一つです。
さらにgonyoさんのおっしゃるケースが重症なのは、ずっと回復できないということです。
私の元の使い方 (C = 区間時間の合計) でこれを回復させるために、いくつか策を作ってきました。
  (1) 運行アシスタントでの最初の O 設定
     走行中の列車の順番を検出して、その順番に合わせた O をふりなおします。
  (2)  運行アシスタントで設定できる、継続的な自動設定
     列車が始点に到着するたびに、直近の最適な Oを再設定します。つまり O がgonyoさんの方式による値になります。
しかし(1)は、また順序が乱れてしまえばやりなおし。(2)はまだ使いものになるかな。

もちろん、gonyoさんのおっしゃるように、gonyoさん式に C=P、O=S で全列車共通設定すれば、
これの用はありません。(全列車に O=S を設定する手間が省けるくらいかな)

さてどうしましょう。gonyoさん式は利用初心者を誘導しやすくていいんですよね。
表面上は、gonyoさん式 を見せておいて、上級者モードで O の個別調整を見せられるようにする?
でも、あまりモーダルな作りにはしたくないのですよ、Simutrans的には。

とりあえず、「gonyoさん式」とかいう分類に名前をつけないと、この先、話がややこしいですね。
できる事から考えると、
  gonyoさん式 (C=P): 全等間隔式
  私式 (C=sum(split)):  。。。何式と言えばいいのだろう? 個別間隔式?
というあたりかな。

まずは、
  ゲーム内の仕組みとしては、CとO を PとS とは別に持っておく
ということだけは、ご了解いただけますでしょうか?

ちなみに、
引用
後は指定した駅での停車時間を設定できる機能とかもあるといいかもしれません(退避などに必要)(それ以外の駅では現在時刻を確認せずすぐ発車)
今の仕組みだと (停車時間ではなく区間時間になりますが)
  退避したい駅にだけ、前駅からの出発時間の区間計画を設定する
  ほかの駅は 0 (TTT機能が働かなくなる)
で、同じことができます。

実験の見せあいっこ、いいですね:-)
個人的には一つ問題がありまして、今の私、Simutransを起動している時間より (さらに内緒ですが本業の仕事している時間より) TTTのプログラム書いてる時間の方が長くなってます。
私からのマップ公開はちょっと待ってください。

« 最終編集: 2012/07/14 22:34 by wackdone »

wackdone

  • 準急
  • ***
  • 投稿: 126
kendaiさんご指摘の件 (定刻発できるはずなのにいつも遅れる)、
表示だけならすぐに対処はできます。
設定か固定値かで、表示する値をずらしてしまえば良いので。

ただ今のところ、根本の仕組みがまだ固定はされていない。(まだ変わる改善される可能性がある)
ことと、バグがあるかもしれない、ということから、
しばらくは今の表示のままとさせてください。

「発車間際の駆け込み乗車は大変危険ですのでおやめください」
とアナウンスし続けてください。改善はしませんが。

o_o

  • ゲスト
悩ませてしまったようですいません :'(
自分のTTTはまだ、0710以降のバージョンは少し眺めただけで、ほとんど触れることが
できてません。確かな確証がないまま、不用意な発言をしました。申し訳ありません。

10%の許容によって、その駅の発車時刻が全体として後方にスライドするのでしたら
自分の危惧している形にはならないと思われます。

固定式ホームを使用している場合に1編成が遅延すると、その遅延が次に連鎖しやすい。
遅延発車した列車は、翌周期も同じように遅延するため、遅延が拡大する傾向がある。
行列発車(仮想連結)した列車が他の路線の周期を悪化させるリスクが高い。
周期が守られずに、最初の設計と異なる順序で停車すると問題を広げる可能性がある。
このあたりの問題が整理できていないままの発言でした。
これらのリスクがあるのに、果たして遅延発車を認めていいのかと考えた訳です。

代替案として示した±交互については、自分でも疑問です。厳密に均等な状態は漠然と
危険だとかんがえたのでしょう。特に朝はいけません、考えなく発言してしまう。。

まだ、目を通させていただいた段階で、お話についていけませんが、取り急ぎお返事だけ。

周期運行単独では、発車時間を制御する事は出来ても、着時間を安定して制御する事が出来
ないため、どうしても問題が広がりやすいんですよね。
余裕がないなら遅れる、時刻表上は余裕があるようでも、停車するホームがなければ到着は
遅れてしまう...。なかなか、うまく運用しきれないです。

>gonyo さん
データお借りしました。ずいぶん難しいMapですね。陸地の広さ、街サイズ、集客範囲、
産業配置、しかも2月の借金返済もギリギリで...
自分のMapの貨物へのTTTが行き詰まっているので、気分転換にと思いましたが、腰が
引けてしまいました ;D TTT導入前に路線設計を計画中です。地形が、ぇぇ。。

--07/15 5:50 追記--
実験に協力したいのですが、0713は時刻表のクラッシュが多くてどうにも進みません。。
 FATAL ERROR:vector_tpl<T>::[]
 N20timetabke_view_gui_t14tt_stop_info_tE:index piut of bounds:7 not in 0..6
 (手写しのため、間違いがあるかもしれません)
というものです。列車ソートは怖くて押せたものではありません。
コードが読めれば(能力的な意味で)もっと、ましな報告できる?んですが、本当すいません。

ソートについては、試験中は手作業で入れ替えでもと思うんです。

言葉遊びですが、運行周期のほうは回転することが大事ですから、公倍数ではなく、
gnyoさん方式のように公約数で管理するほうが向いているような気がします。

とりあえず、まっさらなPak64入れて最初から開発してみます。TTTの導入までには準備
期間が必要になると思います。あまり無理なさらぬようお願い致します。
« 最終編集: 2012/07/15 06:02 by o_o »

wackdone

  • 準急
  • ***
  • 投稿: 126
TTT-040
« 返信 #67 on: 2012/07/15 09:08 »
TTT-040をアップします。対応のja.tabもここに貼ります。
バイナリは↓です。(ja.tabは↓のzipに入っている方がごく微かに改善しています)
http://ux.getuploader.com/wackdone_simutrans/download/15/simuwin-wackdone-120715.zip


  - o_oさんご指摘の「空の路線で列車あり」を表示する時のクラッシュを修正
  - アシスタントまわりの構成、分割を変更
  - 前の版で紛れ込んだ細かいバグ(クラッシュの可能性あり)の除去

ここのところの皆さんとの議論もふまえて、アシスタントに変更を加えた部分もあります。

既知のバグ:
  - 回復アシスタントからの「列車の遅延のリセット」「路線全体の遅延のリセット」は現在機能しません。
    路線管理ウィンドウや列車の詳細ダイアログからお願いします。
  - 表示する路線を追加した場合などに、時刻表での選択列車と、アシスタント内の対象列車が
    食い違っている場合があります。時刻表の中で列車を選びなおせばアシスタントにも反映されます。



なお、o_oさんのおっしゃってる所と問題が同一かはわかりませんが、ビルドによって
時刻表ウィンドウがクラッシュするケースがときどき見られます。
ある程度追ってはみたのですが、まだオリジナル側のバグなのかこちらのバグなのか
切り分けがついていません。
(demangling pointerによる、アロケータの内部情報の破壊なので、箇所特定がかなり厳しい)
この後、111.3 や最新 nightly にもパッチを適用して、症状が変わるか見てみます。
(それぞれのバイナリも作成できたらアップしようと思います。)

ご不自由をおかけしていて申し訳ありませんが、実験にご協力をお願いいたします。

« 最終編集: 2012/07/15 09:58 by wackdone »

wackdone

  • 準急
  • ***
  • 投稿: 126
動作確認用各種バージョン (111.3とr5830)
« 返信 #68 on: 2012/07/15 10:10 »
各環境で動作不安定の報告がされていますので、Simutrans本体のバグとTTTのバグを切り分けるため、
Simutransのバージョンを変えたものバイナリとして作りました。
(おそらくTTTのバグでしょうが、Simutrans本体の中にもポインタの扱いの怪しいコードがいくつかあるもので。)

↓のURLです。TTT-040のあたった最新版です。
111.3ベース:
http://ux.getuploader.com/wackdone_simutrans/download/16/simuwin-wackdone-120715-111.zip
r5830ベース: (現時点のsvnのhead)
http://ux.getuploader.com/wackdone_simutrans/download/17/simuwin-wackdone-120715-r5830.zip

差し替え用のja.tabは、すぐ上の投稿からダウンロードしてください。

手元では、VMの上で「起動すること」「これまでの全部盛りで作ったセーブデータがロードできること」は確認しています。
これからエージングテストをかけます。

これまでのバイナリで問題のあった方も、どうか一度だけで良いのでこれらのバージョンを試してみてください。
« 最終編集: 2012/07/15 10:23 by wackdone »

o_o

  • ゲスト
バイナリ版の作成など、本来こちらですべきところで、
お手間をとっていただきありがとうございます。

前のMapは個人使用前提のアドオンが含まれていて、お見せできたものでは
ないので、新しいMapを作成し、似たような構造で線路だけ引いたデータを
あげてみます。こちらの雰囲気をなんとなくつかんでいただこうかと、、。
pak64バニラアドオンなし。まだ駅配置や進行方向は未定。
zip容量が変わらないのでそのままあげてみます。問題があればお知らせ下さい。

◆バグ・不具合
◆計画時間でのソートが安定してきましたが、計画時間が読み込まれていない場合に
 ソートをかけるとクラッシュします。
◆駅の一部を非表示にした状態で、路線の追加後、駅の表示を切り替えるときの
 挙動が正常ではありません。
◆120715-r5830で混雑ログ(他は未確認)が翻訳されずに表示されます。
◆確認になりますが、路線画面、右下2つ並んだ入力窓の下側は打ち込んだ数字が
 自動的に変化する仕様でしょうか?

以上、確認宜しくお願いします。
« 最終編集: 2012/07/15 18:41 by o_o »

wackdone

  • 準急
  • ***
  • 投稿: 126
いえいえ、バイナリの作成は無理のない範囲でやっていますのでお気になさらず。
逆に、こちらのテストが充分でないのに更新版をアップしているのが申し訳ないのですが、
そこらへんはフリーソフトということでご容赦を。問題のご報告を多数いただき、本当にありがとうございます。

当初頭の中にあった機能拡張はだいたい出しきってきたので (ダイヤグラム表示は今は諦めます)
  - バグ出しと修正、安定度を上げる
  - (概念部分も含めて) よりわかりやすく
  - 場合によっては、より使い易いように一部は機能をシュリンク
という方向に努力していきたいと考えています。
(特に、時刻表機能を追加したところから安定度が一気に悪化してきたので)

バグのご報告ありがとうございます。
>> ◆計画時間でのソートが安定してきましたが、計画時間が読み込まれていない場合にソートをかけるとクラッシュします。
すぐには異常動作が確認できなかったのですが、「計画時間が読み込まれていない」というのは、
「路線に計画時間が一切設定されていない」(TTTによる運行がまだされていない)という路線の列車を表示した場合ということでいいですか?

>> ◆駅の一部を非表示にした状態で、路線の追加後、駅の表示を切り替えるときの挙動が正常ではありません。
以下の操作順でおかしくなることは確認しました。同一の始点終点間で急行と普通の二つの路線があるところで
  (1) 急行を表示する
  (2) 一部の駅を非表示 (駅名をShift+左クリック)
  (3) 普通を表示に追加する (ウィンドウ上部の路線選択コンボボックスで普通を選び、その下の「路線を表示」ボタンを押す)
  (4) 全駅を再び表示させる (時刻表シート左上の空の箱を Shift+左クリック)
これでも表示状態が戻らない駅があります。この問題は再現方法がわかったので対処いたします。
これ以外にも全く違う操作や挙動があるようでしたら教えてください。

>> ◆120715-r5830で混雑ログ(他は未確認)が翻訳されずに表示されます。
7月の最初に取得した翻訳ファイルを元にしてしまっていますので、最新の翻訳ファイルに追従できていません。
どこかで最新版を取り入れようと思いますが、しばらくお待ちください。
(今はTTTの開発のベースにするバージョンをどこにするか決めきれていないものでし て)
なお、ご自身でSimutranslatorからファイルを落として、末尾に TTT.ja.tab を追加すれば、解決するかもしれません。
し、しないかもしれません (本流の翻訳が対応していなければ無理です。)

>> ◆確認になりますが、路線画面、右下2つ並んだ入力窓の下側は打ち込んだ数字が自動的に変化する仕様でしょうか?
「路線編集」という名前のウィンドウ ('w'キーで表示される) の中の、右側中段にある入力フィールドのうち
「設定開始/修正」と書かれたボタンの右にある数値入力のことで良いでしょうか?
(つまり添付画像の中の赤太線で囲ったところでよいですかね。)
自動的に変化するのは仕様ではなくバグです。修正します。

ただ、時刻表表示ウィンドウの中の回復アシスタントで同じことができるようになってしまったので、
この「路線編集」ウィンドウの中の操作を今後、残しておくか、このままか、などは悩んでいます。
(ここにあると、かえって機能の意味を理解せずに使われてしまいそうなので、
 gonyoさん式の均等間隔運転へ導くようなものに変えた方がいいと考えています。)

とり急ぎ、問題確認のむね連絡です。
いずれも修正は少々お待ちください。


o_o

  • ゲスト
◆再現手順変更、複数の路線を表示し、一部の編成のみが停車する駅を選んでソートを
 かけた場合にクラッシュする。従来の手順はもう少し確認してみます。
◆ソート後に路線を追加すると、クラッシュする
 これは、上と手順は似ていますが、エラーメッセージが表示されないまま停止します。
◆駅の非表示、路線追加、表示されている駅を個別に隠す。この手順でもブレたような挙動を
 見せますが、もう一度押さないと隠れません。
◆混雑ログは、表示の変更による物なら不自由もないので問題ありませんね。
◆>添付画像の中の赤太線で囲ったところでよいですかね。
 そのとおりです。入力して路線を切り替えただけで変更されますね。

おまけ)新Mapの方は、交通事情がだいぶ違うので、貨物調整いらねーってなりそう。
 前のは、シティカーが出始めたあたりで、道路じゃ鉄鋼運べませんって年代でしたし。。

 崖から崖へ勾配のない橋をかけられたら。。元の橋が架からなくなりますが ;D
« 最終編集: 2012/07/16 01:37 by o_o »

wackdone

  • 準急
  • ***
  • 投稿: 126
現象確認ありがとうございます。
ソートについてもコード上の字面にはほとんど問題が見当らないので、
やはりdangling pointer による広域破壊が影響しているのではないかと思われます。
このままでは、ご不便やご面倒をかけ続けるだけになりそうなので、
一端、TTTの方の怪しい部分を、よりチェックが固くできるよう書き直します。
(機能面は変わらず、GUIのコンポーネントの記憶管理などを変更する(多分、記憶消費は増えてしまう))

ですので、申し訳ないですが今は「怪しい機能は触らない」でお願いします。
問題の起こる手順割り出しには力を注がないようお願いします。

o_o

  • ゲスト
了解しました。乗りかかった船だし、と思いましたが、一度PC修復かけて
再設計が終わるまではTTTから離れることにします。

状況が落ち着いたら、また参加させて下さい  :'(

--07/16 22:05追記--
確認のため、セキュリティソフトでフルスキャンをかけましたが、問題は
発見されませんでした。
設計変更を行うのであれば、TTT-035以降は、公開停止にしておくほうが
良いのではないでしょうか。
« 最終編集: 2012/07/16 22:09 by o_o »

wackdone

  • 準急
  • ***
  • 投稿: 126
TTT-041と全部盛りバイナリ120717
« 返信 #74 on: 2012/07/17 05:07 »
半日で終らせるつもりが、丸1日強かかってしまいましたorz (まあ2000行くらい書きなおしているからしょうがいないか)
というわけで、連休は明けてしまいましたが、TTT-041をリリースします。
手元でいろいろ走らせる限りは、ソートの件なども含めてかなり安定してきています。
正直、過去のコードで正しさを追い切れなくなっていた部分は、思いっきり単純に書きなおしました。

どうか、いじめてあげて下さい (今回はいじめればいじめる程、どこがまずいかログも出るはず)

パッチはこの記事に添付。ja.tabは変更ありません。
バイナリは↓です。全部盛りで、今回は TTT-041/RRC-003/CWG-005/MIP-001となります。
MIPの機能もよかったら使ってあげてください。(ロード時ポーズは入れていません。)

http://ux.getuploader.com/wackdone_simutrans/download/18/simuwin-wackdone-120717.zip


メモリ管理まわりの仕組みを単純化しつつかなり冗長にチェックを入れており、若干動作は重くなっていますが、
« 最終編集: 2012/07/17 05:25 by wackdone »