AtCoder Heuristic Contest 003 参加記

AtCoder Heuristic Contest 003に結構時間を溶かして参加し、96.7Bで暫定29位でした。 https://atcoder.jp/contests/ahc003 解法 ベースはRidge回帰+ダイクストラで最短路を選択 M=2を意識して行/列ごとに2個パラメータを持たせるようにした 最初の90ター…

フロントエンド何もわからない(その6)〜 Introduction To Heuristic Contestのビジュアライザを作った

threecourse.hatenablog.com のつづきです。 今回の成果物はAtCoderのIntroduction to Heuristics Contest のビジュアライズで、人間では到底良さげな解に到達できないところ、最適化だと1秒程度で綺麗な解を出してくれるのが見てて面白い。 visualizer.thre…

マラソンマッチのビジュアライザいろいろ

マラソンマッチのビジュアライザについて、各者/各社さまざまな作り方をしているので、まとめてみました。 longcontest-visualizer-framework kimiyukiさんのlongcontest-visualizer-frameworkおよびRCO/リクルートの日本橋ハーフマラソンで使われている方…

ソフトウェアのアーキテクチャについて(その3)~ 良書とクリーンアーキテクチャ

以下の記事の続きです。 threecourse.hatenablog.com ドメイン駆動設計についての書籍 ドメイン駆動設計周りを学ぶには、以下の2冊が良さそう。 「実践ドメイン駆動設計」から学ぶDDDの実装入門 www.amazon.co.jp/dp/B07S675HVM amazonレビューを見るとスル…

AtCoder Heuristic Contest 002 参加記

