The Big Programming Thread - Page 604
Forum Index > General Forum |
Thread Rules 1. This is not a "do my homework for me" thread. If you have specific questions, ask, but don't post an assignment or homework problem and expect an exact solution. 2. No recruiting for your cockamamie projects (you won't replace facebook with 3 dudes you found on the internet and $20) 3. If you can't articulate why a language is bad, don't start slinging shit about it. Just remember that nothing is worse than making CSS IE6 compatible. 4. Use [code] tags to format code blocks. | ||
SpiZe
Canada3640 Posts
| ||
Acrofales
Spain17852 Posts
On March 12 2015 07:05 enigmaticcam wrote: Ok, so I have a programming problem I'm trying to solve. Any help would be appreciated. I'm scheduling users to daily jobs for a given month. I have a specific set of users and a specific set of jobs. However, one day might not have the same set of jobs as another. There are various hard rules, such as not allowing one user to be scheduled more than twice in a day - hard rules can't be broken. There are various soft rules, such as scheduling the same user to the same job two days in a row - soft rules can be broken. I want to write a program that will give me the best combination for a given month - one combination is better than another if it breaks less soft rules (no combination is good if it breaks any hard rule). I also want to be able to add or remove rules easily, so there's no dependency on the rules themselves, only that they are either hard or soft. The difficulty I'm having is that you can't really put a score on a user to a job unless you've accounted for all other jobs due to the nature of the rules. For example, I can't say that adding John to job 2 on day3 is good or bad unless I know if he was already added on that same day. So it seems to me then that dynamic programming is out because you can't break the problem down into smaller components to solve. Also, I don't think brute forcing will work if you have a large amount of job types, users, and jobs per day. Too many variations. Any help you can offer would be appreciated! It sounds like a Constraint Optimization problem, as opposed to Constraint Satisfaction. Branch and bound is probably your best bet. It's not a simple algorithm, and seeing as the problem is NP complete, there are plenty of problem-specific heuristics that may or may not help you. Most good books on advanced algorithms have a chapter on branch and bound. Alternatively, start with the wiki page, which has a boatload of references. | ||
Acrofales
Spain17852 Posts
On March 12 2015 08:09 SpiZe wrote: Hi guys, I have a time period (lets call it A), that goes from say February 1st to April 1st. I also have multiple others smaller time periods (lets call them B) and I have to make sure that my A is always covered by a B period. So at any given time, there is an overlap between A and a B period. Thing is, I have absolutely no idea how one should proceed to do this. Anyone has ideas ? Just some overlap? Or completely covered? Completely covered is pretty simple: just loop over your B periods and find any with a starting datetime earlier or equal to A's starting datetime and ending datetime later or equal to A's ending datetime. If you find one, break out of the loop and return it. If you don't, return false, throw an exception or whatever your solution calls for. Partial overlap requires 2 extra checks, but can be done with a similar approach. | ||
Manit0u
Poland17200 Posts
T_T And that's after I've refactored it a bit to see what's going on, previously it was just this uber-long string being appended to the path. Funny thing is, if you remove the empty filters all the others stop working too... So much for pretty urls... | ||
enigmaticcam
United States280 Posts
On March 12 2015 08:02 Zocat wrote: Do you need to find the best solution (global optima) or a "good enough" solution (local optima)? What is the rough user/job size? Hundreds, thousands, millions, unlimited? Adding / removing rules depends on your rule complexity. Changing a rule can be easy (not working 3 days in a row), but adding a completely new rule might be complicated (user X doesn't like to do job Y, but he can do it if necessary). If you don't need the global optima I would look into genetic algorithms. The fitness function sounds easy enough to implement with your set of rules and hard-rule breaking offspring can die off immediately. "Good enough" is certainly good enough. In fact, if a solution is found that doesn't break any rules, it can stop there. For a given month, there are 40 possible jobs to fill on average, with 8 users on average to fill each job. So the number of possibilities is about 8^40. I had forgotten about genetic algorithms! I've got some experience with those, I might go that route. Thank you! On March 12 2015 08:25 Acrofales wrote:Branch and bound is probably your best bet. It's not a simple algorithm, and seeing as the problem is NP complete, there are plenty of problem-specific heuristics that may or may not help you. Most good books on advanced algorithms have a chapter on branch and bound. Alternatively, start with the wiki page, which has a boatload of references. I looked this up. The description on wiki is practically exactly the solution I'm looking for. But as you say, it doesn't look easy to implement. I'll try the genetic algorithm first, but if for some reason that doesn't work, I'll give this a try. Thanks! | ||
Deleted User 3420
24492 Posts
| ||
Acrofales
Spain17852 Posts
On March 13 2015 10:24 travis wrote: What is the difference between an empty array and a null array? How do you have an empty array that is not null? Depends on the language, but generally, a null array will be a variable that has been declared, but not instantiated, whereas an empty array is an array of length 0 that has been instantiated. To put it in java terms, lets say you have declared an int[] foo without instantiating it. Calling foo[0] will throw a NullPointerException, because java does not know where to even start looking for foo (memory has not been allocated). On the other hand, if you have declared int[] foo = new int[0], and then you call foo[0], it will throw an ArrayIndexOutOfBoundsException, because foo has been allocated, but there is no 0th element in the array. PS. I didn't actually try this code, and it is entirely possible that the Java compiler catches these situations and does not even allow you to do this stuff, but it is meant more as an illustration than a coding example. PS2. I said it depends on the language, because in some languages it's possible there is no difference. | ||
Blitzkrieg0
United States13132 Posts
On March 13 2015 10:24 travis wrote: What is the difference between an empty array and a null array? How do you have an empty array that is not null? A null array would mean you declared a reference to an array, but didn't initialize an array to place in that reference. An empty array would be what you get when you initialize it. int[] numbers; versus int[] numbers = new int[]; It makes more sense if it's a collection like an arraylist rather than an array I imagine. | ||
Blisse
Canada3710 Posts
| ||
Manit0u
Poland17200 Posts
On March 13 2015 10:44 Blisse wrote: gah i have to work in a file where people don't unlock the synclock before calling eventhandler and firing async events... 1 day debugging a deadlock...sad i can't just refactor stuff without a care I feel your pain. Right now I'm doing some refactoring on the legacy code... Entities in the model don't match the database, relations that are declared aren't there (there are no columns like that in the database for example) etc. etc. 2 days debugging and fixing it, just to do something that shouldn't take more than 15 minutes. For the first 3 hours me and other developers were wondering why the hell stuff doesn't work when it clearly should. Scouring the 400 tables of the db revealed our issues. To our horror though, this 400 tables are just for the system skeleton to work, it's using 5 different databases, each on a different server and some of them are really huge. Now we have to somehow fix this mess without breaking it (since the system is being used by several companies). The worst part of it is that each new registered user in any of those companies gets his own DB instance, which is being populated with entries that don't match the model. | ||
Shield
Bulgaria4824 Posts
On March 13 2015 10:24 travis wrote: What is the difference between an empty array and a null array? How do you have an empty array that is not null? Google is very useful. Why don't you search for simple questions there? http://stackoverflow.com/questions/27476845/difference-between-a-null-array-and-empty-array-in-java On March 10 2015 03:01 Ropid wrote: The OOP way is using "virtual" functions. Behind the scenes, those are basically a pointer to a function getting added to the data structure. When you then have a base class and derive a bunch of specialized classes from it, and you then have a collection of elements of that base class, you can call that virtual function on any element of your collection, and what will run is the function from the specialized class without any type casting needed. No idea if that's better or worse than doing things manually like what you're doing right now with your IDs. If I have to be picky, there's no "virtual function". Function is not part of a class. Function which belongs to a class is called a method. ![]() Edit: I know Java has no virtual methods but are they all virtual by default/implicitly? I remember overriding a method is done by the @Override attribute. Edit2: I should follow my own advice. Yes, methods are virtual by default. | ||
Lascero
United States59 Posts
1. My first job has me in the deep end. Some people enjoy this, but code reviews stopped for all new hires after the first two months and we have no automated testing or any real coding standards besides "don't break prod". I feel like I'm only learning how to code for this particular job and product and platform. Would this affect me negatively if I explained this situation to other employers? Would I be a dick for leaving a job for the same reason? (phrased along the lines of "I didn't feel like I could grow" or "I wanted a new challenge") 2. Coding after work seems to suck. I'm mentally drained and don't really feel excited about starting anything, although it's still fun to read about things and do hand-holding tutorials. Is this a mental block that I can overcome by just brute forcing or will it go away on its own once my day job feels more routine and is easier? It feels routine now, but there is still some struggling to fix/build things. This is how I would fix the skill gaps that my job won't directly teach me but I don't want to completely burn out and just hate everything. 3. Is there a grunt-like position for security? Maybe a bit underpaid but still rewarding? I know that's aiming a bit low, but I'm trying a few different areas and I'm trying to get a feel for the time investment of being good at it and when you can first start being useful to someone. Does anyone really care if you start at the bottom, or is it better to just acquire more than the minimum skills, say 1 or 2 years of practice and learning, and first enter the industry at a higher level? Thanks | ||
LaNague
Germany9118 Posts
2. I have the same problem, i rather play games than be productive when im at my home PC, no idea how to "fix". | ||
spinesheath
Germany8679 Posts
| ||
r3dox
Germany261 Posts
did you ask for continued code reviews to improve quality? did you look into areas that could be tested automatically? did you suggest deciding coding standards? 2) basically the same for me, i rather Play games or read about stuff than code as a Hobby. It would be different if i had a Project to work on with others... anyone wanna hack on some 2d game code together? ![]() | ||
![]()
BisuDagger
Bisutopia19158 Posts
Thanks in advance! edit: this is on RHEL7 if that makes any differences. | ||
nunez
Norway4003 Posts
On March 17 2015 02:38 spinesheath wrote: I have phases where I can be productive at home, and then phases where I just don't have enough motivation. These phases last anywhere from a week to several months... producing what? pet projects or work? | ||
spinesheath
Germany8679 Posts
Pet projects. I have a regular full time job which usually exhausts my desire to write code for one day. Well, unless I have one of my productive phases. | ||
nunez
Norway4003 Posts
i find it difficult to decouple from whatever problem i am facing at work, and my pet projects end up being solving the same problems, except phrased more comfortably. | ||
Acrofales
Spain17852 Posts
| ||
| ||