#**VBAF (Visual Business Automation Framework)**

15 messages · Page 1 of 1 (latest)

violet karma
#

Hey r/PowerShell!

I've been working on something unusual: VBAF (Visual Business Automation Framework) - a complete reinforcement learning framework built entirely in PowerShell 5.1.

What it includes:

  • Neural networks from scratch (backpropagation, multiple activation functions)
  • Q-Learning agents (experience replay, epsilon-greedy exploration)
  • Multi-agent market simulation (4 companies competing with emergent behaviors)
  • 3 real-time WinForms dashboards showing learning in action
  • ~21,000 lines of code, 45 modules

Why PowerShell?
I wanted to make RL/ML concepts accessible to IT professionals who already know PowerShell but find Python ML frameworks overwhelming. VBAF prioritizes educational transparency over performance - you can see every algorithm step.

Example - Solving XOR in 5 lines:

$nn = New-VBAFNeuralNetwork -Architecture @(2,3,1) -LearningRate 0.1
$xorData = @(@{Input=@(0,0); Expected=0}, @{Input=@(0,1); Expected=1}, ...)
$nn.Train($xorData, 1000)
$nn.Predict(@(1,0))  # Returns ~0.97

GitHub: https://github.com/JupyterPS/VBAF

I know this is unconventional - using PowerShell for ML. But I think there's value in making these concepts accessible in a language IT pros already use for automation.

Questions I'd love feedback on:

  • Is this useful for learning RL concepts?
  • Would you use this for business automation scenarios?
  • What examples/tutorials would make it more accessible?

Built with PS 5.1, no dependencies, works out of the box on any Windows machine.

Thoughts? 🤔

GitHub

Visual Business Automation Framework - PowerShell-based reinforcement learning for education and business automation - JupyterPS/VBAF

limber stirrup
#

curious why you went with 5.1 instead of 7?

eternal vessel
#

to make it the most accessible, presumably

#

that appears to be the primary goal of the framework

#

would have liked to see less write-host and more objects. less .methods() more get-cmdlet ,etc

#

also, you want your module members in the psd1 for proper implicit loading on call. so removing export-modulemember in the psm1

#

oh i guess you do both...

#

not a super fan of that file structure with public built into the name. would rather separate folders

#

cetainly depends on the audience. if you are hitting a more python-y audience with some pwsh experience then yeah the .method is probably cool. pure powershell folks, you'd want actual invoke-learn cmdlets that accept piped neural networks, etc

violet karma
# eternal vessel cetainly depends on the audience. if you are hitting a more _python-y_ audience ...

Great question! Three reasons:

  1. Reach: PowerShell 5.1 is on 50M+ Windows machines by default. PS7 requires manual installation. I wanted zero friction for people to try it.

  2. Educational focus: If someone can learn RL concepts in PS 5.1, they can definitely use them in PS 7+. Starting with the most restrictive version ensures maximum compatibility.

  3. Constraint breeds creativity: Building in PS 5.1 forced me to implement everything from scratch without relying on newer syntax shortcuts. Makes the code more educational.

That said, PS7/Core cross-platform support is absolutely on the roadmap! Would love to see VBAF running on Linux/Mac via PowerShell Core.

Would you use it if it supported PS7?

little trail
#

it probably already does support 7. You'll have to get rid of the massive number of hard-coded paths you have in there for anyone to try it though.

violet karma
# little trail it probably already does support 7. You'll have to get rid of the massive number...

You're absolutely right - the hard-coded paths are a leftover from development. Good eye! 👍
The framework itself should work fine on PS7 (it's all standard PowerShell classes and .NET), but yeah, those paths need to be relative for anyone else to actually run it without modifications.
I'll add that to the cleanup list - make it properly portable. Appreciate you pointing it out - that's exactly the kind of thing that prevents people from trying it!
Thanks for the feedback!

little trail
#

You don't need to do much to make it portable.

Make it all use ⁨$PSScriptRoot⁩, you use that in part in some of your loaders. Do away with your bespoke installer.

Don't copy content directly into ⁨Docs\WindowsPowerShell⁩, have everything you need inside the module folder. That'll subjectively be ⁨MyDocs\WindowsPowerShell\Modules\VBAF\1.0\<Content>⁩, but could be anywhere and you shouldn't have to care.

unreal nimbus
#

There's a couple issues on the front readme: [1] some links are empty [2], [3] syntax errors

#

[4] these links are broken (folders exist, readmes are empty )