サブロウ丸

主にプログラミングと数学

枝集合が単調増加するグラフの平均クラスタ係数更新方法

平均クラスタ係数とは 枝集合の単調増加 実装 保持情報 枝増加時の更新 テスト コード 出力 まとめ 参考 平均クラスタ係数とは グラフ構造の特徴づけ指標の一つです. ノードごとに, そのノードを含む三角形(クリーク)の割合を算出します. 具体的には グラフ,…

CBC ソルバ ログの可視化

最終的に描写するもの 暫定解値と, 下限値の時間推移 最適値 CBCログ 問題サイズなど Welcome to the CBC MILP Solver Version: 2.10.3 Build Date: Dec 15 2019 command line - xxxx At line 2 NAME MODEL At line 3 ROWS At line 2426 COLUMNS At line 145…

pulp制約の削除, 入れ替え

pulpにおける動的な制約の削除, 入れ替えのサンプルコード gist.github.com

スピン変数の積の線形表現

Qiitaに記事を投稿しました. qiita.com

pulpとamplifyの相互変換

Qiitaに記事を投稿しました qiita.com

Detecting Adversarial Examples

Adversarial example ... 入力にごくわずかな摂動(ノイズ)を加えてモデルの出力を狂わせたもの. 特にneural networkモデルに対してadversarial exampleが存在しやすい. このAdversarial exampleを"検出する"という観点の研究をまとめました. Detecting adver…

master mind by c++; part15 MPIによるプロセス並列

今回やること MPI install 超簡単なサンプル実装 データ集約(MPI_Gather)の例 逐次的なデータ送信の例 MPIの組み込み CMake Dockerfile run.cpp Github-action (CMake) 実験 machine A まとめ コード 参考 他の記事 今回やること MPIのサンプルコードの紹介,…

master mind by c++; part14 openMP

今回やること openMP 並列化 CMake find_package target_compile_options target_compile_definitions 実験 mac book machine A まとめ コード 参考 他の記事 今回やること openMPを用いた並列化 openMP 言わずと知れた, スレッド並列ツール. FortranとC/C++…

master mind by c++; part13 minmax, exp_minmax, entropy policy

今回やること 推論コードの決定 ランダムサンプリング minmax exp_minmax entropy 実装 推論手数の実験 colors 4 pins 4 colors 5 pins 4 colors 6 pins 4 colors 4 pins 5 colors 5 pins 5 まとめ コード 参考 他の記事 今回やること 新しい推論コード取得…

master mind by c++; part12 coverage test

今回やること カバレッジテスト カバレッジ(coverage)テストとは コンパイルオプション add_custom_target 実行 まとめ コード 参考 他の記事 今回やること カバレッジテスト カバレッジテスト カバレッジ(coverage)テストとは テスト関数が全ての関数,if分…

master mind by c++; part11 namespace

今回やること 背景 実験 まとめ コード 他の記事 今回やること namespaceの導入 背景 $ valgrind --tool=callgrind --callgrind-out-file=./callgrind.out ./bin/mastermind 4 4 --test $ gprof2dot -f callgrind ./callgrind.out | dot -Tpdf -o report.pdf…

master mind by c++; part10 smart pointer

今回やること コードのポインタ管理 smart pointerの導入 実験 まとめ コード 参考 他の記事 今回やること コードをポインタで管理 smart_pointerの導入 コードのポインタ管理 現状のプログラムではコード(Code)オブジェクトの生成と解放を実行中に多数行っ…

master mind by c++; part9 temaplate

今回やること template 実験 まとめ コード 他の記事 今回やること templateの導入, 及び color, hit-blow のデータ型の変更 template 関数の引数や返り値、またクラス属性の型を宣言時に可変にできる機能です. ピンの色とhit-blowのデータ型を今まではどち…

master mind by c++; part8 measure( valgrind, gdb )

今回やること 実行速度計測について 計測コード 高速化オプションの追加 プロファイル Valgrind gprof Cmake, Debug, Release まとめ コード 参考 他の記事 今回やること プログラムの実行速度計測の追加 プログラムのプロファイリング( valgrind & gdb ) 実…

master mind by c++; part7 code generator

今日やること コード集合の列挙 例 実装 テストの作成 まとめ コード 参考 他の記事 今日やること ピンの色数, ピンの数, ピンの色の重複ありなしが与えられた時に 考えられるコード(ピンの配列)を全列挙する関数を作成する. これがあれば, どのようなピンの…

master mind by c++; part6 argument parser

今回やること argparse install プログラムへの反映 まとめ コード 参考 他の記事 今回やること コマンドライン引数を受け取る部分(argument parser)の実装. argparse google検索で一番上に出てきたので, 使ってみる. install git clone でコードをダウンロ…

