Jeff, thank you very much for all that feedback. It will be a great help
for me, both for this specific scenario and to better understand mathprog
and GLPK.

Hopefully others can benefit from your help too, if they find themselves in
a similar situation to me.

regards,

Nick

On 29 March 2016 at 08:29, Jeffrey Kantor <[email protected]> wrote:

> Nick,
>
> I've attached a more refined model for your problem. There are a large
> number of changes designed to improve efficiency and readability.
>
> 1. The data section format has revised to better consolidate parametric
> data, and to provide non redundant entry of linac capabilities.  This makes
> use of the 'setof' glpk statement.
>
> 2. Syntax has been simplified in various parameter and variable
> declarations.
>
> 3.  Your model will report an infeasible solution if not all patients can
> be assigned to machines. This has been changed so that it assigns as many
> as possible given time and capability constraints. You could create a
> report of those left assigned.
>
> 4. The objective function has been simplified with regard to encroachments
> on excluded time periods.
>
> 5.  Redundant sequencing constraints and variables have been removed.
>
> 6.  Redundant scheduling variables have been removed.
>
> 7. Additional solution reports have been added for patient and machine
> schedules.
>
> 8.  The Big M (here K) has been fixed to the number of minutes in a day.
>
> All in all, this should provide a smaller, faster, and more robust model.
> It could still use some additional parameter checks, but thought this might
> be a good.
>
> For what it's worth, it runs quite well inside the MathProg webpage at
> http://www3.nd.edu/~jeff/mathprog/mathprog.html.
>
> Jeff
>
> On Sun, Mar 27, 2016 at 11:33 PM Jeffrey Kantor <[email protected]> wrote:
>
>> OK.  Here are some quick thoughts ...
>>
>> 1.  You can simplify the data section by defining the sets L and P when
>> defining parameters.  No efficiency gain here, just cleaner.
>> 2.  When I run as is, there are 456 binary variables, 1045 constraints.
>> The sequence constraints only need to be defined for p <  q since
>> the case q > p is redundant.
>> That change alone reduces the problem to 246 binary variables and 625
>> constraints.
>> 3. I haven't tested this, but defining start times as x[p,l] seems
>> redundant. The same information is coded in x[p] and lp[p,l].
>>
>> Points 1 & 2 are illustrated in the attached file.
>>
>> Jeff
>>
>> On Sun, Mar 27, 2016 at 10:41 PM Nick Farrell <[email protected]>
>> wrote:
>>
>>> Hi Jeff, thanks for looking.
>>>
>>> My contrived example may be setting only one capability, but usually
>>> some would have multiple capabilities. For example, an IMRT machine may
>>> also have VMAT capabilities.
>>>
>>> My intention is that if a patient requires multiple capabilities, they
>>> all have to be simultaneously satisfied before a linac is a viable
>>> candidate.
>>>
>>> Hope that helps.
>>>
>>> Nick
>>> On 28 Mar 2016 1:18 PM, "Jeffrey Kantor" <[email protected]> wrote:
>>>
>>>> Hi Nick,
>>>>
>>>> In looking through the model, one question concerns the linac
>>>> capabilities.  These are coded as IMRT, VMAT, and MRI.  Each machine has
>>>> one and only one of the  of these capabilities. And each patient requires
>>>> one and only capability.  Is that true in general, or is that just true for
>>>> this example?
>>>>
>>>> Jeff
>>>>
>>>> On Sun, Mar 27, 2016 at 9:50 PM Nick Farrell <
>>>> [email protected]> wrote:
>>>>
>>>>> It appears the list server is scrubbing my text files:
>>>>> schedule.mod:
>>>>>
>>>>> https://drive.google.com/file/d/0B8FyZKjT_SdKQy1wN3FBRWt6a2c/view?usp=docslist_api
>>>>>
>>>>> Python:
>>>>> https://drive.google.com/file/d/0B8FyZKjT_SdKcmttMzZfdW91emhIcjRaWFFQWTZQMnhzR0dB/view?usp=docslist_api
>>>>> _______________________________________________
>>>>> Help-glpk mailing list
>>>>> [email protected]
>>>>> https://lists.gnu.org/mailman/listinfo/help-glpk
>>>>>
>>>>
_______________________________________________
Help-glpk mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/help-glpk

Reply via email to