ここをクリック

簡易複合単価による見積書の作成について
2015年6月4日
和田特機 株式会社
福村 光治
≪ はじめに ≫
以下の資料は、Tetra21にある「複合単価を作成する」コマンドを内側から明かすこと
で、Tetra21ユーザに正しい使い方を促す為のものです。
また、本コマンドを利用する価値があるか否かの判断にもご利用ください。
1.理論的根拠
明細を持つ内訳工事の単価が以下の式で表されているとします。
工事単価 = ∑Tj*Xj + ∑Hi
①
ここで、Tj とXj は j-番目の材料単価と数量で、Hi は i-番目の費用です。
第一項の∑は j について、第二項の∑は i についての総和ですが、
これ以降、一目瞭然の場合には、明示しません。
(Hを費用としましたが、付属品の様に材料に付随するものを含むこともあります)
次に、費用は、
Hi = ∑Aij*Xj + Ci
②
と表せるような、材料数量と線形の関係にあると考えます。
Aij は、j-番目の材料が、i-番目の費用に貢献する単価分です。
例えば、「歩掛*当該労務単価」のようなものです。
此処までの式は、
TとXを J 次元のベクトル、HとCを I 次元のベクトル、
Aを I 行 J 列の行列と考えれば分かり易いと思います。
即ち、
H = A*X + C
②'
です。
つまり、HがXの二次以上の項を含まないか、無視できることが、複合見積の前提で
す。
より正確には、数量に依存しない複合単価の条件です。
次に、①式に②式を代入します。
工事単価 = ∑Tj*Xj + ∑(∑Aij*Xj + Ci)
= ∑Tj*Xj + ∑∑Aij*Xj + ∑Ci
ここで、第二項の∑の順序を入れ替えて Xj で括ると、
= ∑{(Tj + ∑Aij)*Xj} + ∑Ci
= ∑Uj*Xj + ∑Ci
③
となります。Uは、
Uj = Tj + ∑Aij
④
で、第二項の∑は、i についての総和です。
①式と③式は、同じ型をしていますが、意味が違います。
簡潔に述べると、Hには材料に依存する部分がありますが、Cには有りません。
しかも、工賃の様に材料に依存する費用の場合、Cはゼロ若しくは無視しうる程度にな
りえます。
つまり、①が材工別、③が複合見積の内訳書です。
更に、④式は複合単価の算出式に相当します。
(Uj は j-番目の複合単価です)
結局、複合単価への変換とは、UとCを求めることに他なりません。
2.Tetra21での旧来の取り組み
当初の取り組みは、②式のAとCを費用行から求めることとしました。
計算式行では、ユーザの定義した式から、「歩掛*当該労務単価」相当の値を求め、
Cはゼロとしました。
しかしながら、式の自由度が余りにも高く、ユーザ毎の変換規則が必要となり、
精度も、かなり低いものとなってしまいました。
一方、一式物としての費用は、この方式では総てCとなってしまいます。
そこで、オペレータが個別に指示して材料に按分することで、Aに繰り込みました。
AとCが曲りなりにも求まったので、
④式から複合単価を求め、③式の複合見積書を生成させました。
3.Tetra21での新しい取り組み(モード8~15)
旧来方式の最大の欠点は、ユーザ毎の変換規則が必要なことと、精度の低さです。
しかも、オペレータが想定外の計算式を使えば、更に悪化します。
そこで、新方式ではAとCを解析的に求めることは断念して、
UとCを現象論的に(数値実験で)直接求めることとします。
とは言っても、②式の線形な関係が成り立つことを前提としています。
では、早速UとCの求め方を記しますが、
その前に予め計測する工事行の位置(測定位置)を決めておきます。
偶数モードなら物件行固定で、奇数モードの場合は、対象となるルート工事行です。
先ず対象となる見積書シートをコピーし、そこからゼロも含め金額のある非計算式行を
削除します。
そのシートを実験シートと呼ぶことにして、同期的に再計算を実行します。
結果、総ての計算式行の金額がCに相当します。
次に、排除した行の内、選択された工事枝をルートとするものを順に一行づつ、
実験シートの元あった場所に挿入し、その度に同期的に再計算を実行します。
但し、数量が少ないと誤差を生じ易いので、仮想数量として128を導入しました。
そして、計測工事行の単価の変化分を挿入行の数量で割って複合単価Uとします。
(内訳工事が有る場合は、それらの工事階層倍率も考慮する必要が有ります)
このようにして、計算式行からの寄与に関しては、UとCを直接求めることができます。
残念ながら、一式物に関して無力なのは、旧来と同様なので、引き続き「按分法」を利
用しました。
また、Cを総てゼロにしたいユーザの為に、
計算式行の「無条件のゼロ化」と「自動振分」の二つの機能を用意しています。
この方式の長所は、②に違反しない範囲で、計算式に捉われないことです。
逆に短所は、処理時間が長いことです。しかも規模の二乗に比例します。
4.手動による按分指示(モード8・9)
一式物の中には、複合単価に組み込まれるべきものもあり得ます。
そこで、ブラウズ中の明細行の内、チェックの付いた一式物(含計算式)の金額を、
チェックの無い明細行の単価に、按分して繰り込みます。
勿論、繰り込み先が無ければ、何もしません。
但し、このままでは、繰り込み先が余りにも漠然とするので、分類指定ができます。
指示は、按分元の計算式欄で
Dist=B(xxx;y1,y2,y3-y4,y5,,,)
と記入します。
xxx は使用する分類の種類(リンク番号)、
セミコロン以降の数値は、分類番号若しくはその範囲を表します。
(分類の種類と書きましたが、xxx は分類以外も可能です)
但し、この按分による単価への繰り込みは、合成品を含めないので、合成品が有る場
合は、ブラウズモードを「合成品を展開しない」にしてください。
このモードの長所は、希望する材料に繰り込みを指定できることですが、
逆に言えば、「手動による按分指示」では、指示の再現性が保障できません。
5.各行の按分指示による(モード10~15)
このモードでは、ブラウザからの指示を一切受けません。
従がって、如何なる表示状態でも、同一の繰り込み動作を行います。
但し、奇数モードの場合は、この操作範囲が左ペーンの選択工事内に限られます。
按分元となるのは、按分分類指定を持つ一式物若しくは計算式行です。
繰り込み先は、この按分分類指定を満たす分類の明細行で、自身が按分分類指定を
持たない行です。
繰り込みされたくない一式物や残価のある計算式の為に
Dist=B(xxx)
なる、空の按分分類指定を用意しました。
xxx は正の整数ですが、今後の機能アップに備えて、999 をお勧めします。
偶数・奇数共に3モード有るのは、合成品に対する繰り込み方の違いです。
10・11では、手動と同様に、合成品は対象外です。
12・13では、合成品も、内部限定ですが、明細間でのみ繰り込みます。
14・15では、自身の明細に含まれる合成品に対しても連鎖して繰り込みます。
これらのモードでは、按分指示を計算式行にも適用すれば、Cの取り扱いを個別(行
毎)に指定できるうえ、こちらも再現性に貢献できるようになります。
(計算式行の按分分類指定は、再計算に影響しません)
6.今後の課題
理論的には、ほぼ満足のいくコマンドに成長できましたが、使用目的に依っては、
多少の精度を犠牲にしてでも、複合単価を材料毎に端数処理したい場合も、有りそう
です。(最初の目的であった、LCC用の前処理では不要だった)
Tetra21の場合、必要な情報は総て揃っているので、要望があった時点で、
独立したコマンドとして実装(案)すべきと、思っております。