Skip to content

Commit 8a5ff46

Browse files
Updated README.md (#31)
* Updated README.md * Update README.md Correcting typo Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Update README.md Removing trailing white space Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
1 parent a331c4c commit 8a5ff46

1 file changed

Lines changed: 17 additions & 25 deletions

File tree

‎README.md‎

Lines changed: 17 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ by your model.
2121

2222
## Available Solvers
2323

24+
- [simplex](https://github.com/MatProGo-dev/simplex)
2425
- [Gurobi](https://github.com/MatProGo-dev/Gurobi.go)
2526

2627
## Modeling the Mathematical Program Above
@@ -66,19 +67,11 @@ p1.Objective = *problem.NewObjective(
6667

6768
## FAQs
6869

69-
> Why are the solvers not bundled into the interface?
70+
> Why are the solvers not bundled into `MatProInterface.go`?
7071
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".
7673

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?
8275
8376
This project was written to make it easier for first-time Go contributors/users
8477
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.
9386
> Why do most functions return `error` values?
9487
9588
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
9891
most function calls. In most cases, these error messages will be `nil` indicating
9992
that no error occurred, but occasionally they will contain valuable information.
10093

@@ -103,6 +96,16 @@ and how to use certain functions through a direct message.
10396
Sometimes, the first method of error handling can point users to unintuitive/difficult to read parts of
10497
code. Hopefully, this is avoided using this format.
10598

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+
106109
## Design Philosophies
107110

108111
* Share error information
@@ -112,17 +115,6 @@ code. Hopefully, this is avoided using this format.
112115
## To-Dos
113116

114117
* [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
119119
* [ ] 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.
124-
* [ ] Add Check() to:
125-
* [ ] Expression
126-
* [ ] ScalarExpression
127-
* [ ] VectorExpression interfaces
128120
* [ ] Add ToSymbolic() Method for ALL expressions

0 commit comments

Comments
 (0)