自分の仕事に数学を道具として使う②アナログ・プロセスマイニング
Pythonでもいいけど、ここではMathematicaを選択しましょう。
今回は生成AIを用いてプロセスマイニングをやりたいので、Mathematicaにはプロセス図を描いてもらいましょう。
Mathematicaは「数式を計算するアプリ」としての認識が高いと思いますが…? 私自身、Raspberry Pi4を買って触ってみましたが(無償で使える)なかなか小難しいアプリだと思っていました。
実はプログラムが書けるのですが基本的に、このカッコ[ ]だけで書けます。これが通常の言語とは異なるので敬遠されがちだと思います。
職場で良ーく起こりそうな問題。これをChatGPT4.0にやってもらいます。
ここで改善すべきボトルネックはBではなくCだと判明します。
答えは合っていますが…
でも、それを上の文章で理解するのは分かりにくいんです。
(当然、生成AIにこれを質問すれば答えてはくれます)
絵を描いてもらうとトンデモナイ才能を遺憾なく発揮してくれます。
うーん、これじゃないですね。
そのうち、勝手に綺麗なガントチャートも描いてくれると信じるとして、今はこの辺りはMathematicaにやらせましょう。
色々と試したけど、Claudeが相性が良い!ですね
ChatGPTとGeminiのMathematicaコードは動かない!(直せない)
気を取り直してClaudeに仕事を依頼します。
こうやってデバッグしますか。なるほど… これは勉強になりました。
ただ単に怪しいと思った箇所を指摘していけばいいんですね。
(流石にこれは書けないですよ 時間が勿体ない)
g = Graph[{
"Start" -> "A",
"A" -> "B",
"A" -> "C",
"B" -> "D",
"C" -> "D",
"D" -> "End"
},
VertexLabels -> {
"Start" -> "開始",
"A" -> "仕事A\n10分",
"B" -> "仕事B\n20分",
"C" -> "仕事C\n30分",
"D" -> "仕事D\n15分",
"End" -> "終了"
},
VertexWeight -> {
"Start" -> 0, "A" -> 10, "B" -> 20, "C" -> 30, "D" -> 15, "End" -> 0
},
EdgeStyle -> Directive[Arrow[0.3]],
GraphLayout -> "LayeredDigraphEmbedding"
];
(* 各作業の終了時間を計算 *)
endTimes = <|
"A" -> 10,
"B" -> 10 + 20,
"C" -> 10 + 30,
"D" -> 10 + Max[20, 30] + 15
|>;
totalTime = Max[Values[endTimes]];
GraphPlot[g, VertexLabeling -> True,
PlotLabel -> Row[{"合計時間: ", totalTime, "分"}]]
今回はシンプルなプロセスですが、実際にはかなりグチャグチャなプロセス図になってしまいます。計算は生成AIにやらせ、プロセス図はMathematicaにやらせるのが今考えてる方法です。Mathematicaはプロセスが複雑になった時に、自動的に図形を変形してくれるのが便利です。
PythonのNetworkXでも当然プロセス図を描けるので、そこは使いやすい道具を自分で自由に選んでください。
※NetworkXはプロセスの位置をかなり細かく指定できます。逆に言うと指定しないと求めているプロセス図にならない事が多いです。
CoPilotは頑張ってここまでやってくれます。ChatGPTもこんな感じです。
複雑になると、CUIベースでは理解できません。