master mind by c++; part5 Docker

今回やること Dockerとは Dockerの導入 Docker install Dockerfileの作成 Dockerイメージの作成と起動 root以外のuserで環境を構築したい場合 Github action - docker 対処したエラーたち apt install -y cmake pthread_getspecific まとめ コード 参考 他の…

master mind by c++; part 4 googletest

今回やること googletestとは googletestの導入 現状のディレクトリ構成 googletestのインストール テストプログラム ビルド googletestをインストールしている場合 googletestをインストールしていない場合 実行 ctest GitHub action の修正 まとめ コード …

master mind by c++; part 3 CMake

今回やること Cmakeとは CMake フォルダ構成 CMakeLists.txtの作成 ビルド バイナリ生成場所の指定 GitHub action - CMake テスト まとめ コード 参考 他の記事 今回やること CMakeの導入 github actionでのcmakeテストの追加 Cmakeとは Makeファイルなどの…

master mind by c++; part2 auto & decltype

今回やること auto 関数の返り値 コンテナの部分for文 関数の返り値の型 decltype まとめ コード 参考 他の記事 今回やること 型推論autoの導入 decltypeの導入 auto autoはc++11から導入された型推論機能で, c++14, c++17ではその適用範囲が増えました. c++…

master mind by c++; part 1 基盤プログラム

これから c++ プロジェクト実装の勉強がてら, master mind というゲームを解くプログラムを作成する様子を数回に分けてまとめたいと思います. 目標はなるべく標準で, かつモダンな実装です. これからの全体的な流れ master mind ( マスターマインド ) とは …

vim 複数ファイル操作

Vim

vim で複数ファイルを操作する方法のまとめ 1. 複数ファイルを開く vim -O abc.txt xyz.txt # 横向きに表示 vim -o abc.txt xyz.txt # 縦向きに表示 2. 条件指定で複数ファイルを開く 例えば, .h 拡張子のファイルを全てvimで開きたいとき vim -O $(ls *.h) …

shell の trace

小ネタです. シェルスクリプトを実行する際に -x オプションを使用すると, トレースがオンになり, 今実行されている行 が表示されます. 例えば中身が下記の tmp.sh を実行すると for i in 0 1 2 do echo $i done $ sh -x tmp.sh + for i in 0 1 2 + echo 0 0…

Python Colorlog サンプルコード

colorlog ( https://github.com/borntyping/python-colorlog ) を用いれば ロギング(logging) を色付きで簡単に表示できます. 若干使い方が難しいと思いますので, サンプルコードを作成しました. 下記を _logginig.pyの名前で保存して, 同ディレクトリ内で以…

【python】 multiprocessing.Queue を用いた並列化 (サンプルコードあり)

multiprocessing.Poolの功罪 multiprocessing.Pool + multiprocessing.Queue による解決策 1. 変数をQueueに格納 2. 子プロセスの立ち上げ 3. 立ち上がった子プロセスはQueueから変数(i, j)を受け取り, 処理 + 子プロセスが処理を終えると, 次の変数をQueue…

Python モデラーとソルバーまとめ (解ける問題の比較)

Solver (May 22, 2020) [S] Solver (問題を解くアルゴリズムを内包し, それを実行して解を探索するアプリケーション) [M] Modeler (解く問題をプログラムで作成するためのアプリケーション) Nonlinear or Linear Programming NLP (Nonlinear Programming) MI…

Raspberry Pi4 ModelB 4GB を買いました

Raspberry Pi4 本体 (ModelB4GB) ¥ 6,875 www.amazon.co.jp microSDカード (32GB) ¥680 www.amazon.co.jp カードリーダー microSDカードにOSを書き込む用 ¥ 1,780 www.amazon.co.jp micro HDMI → HDMI 変換コネクタ ¥ 999 Amazon | Cable Matters Micro HDM…

pulp.GUROBI_CMD での 時間 スレッド数 制約

バージョン pulp: 2.2 python: 3.8.4 サンプルコード スレッド数 = 5, 時間制約 30s にする場合 problem = ... solver = pulp.GUROBI_CMD( options=[ ('Threads', 5), ('TimeLimit', 30) ] ) problem.solve(solver=solver) 他に入れられるオプション www.gur…

GitHub運用

Git, GitHubについての資料, ブランチ運用について, パラパラ説明をしています.

[ Python ] LP modeler と Solver 一覧

Pythonで使線形計画問題(LP)を扱える最適化アプリケーションをいくつか使用することができます. アプリケーションは大きく2種類に分類されます. Solver (ソルバー); 問題を解くアルゴリズムを内包したアプリケーション Modeler (モデラー); 最適化問題をプロ…