[Cbc] CoinModel Equality?
Matthew Gidden
gidden at wisc.edu
Mon Feb 17 11:09:53 EST 2014
Ok, thank you very much John. I'll give it a shot.
On Mon, Feb 17, 2014 at 10:01 AM, John Forrest
<john.forrest at fastercoin.com>wrote:
> Matthew,
>
> Seemed simpler just to write an OsiSolverInterface::differentModel.
> Lacking energy, I could not be bothered to check names being same.
>
> Only in Osi/trunk but you can safely copy OsiSolverInterface.?pp over to
> stable as no recent changes.
>
> John Forrest
>
>
> On 16/02/14 20:24, Matthew Gidden wrote:
>
> Hi John, all,
>
> I've finally got my testing plumbing finished and am actually trying to
> compare Models. I'm running into the problem that
> a) there is no member function for OsiSolverInterface to return access to
> a CoinModel
> b) Models don't actually from CoinModel (e.g.,
> ClpSimplex->ClpModel-/>CoinModel)
>
> I'll do my best to explain my problem and wait for advice/clarification
> from the list.
>
> I have a factory method that returns a pointer to an OsiSolverInterface.
> I then create an instance of a problem using the interface, solve it, and
> interpret the solution. My goal is to unit test the model creation process.
>
> In the following example, the interface is named iface, CoinPackedMatrix
> (m), and the associated upper/lower bounds are vectors. Is this the best
> way to try to compare models? (FYI -- I assume not, because it results in a
> seg fault)
>
> CoinModel model(nrows, ncols, &m, &row_lbs[0], &row_ubs[0],
>> &col_lbs[0], &col_ubs[0], &obj_coeffs[0]);
>> ClpSimplex* compare =
>> dynamic_cast<OsiClpSolverInterface*>(iface)->getModelPtr();
>> EXPECT_EQ(0, model.differentModel(*compare->createCoinModel(), true));
>
>
> You can see the entire (long) testing process here:
> https://github.com/gidden/cyclus/blob/lpsolver/tests/prog_translator_tests.cc
>
> Thank you very much in advance!
>
>
>
> On Thu, Feb 13, 2014 at 11:44 AM, Matthew Gidden <gidden at wisc.edu> wrote:
>
>> Awesome, thank you, John.
>>
>>
>> On Thu, Feb 13, 2014 at 11:43 AM, John Forrest <
>> john.forrest at fastercoin.com> wrote:
>>
>>> Matthew,
>>>
>>> There is a CoinModel::differentModel which should do what you want.
>>> There is a default tolerance test for two values being same - if this isn't
>>> good enough then it would be easy to pass in a tolerance test to one of the
>>> CoinModels.
>>>
>>> John Forrest
>>>
>>> On 06/02/14 19:42, Matthew Gidden wrote:
>>>
>>> Great, thanks for your response, Miles!
>>>
>>>
>>> On Thu, Feb 6, 2014 at 12:27 PM, Miles Lubin <miles.lubin at gmail.com>wrote:
>>>
>>>> Hi Matthew,
>>>>
>>>> CoinModel can be used to store an LP/MIP instance, but I don't
>>>> believe there are any comparison methods. You'll likely have to manually
>>>> iterate through the problem data to compare entry by entry, using whatever
>>>> floating-point comparison tolerance is appropriate. I would also suggest
>>>> building your infrastructure around a solver-independent interface like
>>>> OSI, because it's always valuable to be able to compare the performance of
>>>> different solvers. Any academic publication would be remiss to only use one
>>>> open-source MIP solver when making claims about time to solve a particular
>>>> problem.
>>>>
>>>> Best,
>>>> Miles
>>>>
>>>>
>>>> On Thu, Feb 6, 2014 at 12:51 PM, Matthew Gidden <gidden at wisc.edu>wrote:
>>>>
>>>>> Hi all,
>>>>>
>>>>> First time caller, long time listener. I'm gearing up the portion of
>>>>> my research in which I'll be using and comparing simplex and branch-and-cut
>>>>> solvers versus some naive solvers in our simulation environment [1]. We
>>>>> require a permissive, open source license (for compatibility with our own -
>>>>> BSD 3-clause), so the COIN suite was a natural fit.
>>>>>
>>>>> To the meat of my question:
>>>>> I've written a high-level API for myself and other devs to use to
>>>>> describe an problem instance in part of our simulation framework. I would
>>>>> like to be able to unit test it such that a problem instance it describes
>>>>> is equivalent to some known problem instance (read in through MPS, for
>>>>> example). My initial thought was to compare configured CoinModels (i.e.,
>>>>> builders). Is there an easy way to compare them? Is this the best approach?
>>>>>
>>>>> I look forward to your response, thanks!
>>>>>
>>>>> [1] http://fuelcycle.org/
>>>>>
>>>>> --
>>>>> Matthew Gidden
>>>>> Ph.D. Candidate, Nuclear Engineering
>>>>> The University of Wisconsin -- Madison
>>>>> Ph. 225.892.3192
>>>>>
>>>>> _______________________________________________
>>>>> Cbc mailing list
>>>>> Cbc at list.coin-or.org
>>>>> http://list.coin-or.org/mailman/listinfo/cbc
>>>>>
>>>>>
>>>>
>>>
>>>
>>> --
>>> Matthew Gidden
>>> Ph.D. Candidate, Nuclear Engineering
>>> The University of Wisconsin -- Madison
>>> Ph. 225.892.3192
>>>
>>>
>>> _______________________________________________
>>> Cbc mailing listCbc at list.coin-or.orghttp://list.coin-or.org/mailman/listinfo/cbc
>>>
>>>
>>>
>>> _______________________________________________
>>> Cbc mailing list
>>> Cbc at list.coin-or.org
>>> http://list.coin-or.org/mailman/listinfo/cbc
>>>
>>>
>>
>>
>> --
>> Matthew Gidden
>> Ph.D. Candidate, Nuclear Engineering
>> The University of Wisconsin -- Madison
>> Ph. 225.892.3192
>>
>
>
>
> --
> Matthew Gidden
> Ph.D. Candidate, Nuclear Engineering
> The University of Wisconsin -- Madison
> Ph. 225.892.3192
>
>
>
--
Matthew Gidden
Ph.D. Candidate, Nuclear Engineering
The University of Wisconsin -- Madison
Ph. 225.892.3192
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://list.coin-or.org/pipermail/cbc/attachments/20140217/3d1e9252/attachment.html>
More information about the Cbc
mailing list