You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
> Why are the solvers not bundled into the interface?
70
+
> Why are the solvers not bundled into `MatProInterface.go`?
70
71
71
-
The solvers are separated into separate repositories to avoid compilation issues.
72
-
A compilation issue would arise, for example, if Gurobi bindings were built into this interace,
73
-
but your computer did not have Gurobi installed on it. The same can be said for a number of other
74
-
solvers as well. To avoid such issues, ALL SOLVERS should be included in separate pacakages
75
-
that implement the `solver` interface in this package.
72
+
The solvers are not bundled into this module to avoid having a large number of dependencies. In other words, to avoid including a large number of solvers in the dependencies (e.g., Gurobi, SNOPT), we will require developers to implement those in separate modules. This should hopefully keep this module "lightweight".
76
73
77
-
With this in mind, you should be able to use any solver by installing its associated
78
-
MatProGo.dev pacakage and then calling its "Solver" object.
79
-
80
-
> I feel like things can be done more efficiently in this library.
81
-
> Why did you avoid using things like pointer receivers?
74
+
> Why did you avoid using things like pointer receivers in your implementations?
82
75
83
76
This project was written to make it easier for first-time Go contributors/users
84
77
to easily understand. For this reason, I've avoided making some optimizations
@@ -93,8 +86,8 @@ ask if this is intentional by creating an issue.
93
86
> Why do most functions return `error` values?
94
87
95
88
There are two dominant approaches for handling errors/problems
96
-
during numerical Go programs. One is to raise an exception/create a fatal flag which terminates the program.
97
-
The other is to share error messages to the user using Go's build-in `error` type (or extensions of it) during
89
+
in numerical Go programs. One is to raise an exception/create a fatal flag which terminates the program.
90
+
The other is to share error messages to the user using Go's built-in `error` type (or extensions of it) during
98
91
most function calls. In most cases, these error messages will be `nil` indicating
99
92
that no error occurred, but occasionally they will contain valuable information.
100
93
@@ -103,6 +96,16 @@ and how to use certain functions through a direct message.
103
96
Sometimes, the first method of error handling can point users to unintuitive/difficult to read parts of
104
97
code. Hopefully, this is avoided using this format.
105
98
99
+
> I have a question for you. How can I ask it?
100
+
101
+
Feel free to create an issue (see the Issues tab above) in this repository!
102
+
103
+
> I have noticed an error in the code. What should I do?
104
+
105
+
You can either:
106
+
- Create an issue describing the error and how to reproduce it (see the Issues tab above)
107
+
- Fork the repository and create a Pull Request
108
+
106
109
## Design Philosophies
107
110
108
111
* Share error information
@@ -112,17 +115,6 @@ code. Hopefully, this is avoided using this format.
112
115
## To-Dos
113
116
114
117
*[X] Create New AddConstr methods which work for vector constraints
115
-
*[ ] Mult
116
-
*[ ] General Function (in operators.go)
117
-
*[ ] Plus
118
-
*[ ] General Function (in operators.go)
118
+
*[ ] Deprecate the `optim` package
119
119
*[ ] Introducing Optional Input for Variable Name to Var/VarVector
120
-
*[ ] Consider renaming VarVector to VectorVar
121
-
*[ ] Decide whether or not we really need the Coeffs() method (What is it doing?)
122
-
*[ ] Write changes to all AtVec() methods to output both elements AND errors (so we can detect out of length calls)
123
-
*[ ] Determine whether or not to keep the Solution and Solver() interfaces in this module. It seems like they can be solver-specific.
0 commit comments