2020-10-01から1ヶ月間の記事一覧

アリさんのケーキ探し -- 大きい版

ちょっと拡張して遊んでみる。 これまでは3X3の世界だったが、4X4ではどうだろうか。 すこし広くなるだけで、計算量は膨大に増えるだろうが、それでも同じ理屈でできるはず。 とりあえず、シートを作ってみた。 どんなことになるかな。

アリさんのケーキ探し ―― コード

作ったコードは以下のようなもの。 3つの部分に分けた。 シートのセルを変数にしたし、繰り返しもfor-nextではなく、while-Loopにしたので、ほとんどDimは使わなかった。 この方がすっきりしている。 Sub step1() Dim Gran, Gran2 Range("b17") = Range("…

アリさんのケーキ探し ―― ほぼ完成

書き直していたら、もっと酷いミスを発見した。While-Loopを終わらせるためのカウンターの設定がされていなかった。道理で終わらないわけだ。 でも、こちょこちょ直したら、結構うまく行ったかな?という状態まできた。 これは回し終わった時の図。C12からG2…

アリさんのケーキ探し ―― 間違い見つけた

部品ごとに分けて書き直していたら、しょうもない間違いを見つけた。NQ2 = CQ + Gaku1 * (NQ - CQ)とあるべきところが、NQ2 = CQ + Gaku1 * (Ho - CQ)になってた。これではダメだ。 (いや、こうなっていると、どういう計算をしてしまうのか、ちゃんと見てい…

アリさんのケーキ探し --修正中

エクセルのシート、VBAを書き直し中。部品ごとに分けて考えれば、どこがおかしいか、わかりやすかもしれない。

アリさんのケーキ探し --進まない

どこが悪いのか探しているが、どうも進まない。 変更箇所の記録の仕方が下手なので、 あれ、どこ直したっけ、もとに戻すには、、、、 なんてことばかりやってる。

アリさんのケーキ探し ―― 何度かやってみたが、、、

さて、なんとかケーキに到達したら、それを何度も繰り返し、ケーキに至る最短ルートを求める!のだが、 Greedy比を次第に小さくしながら20回ほどやってみたが、8回目あたりから、Q値がみんな-1になってきた。これは変だ。これは、ケーキのある部屋以外の部…

アリさんのケーキ探し ―― とりあえずケーキ見つけて

何度も部屋を移動してもケーキまでたどり着かない場合は無視する、最初からやり直し、という条件をつける。『Excelでわかる機械学習超入門』では10回だった。しかし、10回でたどり着かないことが延々と続くといつまでたっても進まない。条件をちょっと緩和し…

アリさんのケーキ探し ―― 現状

マイナポイントの予約だの申し込みだのがうまくいかないのでいじけてます。

アリさんのケーキ探し ―― 変数とセルの使用について

コードがごちゃごちゃしてきたので多少整理。その際、ちょっと考えを改めた。本来、自分がやりたいのはPythonなので、VBAでコードを書く時にも、それに近い形にした方がいいのではないか。そのため、できるだけ変数を使って、その変数の中身を確認するために…

アリさんのケーキ探し ―― まだまだ序盤

各ステップについて、さらに微調整したが、まだ修正するところがあるかもしれない。数をこなして調べてみよう。 ということで、数をこなして異常値を探し出しているのだが、一つ、ランダムに行っていると、アリさんはなかなかケーキに到達しないということに…

アリさんのケーキ探し ―― もうちょい改善

ある程度うまく行ったかな、と思っていたのに、何回かステップを踏むうちに、やっぱり変なところがある。どこがいけないんだろう、と何度も見直す。途中途中の計算を書き出したり、電卓で計算したりしてみる。おかしいなあと20回ぐらい繰返すと、突然、あれ…

アリさんのケーキ探し ―― セルに名前を付ける実験

なんだか変なところで変な動きをしているが、何が問題なのかわかりにくいので、整理する。 整理のため、セルに名前を付ければ、行や列の変更、削除などがしやすいようになるはず。 名前を付けた後、offset機能がうまく行くかどうか、ひとまず実験してみた。A…

アリさんのケーキ探し ―― 少しは改善

なぜ「型が一致しません」などというエラーがでたのか。計算の途中途中でどういう数値になっているか、シートに表示させながらやってみた。すると、なぜかHoが空欄になる。さらに、なぜかJouR2が空欄になっている。 2回目、状態4から状態5に移った時はJouR2…

アリさんのケーキ探し ―― もうちょい進展

Sub Gか冒険か3() Dim Gran, Gran2, IT2, ST1, DR1 Gran = Rnd() Range("D10") = Gran ' Greedyで行くか、冒険で行くか、その結果どの方向に行くかを決める ‘ しかし、b10より小さければ冒険、としているが、B10が1なので、間違いなく冒険 ‘ b10は今後、だん…

アリさんのケーキさがし―― 一歩前進

『Excelでわかる機械学習超入門』では、Excelの新しいテクニック、使い方も教えてくれる。マクロを使わないという方針なので、人によっては回りくどいと感じるものもあるかもしれない。また、いくら「超初心者」にマクロは無理と思っても、この一つのセルに…

アリさんのケーキ探し――初めの一歩

まずは、3X3のマス目づくり。中段右側は入れない。その他の状態を示すものがいる。 こんな感じ。A1からC4までが、マス目の番地。アリさんがどこにいるのかは、J2で示される。K2はその行、L2は列。 その他いろいろあるが、説明は後。まずは、最初の一歩をgr…

アリさんのケーキさがし――できるかな

Python でのカタンも進めたいが、ちょいと脇道で、アリさんのケーキ探しをやってみる。 『Excelでわかる機械学習超入門』という本のなかで、Q学習を理解するために、3X3のマス目のはじっこにいるアリさんが、反対側の隅にあるケーキにたどり着く最短コース…

カタン、Pythonでは?--なかなかできない

せめて一人カタンでもするためには、家とか道とか都市とかを画面上に置けなければならない。エクセルでやる分には、新しい図を何枚でも上に重ねられるし、ドラッグすれば場所も変えられる。 しかし、pygameではそうはいかない。Tkinterでもそうだろうが、ク…

カタン、Pythonでは?―― マップできた

で、マップであるが、とりあえず、下のような形になった。 import numpy as np import pygame import numpy.random as nr import random import csv t1 = [0,1,1,1,2,2,2,2,3,3,3,4,4,4,4,5,5,5,5] p1 = [5,2,6,3,8,10,9,12,11,4,8,10,9,4,5,6,3,11] random.…

カタン、Pythonでは?―― マップできた、の前に

マウスを買ってきた。いい感じである。今まで使っていたマウスは、PCを買ったときに付いていたものだが、bluetoothを使ったワイヤレスで、左利き、配線嫌いの私は重宝していた。ワイヤレスは重要だ。時々使う漫画喫茶では、たいていマウスは右側においてある…

今日もまだお休み

新しいマウスを買いに行く時間が無かった。マウスが無いと、できないわけではないが、やりづらいので、今日もお休み。 たまにはのんびりオンラインでカタンをやろう。

今日この頃

マウスの調子がおかしい。クリックが反応しない。動かせば、カーソルは連動するので、電池とかの問題ではない。タッチパネルなので、PC作業は一応できるのだが、やはりやりづらいことこの上ない。ブツブツ。 買ってから6年ぐらいはたったかな。ホイールの調…

カタン、Pythonでは?―― マップ作り

タイルの位置を渦巻き状にする計算をpaythonにさせようかと考えたのだけど、事実上一つ一つ動かしていくのと同じことしか思いつかないので、やめた。そのうち、角度とかを考慮して順番を決めていく方法が分かるかもしれないが、今のところ無理。また、Python…

カタン、Pythonでは?―― トークンの順番その2

トークンの順番で、砂漠の位置にゼロを挿入することはできた。次は、トークンの位置の修正である。前にやったのは、上の段から、という形だったが、外側から内側へ、渦巻き状にしなければいけない。どうやって並べ替えるか! 結局、手でやった。 並べ替えて…

カタン、Pythonでは?―― トークンの順番

〇の位置がずれているので、少し上にあげた。 tt24 = np.array([0,60]) としていたのを、 tt24 = np.array([0,40]) ぐらいでいいだろう。位置としてはOK。次。トークン(生産力)の順番である。タイル(資源)はランダムだが、トークンはいわゆるABC配置で…

カタン、Pythonでは?―― トークンの位置、強引に

強引にやろう。要素一つずつならできるかもしれない。配列をフラットにして、ひとつひとつintにして、改めてリストにして、配列にして、形を整える。 import numpy as np tile12 = np.load('tileA.npy') tt24 = np.array([0,60]) tt25 = tile12[:,0,:] tt26 …

カタン、Pythonでは?―― 改めて、トークンの位置

pygameで図形を描く時、 polygon ではfloatでもできたのに、circle だとinteger しかダメなのか。不思議だが、改めて確認してみる。 import numpy as np import pygame tile12 = np.load('tileA.npy') tile2 = np.loadtxt(fname='dataC.csv', dtype=float, d…

カタン、Pythonでは?―― トークンの位置がうまく行かない

さて、トークンの位置を19個計算したので、これでいいのかどうか、とりあえず〇でもおいてみるか、と実験。 import numpy as np import pygame tile12 = np.load('tileA.npy') tt24 = np.array([0,60]) tt25 = tile12[:,0,:] tt26 = tt25+tt24 gray = (237, …

カタン、Pythonでは?―― トークンの位置

タイル(資源の種類)を置くことができた。正六角形19個。次は、トークン(生産力)の数値を置く。実際には、数値を書いた円を置く。そのためには、円の中心の位置を計算しなければならない。これは、正六角形の中心でもある。 正六角形の中心は、まあ、そん…