First of all, congratulations on your internship. It is a great opportunity to put your skills into practice, and for the organization to get an understanding of what OR can be used for. But for the project to be successful, it is important that you are aligned on the problem you are solving. It currently sounds like you have a very broadly defined task which gives the huge risk that, even if you are doing a great job building the solver, that you end up with something that is different than what the company is hoping to get out of it. A solver is only valuable if it can help the company or its customers answer valuable questions.
I think when you have a more well-defined project, it will be easier to make the right technical choices, and there are a few other good answers around that so I will leave the technical aspects out of this answer. Here is a way to approach it:
Define what a successful project would look like
It is very important that you understand why the management decided to do the internship. You should ask them what they are hoping to get out of it, and what the ideal outcome would be.
Since they don't have any OR-experts, a likely goal is to understand if OR can bring value to them and their customers. But it could also be some very specific challenges that are top-of-mind for them that they hope you can help with.
Define what the most important KPI's or questions to answer is
You write that the company wants a generic solver which is very broad, so you need to find a place to start. Together with the management, you should define a very specific challenging problem either they or a customer are having. From this, you can start to understand what the most important objectives are which you then can use to decide what model you need to build. There are quite many different possibilities e.g.
- Shorten the production time
- Minimize labor costs
- Increase the capacity of the system
- Maximize profit by choosing what to produce
But it could also be some more strategic questions they want to answer
- How much can we increase capacity if we buy 2 more machines?
- How should we replan if one of our machines breaks down for 8 hours?
Understand the decision-maker and decision process
The solver you are building needs to be used by someone. You should try to get as deep understanding of their job as possible. What are the key decisions and how does it link to the earlier defined objectives. You should ask if you can sit with the person for minimum an hour to ask them questions about their job and potentially watch them perform it while they tell what they do. This is also an opportunity to gather data you will need as input to your solver.
Start building and iterate
You should now be able to formulate the first version of your model and can start building your solver.
I think there are other good answers around what methods you can use, but I will just highlight that it is important that you don't bury yourself into the code until the end of the project. In the end, people will care about the results they can get out of your solver, not the solver by itself. You should try to schedule some touchpoints at least once a month with the end-user where you can demo and show results and get some feedback to understand if you are moving in the right direction.
Every company and problem is different which will affect where your biggest challenges will be, but I hope they above can help you get started. Good luck!