atcoder.jp スコア4.32M 107位 パフォ2117でした。 解法 mmlang (https://github.com/colun/mmlang) を使ってビームサーチ 点数は見ない 36分割して一筆書きのルートを設定し、できるだけ進みが遅い方を加点、ルートからはみ出たら減点 評価がタイのものは乱…

colunさんのMM Languageを学ぶ

colunさんの作成されたMM Languageを学んでみます。 https://github.com/colun/mmlang https://github.com/colun/mmlang/blob/master/doc/introduction.md マラソンマッチに勝とう!という目的というよりは、DSLや抽象化を考察することで何かに役立てられな…

ソフトウェアのアーキテクチャについて(その2)~ ドメイン駆動設計から得られる知見

以下の記事の続きです。 threecourse.hatenablog.com 参考文献 以下の本でドメイン駆動設計について学んだところ、小〜中規模のプログラムの設計・記述についてもなかなかの知見・示唆が得られたので、まとめてみます。 エリック・エヴァンスのドメイン駆動…

フロントエンド何もわからない(その5)〜 React Hooks + Redux + TypeScriptでいいんじゃね

去年から悩んで来ましたが、React (React Hooks + Redux) + TypeScript に落ち着きそうな気がしてきました。 前提 Webページの制作よりは、ヒューリスティックコンテストや数理最適化などのビジュアライザをさくっと作るのが主な目的です。 メインのフレーム…

ナーススケジューリング問題を焼きなましで解いて可視化する

この記事は、数理最適化 Advent Calendar 2020 の17日目の記事です。遅刻してすみません・・。 qiita.com 今回は、ナーススケジューリング問題と呼ばれる勤務シフト作成問題を焼きなまし法で解いてみました。*1 Reactで可視化したので、以下リンクをご参照下…

poetry publishでPyPIに勝手に公開されないのかどうか

poetry publishをうっかり実行してしまい、privateなファイルが全世界に公開されると困るので。。 自分だけならまだ注意すれば良いけど、人に薦めることを考えると気になります。 結論 poetry new <package-name> からpoetry publishをしてみたところ、以下のようにまー大</package-name>…

ソフトウェアのアーキテクチャについて

最近、小〜中規模のプログラムを保守性高く記述するにはどうすればよいかが気になっていて、 ソフトウェアのアーキテクチャについて調べていました。 本を読んでみる 以下の本を浅めに読み通してみました。どの本もそれぞれ学ぶべき点があって興味深かったで…

C#からC++を呼び出してポインタを使う

C#からC++を呼び出す方法を調べていたのですが、ポインタつかってごにょごにょできることを知って驚きました。 安全に使うには当然いろいろと気をつけなくてはいけないのですが、C++ではここまでできるのかと。 ソースコード lib.hの記述 class Value { publ…

Rustでヒューリスティックコンテストを解いてみる

Rustのお勉強として、RustにIntroduction to Heuristics Contestの解答を移植しました。 atcoder.jp スコアはC#並、コードテストでの試行回数は2倍程度でした 解法はtomerunさんの解法(https://twitter.com/tomerun/status/1277241962106511360)を参考にし…

Kaggle Haliteを強化学習で解こうとした話

本記事は 強化学習苦手の会 Advent Calendar 2020 - Adventar 8日目の記事とするべく、コンペ終了後に書いた記事に追記しました。 7日目の記事(Kaggleの強化学習コンペがグダグダだった話 - Qiita)への返歌みたいなものになります。 雑感 強化学習でどこまで…

Connect Fourをちゃんと強化学習できた話

アルファ碁ゼロの手法で、Connect FourというゲームのAIを強化学習で作成させてみました。 Connect Fourは、「重力付き四目並べ」のようなゲームです。(四目並べ - Wikipedia) そこまで探索空間が大きすぎず、またソルバーもあるため、強化学習が正しくで…

フロントエンド何もわからない(その4)

今回は、かなり自分用のメモです。 やりたいこと 計算結果のデータをGCP上に貯めたのちに、Vue.jsなどを使ってビジュアライズしたい。 自分しか使わない ソリューション いろいろ調べた限り、以下が良さそうでした。 構成 ミニマムに作るとき tornadoなどのp…

Google Cloud Runで想定外の課金が発生した話

ヒューリスティックコンのパラメータチューニングをGCPでやる - threecourse’s blogを試している中で、Google Cloud Run(以下、Cloud Run)で1万円使ってしまったので、 同じようなことを試す人がもしいたら(あまりいないと思いますが・・)ということで注…

ヒューリスティックコンのパラメータチューニングをGCPでやる

AtCoderのヒューリスティックコン(https://atcoder.jp/contests/intro-heuristics)のような短時間のコンペのパラメータチューニングをGCPで行ってみました。 理想のラン環境を求めて - threecourse’s blog のつづきです。 (ソースコードは、敵に塩を送り…

継続的インテグレーションについてのメモ

参考資料 少し古いが、テストの分類など以下のスライドがよくまとまっている。 継続的インテグレーションとテストの話 from Preferred Networks www.slideshare.net また、CircleCIでチュートリアル+αをやりました。 circleci.com (CircleCIのドキュメント…

競技プログラミングの解説に必要な要素

AtCoderの解説についての議論があったので、考えたことを書いてみました。 最近あんまりratedに参加していない中、外からなんやかんや言うのはあれなのですが、何かの足しになれば。 (私のアカウントは https://atcoder.jp/users/threecourse です) 解説に…

フロントエンド何もわからない(その3)

しばらく経つといろいろ忘れますが、覚え直すと少しずつレベルアップしている感じはありますね。 今回は、グリッド上に情報を表示するGUIを作ってみたかったため、8クイーン問題を題材にしました。 WebページはGitHub Pagesを使って公開しています。 threeco…

理想のラン環境を求めて

Kaggleやマラソンマッチで、ランをサクッと投げたいというモチベーションのもと、GCP(Google Cloud Platform)の構成を調査していました。 以下のリポジトリにコードを載せています。 GitHub - threecourse/run-environment-public まだ何も実戦で試してい…

CatBoost論文のprediction shiftについて完全に理解する

MathJax.Hub.Config({ tex2jax: { inlineMath: [['$','$'], ['\\(','\\)']], displayMath: [ ['$$','$$'], ["\\[","\\]"] ] } }); CatBoostの論文における、prediction shiftについて調べる機会があったのでまとめてみました。 (CatBoost: unbiased boostin…

Unityでゲームを作ってみた(その2)+ゲームレビュー

Unityで2作目のゲームを試作しました。まぁまぁ満足というか、Unity初心者としては十分なデキになったと思います。 Unityのゲーム試作2作目できた。ドミニオン+クッキークリッカーみたいな感じ。 pic.twitter.com/9xr5P2CNCv— threecourse (@threecourse) 2…

「ヒューリスティック探索入門」のメモ

MathJax.Hub.Config({ tex2jax: { inlineMath: [['$','$'], ['\\(','\\)']], displayMath: [ ['$$','$$'], ["\\[","\\]"] ] } }); 「ヒューリスティック探索入門」というPDFの1章、2章、4章の一部の学習メモです。 特に、「状態空間問題」といった問題設定や…

Unityでゲームを作ってみた

Unityで練習としてゲームを作ってみました。Unity周りのさまざまな仕組みは結構独特で面白いと思ったので、まとめておきます。 なぜUnityか ゲーム作りは男のロマン 機械学習の技術をゲームに活かせないか C#好きなんですよね・・ 作ったもの (ブログ貼付用…

Cython何もわからない

Cythonで何ができる? 拡張子.pyxファイルに、pythonの文法を基本としつつ一部をcythonの文法で型付けすることで、高速に処理を行うことができる。 呼び出すときはimport pyximport; pyximport.install()を付加すると、あとは通常のimportが可能。(setup.py…

フロントエンド何もわからない(その2)

フロントエンド何もわからない のあとに少し研究を進めて、Vue.jsで三目並べを作ってみました。 github.com Vue.jsは分かりやすく宣言的に書け、またSVGも図形の色などを修正しやすそうだったので、tornado + Vue.js + 描画はSVGというのはわりと良い解かも…

フロントエンドなにもわからない

某所の勉強会用のゆるめの資料で、ヴィジュアライザを作ろうとしたときの話です。 speakerdeck.com 何かのためのネタができた pic.twitter.com/4Vnae8qFQ8— threecourse (@threecourse) December 21, 2019

GUIを使うためのdocker設定

モチベーション 書籍のgithubリポジトリやライブラリを動かすときに、それぞれ依存するライブラリが違うので、dockerを使いたいです。 ただ、強化学習などGUIが使われている場合、通常のdockerの設定では上手くいかないことも多いので、その辺を記述してみま…