ここをクリックすると、項目ページに戻ります。
***************************************************
h13.01.10
===「簡単な評価関数を定義する」===
これまでコンピュータが展開図を作成するために必要な情報を簡単に見てきたが
それらをもとに評価関数を実際に立ててみよう。
しかし、ここでやはり問題があって、それは別のところに書いたことの繰り返しになるのだが
おりおでは「全体の評価関数の値が大きい方が望ましい」と定義したので、自然科学一般の
最適化問題に見られる「関数値がより小さいものを解として求める」という傾向と
逆になっている。人間の感覚で評価関数を論じるときはおりおのやり方で問題ないのだが、
コンピュータで与えられた条件のもとでの最適解としての展開図を求めようとするときは
「関数値がより小さいものを解として求める」方式にしないと、他の自然科学分野との
連携が不自然になって、困ってしまうのだ。そこで、コンピュータが展開図を求めるときは
展開図の位置エネルギー(E)を定義して、位置エネルギーが低いほうが望ましい展開図
ということにする。そうすると評価関数(H)と位置エネルギーの関係は
H= −E + α (式1)
であらわされる。これならEの値が低いほどHの値が高くなって定義に良く合う。
ではEの内容について見てみよう。くどくなるが、Eの値が小さいほど望ましい展開図で
あるということを忘れないでほしい。
これまで用いてきた例を今回も使おう。図1の形と表1の最近接可能距離を再確認してほしい。


とりあえず、Eを構成する項について箇条書きしてみる。
(1)E距離 円領域中心間の距離に関するエネルギー
(2)E場所 円領域が用紙の内部にあるか辺縁部にあるかに関するエネルギー
(3)E効率 用紙の使用効率に関するエネルギー
(4)E紙形 用紙の形が正方形か別の形かに関するエネルギー
とりあえずこんなところを扱ってみよう。
上記の(1)から(4)までを考慮すると、全体の位置エネルギーEは
E = k距*E距離 + k場*E場所 + k効*E効率 + k紙*E紙形 (式2)
といった形であらわせるだろう。ここで*は かけ算 の意味である。
k距、k場、k効、k紙、はそれぞれ対応するエネルギーの重みを表す。
例えば、用紙使用効率が重要だと考えるならばk効の値を大きくすればよい。
さて、よく考えるとEが式2で本当に表せるという保証はどこにもない、っていうか、
本当はこんな単純な式であらわせる訳がないのだが、最初から話を複雑にしても
しょうがないので当面は式2の形を使っていこう。これでも近似式としてはまあまあで、
現行の折紙設計プログラムよりは進化した形になっているはずである(多分)。
では各項の実際の計算式を見ていこう。
まず E距離 であるが、距離情報として扱うべきものは、前にも書いたが、
ABの距離、ACの距離、ADの距離、AEの距離、AFの距離、BCの距離、
BDの距離、BEの距離、BFの距離、CDの距離、CEの距離、CFの距離、
DEの距離、DFの距離、EFの距離、という15通りの点の組み合わせに関するもの
である。このうちAB、AC、CD、DE、EF、BF、については、その実際の展開図上
での距離が、対応する最近接可能距離と等しいときに、最も望ましく(つまりエネルギー最小)
なるように式をたてればよい。これも、いろいろな工夫ができるところだが、
最も簡単なものは各組み合わせごとに下式の値を計算して合計することである。
なお、下式では例として組み合わせABについて書いているが、他の組み合わせの
計算式も全く同様である。
ABの距離に関するエネルギーを Eab、
ABの展開図上での実際の距離を Lab、
ABの最近接可能距離を Labmin、とすると
Eab = k*(Lab−Labmin)*(Lab−Labmin)
ここでkは各組み合わせごとの重みをあらわす適当な係数である。
また、AD、AE、AF、BC、BD、BE、CE、CF、DF、については、
その実際の展開図上での距離が、対応する最近接可能距離以上であれば同じように
望ましいわけだから、例として組み合わせADについて書いてみると、
LadがLadminより小さいときは
Ead = k*(Lad−Ladmin)*(Lad−Ladmin)
LadがLadmin以上のときは
Ead = 0
としよう。
以上を総合して考えると、E距離の値は以下のようになる。
E距離= Eab+Eac+Ecd+Ede+Eef+Ebf+
Ead+Eae+Eaf+Ebc+Ebd+Ebe+Ece+Ecf+Edf
さて、よく考えるとE距離も本当は上式のように表せるという保証はどこにもないが
ようするに、近似式としてこんな感じのはずということである。
こんどは円領域が用紙の内部にあるか辺縁部にあるかに関するエネルギーであるE場所について
考てみたい。
それには用紙をどういう風に表すかを考えなくてはいけない。できるだけ簡単な
定義のほうが良いので
-a <= x <= a
-b <= y <= b
を満たす四角形で用紙を表すことにしよう。ここで、aとbは変数であることに
注意しておいてほしい。
すると、例えば円領域Dの中心のx座標とy座標をDx、Dy とし、
点D(辺在性の点とします)に関する場所のエネルギー値を E場所(D) とすると、これは例えば以下のような関数で表せる。
E場所(D)=min(abs(Dx*Dx−a*a) , abs(Dy*Dy−b*b) )
ここでmin(α,β)はαとβの小さいほう値をとるという関数である。
また、abs(γ)は、γの絶対値の意味である。
この式は実際に図にしてみるとは非常に簡単な形で、用紙の境界線の上だけが零で、
それ以外は何らかの正の値をとる関数である。
こんどは、用紙の使用効率に関するエネルギー(E効率)について考えてみよう。
単純に用紙の使用効率が高ければ高いほど良い展開図と仮定するなら、例えばであるが
E効率= a*a+b*b
といった式で一応簡単に表すことができる。
最後に用紙の形が正方形か別の形かに関するエネルギー(E紙形) は今回は
正方形を優先するという評価関数を考えることにしたいので、一例として
E紙形=(a-b)*(a-b)
と書くこともできるであろう。
以上でだいたい評価関数の実際の形をとりあえず定義したことになる。
ただし、この評価関数は、多くの創作者が重要視する原子の角度等の考慮が
なされておらず、不満を感じる人も多いと思う。ただ、原子の角度の扱いは、面倒なので
とりあえずは、今定義した評価関数を実際にプログラム化することを行ってみたい。
ここをクリックすると、ページ戻ります。