Fixstars Amplifyインストールメモ(WSL用)
概要
Windows(WSL)でFixstars Amplify SDKをインストールするためのメモです。
WSLの環境構築
WSLを有効にし、Ubuntuをインストールしてpythonをインストールします。
https://qiita.com/rhene/items/ff11c7850a9a7617c50f
Jupyterもあると非常に便利です。
https://qiita.com/hiiragi1104/items/c2e9042bc6170873a859
そしてAmplify SDKをインストールします。
https://amplify.fixstars.com/docs/quickstart.html
しかし、このままだとimport時にエラーが発生する可能性があります。
その場合は、Amplify SDKのインストール先が他のモジュールと異なるフォルダになっている可能性があります。
上の画像では、pip show numpyとpip show amplifyでそれぞれのモジュールがインストールされているフォルダを表示しています。
環境によってフォルダの構成が異なる可能性もありますが、私の環境では、
C:\Users\(ユーザー名)\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\rootfs\home\(Ubuntuユーザー名)\.local\lib\python3.8\site-packages
の中にある
amplify-0.4.1.dist-info
amplify.cpython-38-x86_64-linux-gnu
の2つ(バージョンによって名前がちょっと違うかもしれない)を、
C:\Users\(ユーザー名)\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\rootfs\usr\local\lib\python3.8\dist-packages
に移動すれば実行できるようになりました。
FIXSTARS AMPLIFY ハッカソン 提出物のまとめと個人的ベスト3
概要
先日開催されたFixstars Amplify ハッカソンでは非常にレベルが高い提出物が多くみられました。アイデアの個人的なまとめおよび最終審査結果を予想して楽しもうと思いこの記事を作成しました。知り合いのものに関しては正当に評価することは難しいため、ベスト3には入れないことにします。(頼む、優勝してくれ……!)
参戦記にはこちら
第1位
Champlify
https://github.com/Kei18/champlify
ターゲット割り当て&経路計画を同時に解く最適化問題です。実際に動きが見れるアプリケーションや、応用先が多岐にわたることなどから1位とさせていただきました。素晴らしいアイデアです。
第2位
一次元アーキテクチャにおける量子ビット割り当て問題
https://github.com/SoshunNaito/amplify_hackathon_sample
量子ゲートの回路設計を量子アニーリングでやるの格好良いですね。
第3位
IsingRegisterAllocator
https://github.com/kumagaimasahito/IsingRegisterAllocator
従来はチャイティンの方法(古典的)やlinear scan allocation(最近?)、整数計画問題による解法などで行うレジスタアロケーションを量子アニーリングで行ったもののようです。
チズチズ君の提出物
浅(くて広い)層学習
https://github.com/Chizuchizu/amplify-hackathon
普通に優勝あるんじゃねって思ってます。
えぽぱか君の提出物
イジングマシンを利用した箱詰めパズルソルバー
https://github.com/epopaca/fixstars_amplify_hackathon
神スライド。アイデアも良いしスライドが神。
その他参加者の提出物
本棚に本を見栄え良く配置する
https://github.com/tsu-hashi/amplify_hackathon
Scratchで組合せ最適化
https://github.com/na0t0/amplify_hackathon
Fixstars Amplifyの天体観測への応用の試み
https://github.com/ayatabe21/Fixstars_Amplify_hackathon
誰でも簡単シフトスケジューリングサービス
https://github.com/Tlapesium/SSSS
スパムコメント分類器
https://github.com/morishitamakoto0330/amplify_hackathon_sample
サイゼリヤ1000円ガチャ
https://github.com/tenugui-taro/amplify_hackathon_saizeriya_public
イジングマシンを用いたクラス分けツールによる教員の負担削減
https://github.com/tawada/amplify_hackathon
三択コンパイラー
https://github.com/ohisama/santaku
FGO optimization
https://github.com/github-nakasho/fgo_amplify
床に紙を並べる
https://github.com/otosula/paper-on-floor
Even – Odd Classification On Annealing Machines
https://github.com/speQtrum/Fixstars_Amplify_Hackathon_2021
グループ全体の好みを考慮した楽曲リスト自動生成ツール
https://github.com/mks1412/omakasetli/tree/aef38ed420fbab5a4cbd9bead3cca6f8f62734e5
イジングマシンによる楽曲の自動生成
Fixstars Amplify ハッカソン参戦記
経緯
チズチズ君が何か呟いていたので見てみると、量子アニーリングを使ったハッカソンが開催されるとのことでした。量子アニーリングについては心得がある(前記事:実践的QUBOなどをご覧ください)ので、軽い気持ちで参加してみました。
ハッカソン概要
量子アニーリングマシン・イジングマシンを実行するためのクラウド基盤であるFixstars Amplifyを使ったアプリケーションを開発して競う大会です。 量子アニーリングマシンを使うと組合せ最適化問題の解が高速で求まります。
https://amplify.fixstars.com/hackathon00
テーマの選定
開催期間は年度末で業務が忙しいため、とりあえず簡単なテーマで行くことを開催前から決めていました。他社の量子アニーリングマシンの性能検証をしていた際に、巡回セールスマン問題などの既知の問題のほかにもオリジナルで競技プログラミング問題のQUBOをいくつか作成していたのでこれで行こうと決めました。使用した問題はこちら。
AtCoder Regular Contest 001 B – リモコン
https://atcoder.jp/contests/arc001/tasks/arc001_2
QUBOはハッカソン開催前にiPadのノートにゴリゴリ書いていて既に完成していたので、定式化を含めたプログラム作成時間は1日もかかっていません。内容的には地味なので、結果の可視化やスライドに多少力を入れました。
テーマの意義
テーマの問題自体はそう難しくないものの、競技プログラミングの問題をアニーリングマシンで解くという試み自体に高い意義があると思っています。
・競技プログラマの人口は増加しており、量子アニーリングに興味を持ってもらうことで高レベルな量子アニーリング人材の確保に繋がる
・多様な問題に対するQUBO定式化に取り組むことで、定式化に関する技術の累積が可能となる
・上述のQUBOを実際に計算することで多角的にマシンの性能評価を行うことが可能となり、アニーリングマシンの適用限界等に関する知識の蓄積が可能となる
以上のことから、このテーマは誰かが必ずやるべきだと感じていました。ネタがかぶってしまったらどうしようもないですが、それでも誰もこの取り組みをやらないという悲劇を避けるためにもこのテーマで行きました。
提出物
実際に提出したものがこちらになります。
https://github.com/YukiUtaai/amplify-hackathon
結果
4/16にメールにて、1次審査落選の知らせが来ました。ニッチな分野なので、参加者がほとんどいなくてお葬式ムードの中で最優秀賞になったらどうしようかなどと想像していましたが、杞憂でした。
1次審査落選は正直なところ想定外でした。賞に関しては貰えたらラッキー程度に思っていたので良いのですが、審査員の前で競技プログラミングを量子アニーリングの観点から取り組むことの意義についてアピールする機会を得られなかったことが極めて残念でなりません。(余談:最終審査日である4/24は誕生日なので微妙な気分になりましたが、せっかく時間ができたので、母とパスタを食べに行こうと思います。ディナーは高級鉄板焼きにしようと思います。)想定よりも参加者および提出物のレベルが高かったことに関しては素直に喜ばしく、アイデアを参考にさせていただこうと思っています。
今後について
今回の提出およびこの参戦記を通して、競技プログラミングの問題をアニーリングマシンで解くことの意義を伝えることはできたかと思います。ハッカソン終了後も定期的にAtCoderの問題をFixstars Amplifyで解き、コードをgithubに上げ、Twitterにて発信しております。今後も定期的に発信を続けていけたらと思っています。
今後同様のハッカソンが開催されるのであれば、弊社の許可を得て全力でリソースを費やして圧倒的なプロダクトを提出したいです(一番の関門は許可を貰うところです)。
その他
他の方の提出物は本当に力作ぞろいでした。個人的な提出物ベスト3なども掲載する予定でしたが、思ったよりも長くなってしまったので記事を分けようと思います。最終審査日である4/24前には公開したいです。
実践的QUBO
これはなに
量子アニーリングマシンで計算したいときにQUBOの係数を行列形式にする必要がありますが、世の中の情報サイトではQUBOの式までしか書かれていないことが多く(しかもその式のΣの範囲が省略されていたりする)、計算実行までのハードルが高いと感じました。そこで、実際に計算するときに必要なij成分の係数まで書き下した資料を作成しました。現在はFixstars Amplify SDKの登場によりここまでする必要が薄くなってきましたが、複雑なQUBOを投入する場合には成分単位で扱えた方が良いと思います。
【初心者向け】寿司打高級一発攻略
この記事はタイパー Advent Calendar 2018 – 10 日目の記事です!
はじめに
どうも、よーじょです!
みなさんは、寿司打というタイピングゲームをご存知ですか?
普段からタイピングゲームをやっている方はもちろん、そうでない方も大体知ってると思うのでゲーム自体の説明は省略します!
寿司打には難易度が5種類、コースが3種類あります!
その中でも、難易度が一発勝負(キーを一度でも打ち間違えたり、お皿が流れてしまうと終了です)、コースが高級(文字数9~14文字以上、制限時間120秒)の組み合わせは、タイパーの中では高級一発と呼ばれており、難易度がとても高いことが知られています。
タイパーの方であってもなかなか得を出せない人も多いのではないでしょうか。
そこで、今回は高級一発の攻略に特化したタイピングの方法について解説します!
寿司打高級一発を打ち切れない理由
言うまでもないことですが、以下の2つのうちどちらかが原因です!
・キーを打ち間違える
・寿司が流れてしまう
ある程度タイピングしている方を読者として想定していますので、後者については割愛します(流れる前に打てるくらい速くなりましょう!)
キーを打ち間違えないために
とりあえず打ち切るためには、
速度は最低限まで落としてとにかく正確に打ちましょう。
とはいえ、それが一番難しいと考えている方も多いと思いますので、私が、
† 絶 対 に 正 確 性 を 落 と せ な い †
場面の時に意識していることを記していきます!
日本語を読む(ローマ字を読まない)
私の経験上、
ローマ字を読むとミスが増えます!
理由は色々あるのですが、
・1文字の情報量が少ない
・普段使わない打ち方が表示されることがある
といったことが主に挙げられます。
前者については、上記の例だとローマ字だと11文字なのに対して、日本語だと4文字です。日本語の方が認識ミスが起こりづらいと思います。
後者については、上記の例だとjuではなくzyuと打ちたい方も居るかと思いますし、ワードによってcやkを使い分けている方にとってはローマ字読みは混乱以外の何も生みません。なので、
日本語を読むようにしましょう!
(ふりがなつきのモードもありますので、漢字が苦手な方はそれでプレイすると良いでしょう)
ひらがな1文字1文字に分解する
「平均寿命」というワードが来た場合に「へ / い / き / ん / じゅ / みょ / う」という風に、
1文字ごとに分解して打って、合間に少し指を止めましょう。
ミスというのは長い文章で慣性が働いている時に起きがちなので、
1文字単位に分解することでミスを大幅に減らすことが出来ます。
寿司打のワードに慣れてきたら、「文節ごとに打つ」→「一気に打ち切る」といったようにステップアップをしていくことでスコアを上げていきましょう!
キーの中心を打鍵する
当たり前だと思う方も多いかもしれませんが、ミスが関係しないタイピングゲームの場合は、かすりミスを気にせずに近くのキーを巻き込んで打鍵することも少なからずあるかもしれません。
せっかく1文字ごとに分解したのに、その1文字の打鍵精度が低いと苦戦を強いられることになります。なので、
キーの中心を打鍵してください!
音読する
声に出しながら打つことで、無駄に加速することを抑えることが出来ます。
また、声に出して読めている時点で認識ミスを排除できているので、声に従って打鍵すれば、
正確性をほぼ100%にすることができます!
目をつぶる
表示されているワードを覚えてしまえば、目に見える情報は必要ないので、
実は、目をつぶって要らない情報を遮断した方が正確に打鍵できます。
応用編として、アニメを見ながら寿司打を打ったりするのも有効です!
睡眠を十分にとる・体調を整える
体調は大事です。特に睡眠不足は認識力低下に直結しますので、個人差はありますが、
8時間くらいの睡眠を確保すると良いと思います!
おわりに
いかがでしたでしょうか?以上の事を意識することで、
☆寿司打高級一発を打ち切れる可能性が上がります!☆
このような記事を見ていただき、
ありがとうございました!!!!!
最近正確性が上がらない…なんで?原因を分析してみた
はじめに
どうも、よーじょです!
みなさんは、なぜか正確性が上がらない現象が続いていて困っているみたいな事はありませんか?
私もちょうどそうなっていて、最近は正確性が上がらなくて困っています。
そのため、このような状況を脱却するために
正確性が上がらない原因は何か?
について、考えてみました!
正確性が上がらない理由
調べてみた結果、以下のような原因がある事がわかりました!!!
・正確にキーを押せていない
・正確性が上がると正確性が上がりづらくなる
・タイピングゲームをあまりやっていない
これらの原因について、なぜこのような事になっているのか考えていきます。
正確にキーを押せていない
実は、正確にキーを押した方が正確性が高くなりやすいです。
残念ながら、最近のぼくはあまり正確にキーを押せていません・・・
そのため、正確性が上がりづらいようです!
正確性が上がると正確性が上がりづらくなる
基本的には、正確性が低いほど正確性が上がりやすいです。
正確性が上がらなくて困っている…みたいな人も、それは自分の正確性が上がったからです!
そのため、焦らなくても大丈夫です!!!!!
(ちなみに、ぼくの正確性は大体100%ですが、これより高くするのは結構難しいみたいです!)
タイピングゲームをあまりやっていない
どこかで聞いた事のあるはなしですが、タイピングゲームをやらなければ正確性は変化しません。
そのため、まずはタイピングゲームをする事が大事なようです!!!!
おわりに
いかがでしたでしょうか?今までの話をまとめると、
タイピングゲームで正確にキーを押す!
事が、正確性を上げる事につながるようです!
このような記事を見ていただき、
ありがとうございました!!!!!
参考
SIMロック解除と格安SIMでのテザリング有効化(docomoロム)
docomoで買ったGalaxy Feel(docomoのSIM)とXperia Z5 Premium(dmmのSIM)の2台持ちなんですけど、今回Xperia Z5 PremiumのSIMロック解除と格安SIMでのテザリング有効化をしてみました。
・海外に帰省するのでSIMロック(docomoのロム)解除しておきたい
今日はたまたま会社が休みだったのでdocomoショップに行って昔買った携帯のSIMロック解除したいんですけどーって言ったら自分で出来ますよって言われた(しかも自分でやったら手数料かからない)。ということでSIMロック解除しました。基本的には下記リンクの通りにすればいいです。
My docomoからSIMロック解除を行う方法(Android編)
・IMEI番号が必要な場合は、ダイヤルアプリのキーパッドから「*#06#」と入力すれば表示されます。
・docomo系以外のSIMを持っていなくてSIMロック解除画面が出なかったので詰んだかと思いましたが、ダイヤルアプリのキーパッドから「*#*#7465625#*#* 」と入力すればSIMロック設定画面が表示されるので、「ネットワーク」をタップして解除コードを記入したらちゃんと解除できました。
・前々からMVNOでテザリングできたらいいなぁと思っていた
ツイッターとかブラウザみたいに大して回線強度が必要ない場合は出来る限りdmm使いたいなーと思ってました。docomoのロムだとdocomo純正のSIMじゃないと(たとえSIMロック解除をしていたとしても)テザリングが出来ない設定になっていますが、調べてみると有効化できるようなのでやってみました。(最近のdocomo端末だと最初から有効化されてるっぽいです)
必要な物:パソコン・USBケーブル(転送機能あり)
前準備:パソコンにAndroid SDK Platform-Toolsをダウンロードして展開してパスを通す
スマホで開発者向けオプションを表示させてUSBデバッグモードをONにする
手順:USBケーブルでパソコンとスマホを接続
→コマンドプロンプトを開く
→adb shell settings put global tether_dun_required 0 と打ち込んでエンター(※)
→exit と打ち込んでエンター
※Androidのバージョンによってコマンドが違うみたいです(参考)
何が必要なのか書かれてない記事が多すぎてたらいまわしにされました。(いきなりadb~って書かれてるからその通りにしたらそんなコマンド無いって言われるし、デバッグモードONにしてなかったのでデバイスがありませんみたいなエラー出るし)
寿司打高級一発一発大会結果まとめ
ツイッターで検索するのが面倒なのでまとめときます
第1回
第2回
第3回
第4回
一発一発じゃないやつ(30分間打ち放題)
自己べ(メモ)
AtCoder Regular Contest 099 D – Snuke Numbers 解法
運良くラッキーパンチが通りました。レートが上がったのは意外。
解説見てもよくわからなかったので、同じくわけわからなかった人たち向けに、強引に通した方法を記しておきます。
まず実験してみます。とりあえずn<100で横軸n、縦軸n/S(n)をプロットしています。ここで、すぬけ数は1~10, 19, 29, 39, 49, 59, 69, 79, 89, 99ぽい気がします。とりあえず9が含まれてたらS(n)が大きくなるので強そう(推測)
ただ、ここで気になったのが、これより大きい全てのmに対してn/S(n)≦m/S(m)となる保証が無いということです。(下記の通り)
そこで、大きい数から計算していくことを考えました。こうすることで、nがすぬけ数のとき、l/S(l)≦n/S(n)となるlが見つかれば、それがすぬけ数になるので深く考察する手間が省けます。(明らか)
99がすぬけ数だとすると、89はすぬけ数→79はすぬけ数→…と確定していきます。
今回はK番目のすぬけ数が10^15以下という条件なので、K番目のすぬけ数は多分10^15-1(9が15個並ぶ)です(推測だけどたぶん簡単に証明できそう)。
なので、ここからループを回していきます。基本的な考え方は、
9999999 → 8999999 → 7999999 と一番左の数を1減らしていってそれまでのn/S(n)以下であればすぬけ数として追加
ただ、これだと上手くいきません。下図のように、99999→89999→…→29999までは左端の数を1減らしていった数のみがすぬけ数になりますが、29999からは、29999→28999→27999→…といったように、左端から2番目の数を1減らした数もすぬけ数になります。
なので、9999999→9899999を調べてすぬけ数になるか確認し、ならなければ8999999といったような調べ方をしました。
この調べ方で出力したすぬけ数をソートして提出したらランタイムエラーになりました。つまり、配列が足りなかった(すぬけ数が足りなかった)ということが考えられます。
そこで、
9999999→(9999899, 9998999, 9989999, 9899999, 8999999を順に調べる)
のように左端から5桁目までを調べたすぬけ数を提出したら正解になりました。