So this will be rather long, but I think it needs to be addressed. Minsky handles units just fine from a mathematical stand point just fine, if you have read Joseph Fourier 1822 book, "The Analytic Theory of Heat" The issue here is that most economist outside of Steve Keen will never read any Fourier and most System Dynamicists out of me will ever read Fourier.
I have included models
Lets take the example of Labor Productivity in the Goodwin Growth Cycle Model, Productivity is defined and Widgets per Person per Year. In Minsky you can input this just fine in the dialogue unit box of the stock variable as "Widgets/Person Year^1" or "Widgets Person^-1 Year^-1". What is displayed in the the mouse over tool tip on the canvas is Units: Person^-1 Widgets Year^-1 This is perfectly acceptable is your a mathematician or a physics professor and so a slightly lesser degree an engineer, but not a system dynamicist or economist, once you get into raising powers and integers, you have lost the average user, and not to mention the mouse over tooltip in Minsky is constrained to a rule of alphabetical order, so you have the numerator in the middle! This should be addressed, numerators first denominators second.
In a program like Vensim (and all the other big names) in the dialogue box you can enter the above methods in Minsky, but also allows for to more intuitive ways to enter them, the first is "Widgets/Person/Year". In Minsky it sounds back an error saying you trying to add a second denominator, where as in Vensim is automatically knows that the second "/" is indication you are multiplying Person and Year. The visual output on the mouse over tooltip is Units: "Widgets/(Person x Year)" This is far easier to under stand the units for the average users, even for me that builds models that calculates the flow of water in meters squared (m^3) down a penstock in to a dam for power generation. The second way you can enter the units in the is just as it's shown in the tool tip: Widgets/(Person*Year).
Because what I defining above is a ODE, Productivity is a input to the integral so a self sustaining reinforcing feedback loop. this is a rate of change variable (if you choice to include it), in Minsky the mouse over tool tip is Person^-1 Widgets Year^-2 To a trained eye this is fine and your name is albert Einstein, but Minsky uses are meager economists and system dynamicists, so the appropriate mouse over tool tip is Widgets/(Person x Year x Year) . This is how its displayed in all the other packages and should be so with Minsky.
Next is a simple one and that is a a unit of a "fraction of time" in Minsky you can enter it the two way that want, either Year^-1 or 1/Year It's the mouse over tool tip I have the problem with. In Minsky is displays Year^-1 what I want is 1/Year. This intuitive and hammers in the point it is a fraction of a unit. Remember once your into powers and integers eyes start to glaze over. (Yes I know there is a time and place for them eg: my flow of water)
This may seem trivial Russ, but it is a huge feature in the other programs for ease of logic and understanding that Minsky need to address.
MAY HAVE A BUG:
So when I was putting together this post a made the same model in Vensim in Minsky. I used a parameter called alpha as my growth rate for productivity. In Vensim it require it to have a unit of 1/Year, with Productivity being Widgets/(Person x Year) that gave me the rate of change variable unit of Widgets/(Person x Year x Year) In Minsky I can do the same thing and all is good, but I also can leave the units in alpha black, this gives the rate of change units of Widgets/(Person x Year) and it works!?!? Why is this? Is this a bug? or some mathematical oddity that I'm not comprehending?
Another thing is in system dynamics the golden rule of having a parameter for the stocks initial condition. If it is zero, then one is not needed, if it has a value then you should have one. Minsky provides this option and has for a many years since you added the "0" input on the integral operator, (note none of this applies to the Godley Table stocks and initial conditions). In PowerSim the 4th most popular SD software, behind AnyLogic, Stella, and Vensim. They are all about making dimensional analyses easy. When you wire a initial condition parameters to the stock is you have defined units to the parameter the stock inherits, if the stock has units the initial condition parameter will inherit them. If the parameter and stock do not have the same units there is a dimensional error. Minsky does not do this, its a small feature upgrade, but it should be in place.
Feedback from both you and Steve would be appreciated on this.
Model in Minsky
Model where I changed the units on the Stock to Widgets/(PersonYear) seemed to almost work, so when I added y with units of widgets/Year and divided it with productivity its gave me a labor variable with units of (PersonYear)/Year, so it's right if you reduce it to just Person, however in the next equations where you divide labor with population you don't end up with dimensionless employment ratio needed for the wage change function.
This is where I removed the units from alpha and wonder if this is a bug.
This is the reference Vensim model to compare
I strongly agree, and this is one reason that I haven’t made much use of
units myself regularly in Minsky. But I also think that this will need to
be delayed until after we launch Ravel 1.0 commercially. We want all our
efforts focused on that right now.
In Ravel itself, units will also become very useful—for example, having
date variables dimensioned by year, etc. So this could be part of a large
scale refactoring of unit handling.
A few comments on the proposal.
I think most people are used to positive integer powers - we measure hotel rooms in m^2 for example. This is taught in primary school in Australia.
Maybe negative powers can be displayed using the solidus. It's just that I've always seen it written as eg m s^-1 not m/s in the SI system. The SI system is usually taught in early high school, so should be familiar to everyone with high school education, though maybe not Americans, which is one of only three countries not widely using SI units.
Mind you cf https://physics.nist.gov/cuu/Units/checklist.html, it does appear that a single solidus is acceptable, so yeah we could change the default tooltip display to avoid negative exponents. I'm happy to go with the crowd on this - no need to make it a user preference.
Whilst x/y/z seems ambiguous to me, under BODMAS rules it is x/(yz), so I could probably change the input routine to allow that interpretation. The issue is how to interpret x / y z. Currently, the input just throws - you cannot have more than one unit following the solidus. IIRC, the problem is that it is not trivial to support parsing parentheses in these expressions.
Fair point that negative exponents should appear after positive exponents. That just simply involves resorting the terms on display (they are stored in lexicographic order).
I'll take a look at the actual bug reports later.
I think this all goes back to Jay Forrester's way of defining units in his writings and the way you had to do it with the Dynamo software of the late 60s. This carried forth with all the SD programs that came after.
In what I consider the first manual of the methodology of System Dynamics by Forrester Principles of System-1968, he write the units as I have above.
I agree with you, a cubic meter of something should be defined as meters^3, and agree with you the negative integers are not appropriate and should be replace with a slash when displayed. One other thing to consider is in finance, the units are never defined as "$ Week^-1" it will always be $/Week. Since Minsky is SD designed for econ and financial modeling it make sense to use established conventions for units.