amazonでnova 3 が48000くらいで売ってたのでつい買ってしまった
だってP10plusがまたびみょーに膨れてきたんだもん...
裸にして机の上に置くと、くるくる回るんだもん... (真ん中が膨張しているからね.)
殻割りがおきないうちに売っぱらう
同じくらいの大きさなのに液晶だけでかいとか、ゲームやってもそれほど熱くならないとかやっぱり世代を感じる
ポケモンボールもラグが少なくなってiPhone6並になってきたし..
土曜日に娘のポケモンセンター&カフェ詣を施行
そのときの講演会で兵庫医科大学の先生の発表から、 JUST Score なるものを知りました
脳梗塞患者の症状だけをみて、多数の自験例をもとに、やばそうな病気に対してスコアリングして確率を出せる、といったもの
東日本でも同じ傾向なのかはわかりませんがこれは使える!と思い昨日帰宅してからまたアプリを作った
Android GitHub - vascarpenter/BrainPredictor: JUST score calculator for android
iOS GitHub - vascarpenter/iBrainPredictor: BrainPredictor iOS version
これが正しいのかはわからないけれどうちみたいな僻地病院には役立ちそう
IDEでjar作成を自動化するとき;
Configurationから JAR Applicationを追加
下のBefore Launchから
+を押して Build 'xxx' artifact
+を押してRun Gradle Task
Gradle Taskでは、 replaceKieConfをターゲットとする
build.gradleに以下を記載
task replaceKieConf doLast { 'jar uvf ShiftSolver.jar META-INF/kie.conf'.execute([], new File("$projectDir/out/artifacts/ShiftSolver_jar/")) }
RunAsJARと名前をつけてConfigulationを保存
そうすると RunAsJARを起動するだけでkie.confのアップデートされた JARができて 実行もされる
残るは jarにすると動作しなくなる問題だけだったが、Stack overflowに記事があった
同じようにしてやればできたので報告
org.kie.api.internal.assembler.KieAssemblers = +org.optaplanner.core.impl.solver.kie.KieSolverAssemblerService org.kie.api.internal.assembler.KieAssemblers = org.kie.internal.services.KieAssemblersImpl org.kie.api.internal.runtime.KieRuntimes = org.kie.internal.services.KieRuntimesImpl org.kie.api.internal.weaver.KieWeavers = org.kie.internal.services.KieWeaversImpl org.kie.api.internal.runtime.beliefs.KieBeliefs = org.kie.internal.services.KieBeliefsImpl org.kie.api.io.KieResources = org.drools.core.io.impl.ResourceFactoryServiceImpl org.kie.api.marshalling.KieMarshallers = org.drools.core.marshalling.impl.MarshallerProviderImpl org.kie.api.concurrent.KieExecutors = org.drools.core.concurrent.ExecutorProviderImpl org.kie.api.KieServices = org.drools.compiler.kie.builder.impl.KieServicesImpl org.kie.internal.builder.KnowledgeBuilderFactoryService = org.drools.compiler.builder.impl.KnowledgeBuilderFactoryServiceImpl
xcode10をインストールしようとしたら70GBも開けないといけなくてげんなり。
結局DRLで「あるdayのemployeeがworkDayであった場合、他のemployeeのassign scoreを-1する」と表現するのがわからなかったので、employee workDayを読み込んだときに他のemployeeにそのdayを使わないようにフラグをつけることとした
うまく動くようになってご満悦
GitHub - vascarpenter/ShiftSolver
あとIntelliJ IDEのCSV pluginを使うと余計なスペースを入れられて、openCSVで読み込むときゴミが入ってしまうのでプラグインを削除した。
Employeeに HashMapを持たせ、Assetsを解析させることで DRLから参照できるようにして、ついに拘束日と休日を実装できた
GitHub - vascarpenter/ShiftSolver
だが、DRLではどうやったら拘束日の実装をすればいいのかわからん
一番の理想:拘束日の医師は決定しており optaplannerを使うまでもない
理想:ある日がだれかの拘束日に当たっていて、その担当以外の医師だったらスコアを下げる
→ある日が誰かの拘束日であるか逆算できる必要がある
現実:その医師の拘束日だったらスコアをあげる。本当は上げたくないんだが。
DRL:
when WorkDayAssignment(employee != null, employee.isWorkDay(day) == true) then scoreHolder.addHardConstraintMatch(kcontext, new BigDecimal(1));
うーんむずかしい
でもプログラムとしてはこれでほとんど完成なんだな..
GitHub - vascarpenter/ShiftSolver
GUIを拡張し、テーブルにして、拘束日と休日を","で区切って入力できるようにした
そのリストはCSVでの読み込みと保存できる
出力もテーブルにした
出力はCSVで結果を保存できるようにした
Optaplanner 7.0に対応し、deprecatedなものは削除
こんなふうになった
まだ拘束日と休日の検索に対応していないけれどな!
jarで書き出した場合、DRLはリソースにしないと読めず、リソースにするとJARファイル内にDRLが入ってしまってこれはgetResourceで読めないから解析がなされなくなってしまう
DRLをlistにしてbuilderに読ませる方法がわからん。