[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Help-glpk] scaling in glpk_4_64.dll
From: |
Heinrich Schuchardt |
Subject: |
Re: [Help-glpk] scaling in glpk_4_64.dll |
Date: |
Fri, 16 Mar 2018 19:56:13 +0100 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.6.0 |
On 03/16/2018 03:39 PM, Huber, Jean-Christophe wrote:
> Dear GLPK-team,
>
>
>
> I’m using GLPK64 from VBA/Excel and wanted to define scaling options.
>
> In the given example for VBA (file glpk.bas in the GLPK64 zip file from
> SourceForge), there is no declaration for the scaling function.
>
>
>
> I tried adding manually as defined below:
>
>
>
> /#if win64 then/
>
> /Declare PtrSafe Sub glp_scale_prob Lib "C:\GLP_DLL\glpk_4_64.dll"
> (ByVal lp As LongPtr, ByVal flags As Long)/
>
> /#else/
>
> /Declare PtrSafe Sub glp_scale_prob Lib
> "C:\GLP_DLL\glpk_4_64_stdcall.dll" (ByVal lp As LongPtr, ByVal flags As
> Long)/
Your definition looks ok. Could you, please, send me a Basic module
(*.bas file) demonstrating the problem.
In the 4.65 release of GLPK for Windows I will add the missing scaling
function definitions for VBA.
' scaling options:
Public Const GLP_SF_GM = &H1 ' perform geometric mean scaling
Public Const GLP_SF_EQ = &H10 ' perform equilibration scaling
Public Const GLP_SF_2N = &H20 ' round scale factors to power of two
Public Const GLP_SF_SKIP = &H40 ' skip if problem is well scaled
Public Const GLP_SF_AUTO = &H80 ' choose scaling options automatically
' Problem scaling routines
' set (change) row scale factor
Declare PtrSafe Sub glp_set_rii(ByVal lp As LongPtr, ByVal i As Long,
ByVal rii As Double)
' set (change) column factor
Declare PtrSafe Sub glp_set_sjj(ByVal lp As LongPtr, ByVal j As Long,
ByVal sjj As Double)
' retrieve row scale factor
Declare PtrSafe Function glp_get_rii(ByVal lp As LongPtr, ByVal i As
Long) As Double
' retrieve column factor
Declare PtrSafe Function glp_get_sjj(ByVal lp As LongPtr, ByVal j As
Long) As Double
' scale problem data
Declare PtrSafe Sub glp_scale_prob(ByVal lp As LongPtr, ByVal flags As Long)
' unscale problem data
Declare PtrSafe Sub glp_unscale_prob(ByVal lp As LongPtr)
Best regards
Heinrich Schuchardt