checkBrotherOrderで微細な移動を実行

源氏物語全系譜6.1.ZELの直系血族図 #318 右大弁(桐壷)で三極検定レッドラインオーバーが起きた.これはかなり信じ難い動作だ.右大弁(桐壷)は親なく子なく妻もなしなので,直系血族図には本人カード1枚しか残らないはずだ.それがエラーになるとは何かが「狂って」いる.REDLINE値がゼロになっている.現在この変数には「結婚数」が設定されている.⇒1よりも小さい値にならないよう修正した.

同上の傍系親族図を#5 紫の上(若紫)で開いて,TRIBEBOX:StackTribeGeneで停止した.completeの状態にある系列枠の検査でCheckMaximalSegment不合格になっている.この検査では「インター系列シンメトリ婚の場合は他系列での移動が配置に影響する場合がある」ため除外されている.障害が起きているのは,TRIBEBOX #1548 先祖=#1231 一院(0)[6] 優先=#1673 朱雀院(1)→#1347 源氏宮(0)で,主系列は主系列#1540:先帝だ.

StackTribeGeneではsetcompleteでCheckMaximalSegmentの検査を通している.セグメントは3つに分離している.①#1231 一院(0)とその結婚枠#1055:#1231 一院(0)+→#1648 桐壷院(1),②#1685 八宮の母女御(1),③それ以外だ.八宮の母女御は何も特別な属性を持っていないが,たとえば,BTW解除などのことが起きているのではないか?⇒そういう状況ではないが,結婚点不一致が起きている可能性がある.⇒八宮の母女御の子ども枠はTYWになっているため結婚点一致できない.承香殿女御 (桐壷院の)→四宮 (桐壷院の)もTYWになっている.麗景殿女御 (桐壷院の)まではセグメント[4]になっている.また,②つのTYW枠も[4]になっている.

八宮の母女御だけが[6]という理由が分からない.⇒TRIBELIST::CheckMargBoxChangedの中で何らかの変異が起きている.おそらく,微細な調整で無視されているようなものだろう.

MARGBOX::checkBrotherOrderで移動量-1の移動が実行されている.この移動は誤差の範囲なので戻り値では返されていない.微細な移動は実行しないか,ないし実行して結果を報告するかの2択しかない.「微細な移動は実行しない」というのがもっとも確実だが,おそらく描画はやや精度を欠くものになる可能性は避けられない.実行した場合には最悪処理が発散ないし循環してしまう可能性がある.とりあえず,実行するという方向で修正してみよう.⇒少なくともこの反例に関してはこの修正で収まった.これでしばらく様子を見ることにしよう.

image

八宮の母女御の子ども枠はTWY解除されて直下に収まっている.承香殿女御のTYWは残っている.

ZT BASICで源氏物語全系譜6.1.ZELの完全木テストが通った.

image

この続きはVAIO2でやることにしよう.⇒早速エラーが出た.ZTシステム構成図7.ZELの全体図:#24 UNDOCHAINで垂直スプリットが発生している.ただし,開発環境では再現しない.サンプルは同じZTシステム構成図7.ZELだが,VAIOにあるのはカード数が1少ない.それだけでここまでの差が出るのかどうか?開発機では別のエラーが出た.

ZTシステム構成図7.ZELの法定親族図:#7 topologyでMPLCループレッドラインオーバーが発生した.⇒昨日の修正を戻して解消した.やはり,「checkBrotherOrderで微細な移動を実行する」というのは無理がある.以下のように仕様変更することにした.

  1. checkBrotherOrderで計算誤差範囲の移動が発生した場合:
    移動は実行するが,crushはインクリメントしない
  2. 移動を実行した場合には,対象系列をincompleteとする

NAMEBOX::originateでは変位が計算誤差を超える場合には,CancelStackを実行して系列枠をincompleteにしている.これをつねにCancelStackを実行するようにした場合には収束しなくなる可能性が出てくるので現状のままとする.この意味ではcheckBrotherOrderでも微細な移動はすべて無視するものとし,StackTribeGeneではCheckMaximalSegmentで停止しないようにするというのが一番合理的であるような気もする.⇒そのように対処した.

VAIOのZTシステム構成図7.zelを7.1.zelにリネームして開発機にコピーした.このサンプルを開くと開発機でもエラーを再現できる.

▲ZTシステム構成図7.1.ZELの全体図を#24 UNDOCHAINで開いて,TREEVIEW::InvestigateVSplitsの垂直スプリットエラーが発生する.しかし,実際にはスプリットは発生していないように見えるので,事実誤認が疑われる.

image

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA