²é¿´: 2316  |  »Ø¸´: 9
µ±Ç°Ö»ÏÔʾÂú×ãÖ¸¶¨Ìõ¼þµÄ»ØÌû£¬µã»÷ÕâÀï²é¿´±¾»°ÌâµÄËùÓлØÌû

swustxxl

½ð³æ (ÕýʽдÊÖ)

[½»Á÷] ¡¾ÇóÖú¡¿VS2005ÊýÖµ¼ÆËã³ÌÐòµ÷ÊÔ¡¾¼±Ç󣡣¡£¡£¡¼Ó½ð±Ò¡¿

Êý¾ÝÄâºÏ³ÌÐò£¬ÔËÓÃÏֳɵĶ¯Ì¬Á´½Ó¿âLBFGS·¨£¨´øÔ¼ÊøµÄ£©£¬²Ù×÷ƽ̨ÊÇVS2005£¬½«ÆäÒýÈëMFCµ¥Îĵµ´íÎóµü³ö

ÎÒ½«Ëã·¨³ÌÐò±àÈëÁËCLoginDlg.CPPÖУ¬µã»÷button1£¬³ÌÐò¹Ø±Õ¶Ô»°¿òµ¯³öµ¥Îĵµ½çÃæ£¬ºǫ́ͬʱÍê³ÉÔËËã¡£

void CLoginDlg::OnBnClickedButton1()
{
        // TODO: ÔÚ´ËÌí¼Ó¿Ø¼þ֪ͨ´¦Àí³ÌÐò´úÂë
        _tmain();
        CDialog::OnOK();

}
ÒÔÉÏÊÇCbuttonµÄ´úÂ룬±àÒëÊ×Ïȱ¨´íµÄÊÇ_tmain()λÖã¬ËµµÄÊDz»½ÓÊÜ0¸ö²ÎÊý£¬Õâ¸ö¹«¹²º¯ÊýµÄÔ­ÐÍΪ
int _tmain(int argc, _TCHAR* argv[])
{
     .........
     .........
     return 0;
}
ÎҸɴàÖ±½Ó¶ÔÔ­º¯Êý×öÁ˸͝£¬ÈçÏ£º
int _tmain()
{
     .........
     .........
     return 0;
}
ÔÚ½â¾ö·½°¸ÖÐÓÖÌí¼ÓÁËlbfgsb.libÎļþ£¬ÓÚÊDZàÒë¡¢Á´½Ó¶¼¿Éͨ¹ý£¬ÉõÖÁ¿ÉÒÔÔËÐУ¬µ«µã»÷button1£¬³ÌÐò¾Í»á±¨´í£¬µ¯³öÈç϶Ի°¿ò£º




Ëã·¨µÄ×î³õ³ÌÐòÊÇÕýÈ·µÄ£¬¿É±àÒë¿ÉÁ´½Ó¿ÉÔËÐУ¬½á¹ûÕýÈ·£»ÎÒ¿ÉÒÔн¨Ò»¸öWIN32¿ØÖÆÌ¨Ó¦ÓóÌÐòÖØÏÖËã·¨³ÌÐòµÄЧ¹û¡£Ö¤Ã÷Ëã·¨³ÌÐò±¾ÉíÎÞÎó£¬Ó¦¸ÃÊǶ¯Ì¬Á´½Ó¿âÔÚ¼ÓÔØµ½MFC³ÌÐòʱ³öÏÖÁË´íÎó¡£
Ï£ÍûÓиßÊÖÄÜÖ¸µãÒ»ÏÂ~~²»Ê¤¸Ð¼¤

ÒÔÏÂÊÇÎÒµÄMFC³ÌÐò¹ØÓÚÒýÈëËã·¨¶¯Ì¬Á´½Ó¿âºÍÖ´ÐÐÔËËãµÄƬ¶Î£¬×îºó¸½ÉÏÁËWIN32Ëã·¨³ÌÐòºÍÎÒ×Ô¼ºµÄMFC³ÌÐò£º

// LoginDlg.cpp : ʵÏÖÎļþ
//

#include "stdafx.h"
#include "xxl_try2.h"
#include "LoginDlg.h"

//#include "stdafx.h"
#include "iostream"
#include "memory.h"
#include "malloc.h"
#include "windows.h"
#include "math.h"

using namespace std;

// CLoginDlg ¶Ô»°¿ò

IMPLEMENT_DYNAMIC(CLoginDlg, CDialog)

CLoginDlg::CLoginDlg(CWnd* pParent /*=NULL*/)
        : CDialog(CLoginDlg::IDD, pParent)
{

}

CLoginDlg::~CLoginDlg()
{
}

void CLoginDlg:oDataExchange(CDataExchange* pDX)
{
        CDialog:oDataExchange(pDX);
}

BEGIN_MESSAGE_MAP(CLoginDlg, CDialog)
        ON_BN_CLICKED(IDC_BUTTON1, &CLoginDlg::OnBnClickedButton1)
END_MESSAGE_MAP()

// CLoginDlg ÏûÏ¢´¦Àí³ÌÐò
// LBFGS.cpp : ¶¨Òå¿ØÖÆÌ¨Ó¦ÓóÌÐòµÄÈë¿Úµã¡£
//¼ÆËãÌݶȱ£´æÔÚgÖУ¬¼ÆËãÄ¿±êº¯ÊýÖµ±£´æÔÚfÖÐ
//nÊDzÎÊý¸öÊý£¬xÊDzÎÊýÏòÁ¿
void fcn2(int n,double *x, double*t, double *y,double &f, double *g ){
        f=0;
        g[0]=0;
        g[1]=0;
        g[2]=0;
        g[3]=0;
        g[4]=0;
        g[5]=0;
        for(int k=0;k         {
                double tmp=y[k]-(x[0]*t[k]*exp(x[1]*t[k])+x[2]*t[k]*exp(x[3]*t[k])+x[4]*t[k]*exp(x[5]*t[k]));
                f+=tmp*tmp;
                g[0]+=-2*tmp*t[k]*exp(x[1]*t[k]);
                g[1]+=-2*tmp*t[k]*x[0]*exp(x[1]*t[k])*t[k];
                g[2]+=-2*tmp*t[k]*exp(x[3]*t[k]);
                g[3]+=-2*tmp*t[k]*x[2]*exp(x[3]*t[k])*t[k];
                g[4]+=-2*tmp*t[k]*exp(x[5]*t[k]);
                g[5]+=-2*tmp*t[k]*x[4]*exp(x[5]*t[k])*t[k];
        }

        return;
}

extern "C" void __declspec(dllimport)  __stdcall lbfgsb(int n,int m,double *x, double *l, double *u, int *nbd, double f, double *g, double factr, double pgtol, double *wa, int *iwa,char *task, int iprint,char *csave,bool *lsave,int *isave, double *dsave);

int main()//int argc, _TCHAR* argv[])
{
        const char dllPath[] = "lbfgsb.dll";

        //¼ÓÔØ¶¯Ì¬¿âÎļþ
        HINSTANCE hLibrary = LoadLibraryA(dllPath);
        if(hLibrary == NULL){
                int error =GetLastError ();
                cout<<"Error of LoadLibrary = "<
                cout<<"Can't find the dll file."<                 FreeLibrary(hLibrary);
                return -1;
        }

        /* £¨Èç¹û»ñµÃÕâ¸ö³ÌÐòµÄ¾ä±ú£©»ñµÃÕýÔÚÔËÐгÌÐòµÄ·¾¶ºÍÎļþÃû*/
        bool exePathOut=true;

        if(exePathOut){
                char exePath[1000] = "\0";
                GetModuleFileNameA(hLibrary,exePath,sizeof(exePath));
                cout<         }

        bool *lsave;
        char *task,*csave,*str;
        int n, m,iprint,*nbd,*iwa, *isave;
        double f, factr, pgtol,*x,*l,*u,*g,*wa,*dsave;
        double t[7]={1,1.5,2,2.5,3,3.5,5};
        double y[7]={10.78,80.35,58.81,43.04,23.05,12.35,6.61};

        iprint = 1;
        factr=1.0E+7;       
        pgtol=1.0E-5;
        f=0.0;

        n=6;
        m=10;

        nbd=new int[n];
        iwa=new int[3*n];
        x=new double[n];
        l=new double[n];//ÉèÖñäÁ¿ÏÂÏÞ
        u=new double[n];//ÉèÖñäÁ¿ÉÏÏÞ
        g=new double[n];
        wa=new double[2*m*n+4*n+12*m*m+12*m];
        dsave=new double[29];
        isave=new int[44];
        str=new char[60];
        csave=new char[60];
        task=new char[60];
        lsave=new bool[16];


        for(int i=0;i         {
                nbd=0;
                l=1.0;
                u=10;
        }

        for(int i=1;i         {
                nbd=0;
                l=1.0;
                u=10;
        }

        for(int i=0;i         {
                x=0.0E0;
        }

        sprintf(task,"%s","START";

        while(1){
                lbfgsb(n,m,x,l,u,nbd,f,g,factr,pgtol,wa,iwa,task,iprint,csave,lsave,isave,dsave);
                strncpy(str,task,2);
                if (strncmp(str,"FG",2)==0)
                {
                        fcn2(7, x,t,y,f, g );
                        continue;
                }
                strncpy(str,task,5);
                if(strncmp(str,"NEW_X",5)!=0)
                {
                        for(int i=0;i                         {
                                cout<<"x["<<                         }
                        break;
                }
        }

        delete[] nbd;
        delete[] iwa;
        delete[] x;
        delete[] l;
        delete[] u;
        delete[] g;
        delete[] wa;

        delete[] lsave;
        delete[] task;
        delete[] csave;
        delete[] str;
        delete[] isave;
        delete[] dsave;

        system("pause";
        return 0;
}

void CLoginDlg::OnBnClickedButton1()
{
        // TODO: ÔÚ´ËÌí¼Ó¿Ø¼þ֪ͨ´¦Àí³ÌÐò´úÂë
        main();
        CDialog::OnOK();

}


ÕâÊdzÌÐò
http://good.gd/767141.htm
ÕâÊÇËã·¨µÄÕýÈ·³ÌÐò
http://good.gd/767144.htm

[ Last edited by swustxxl on 2010-10-20 at 10:47 ]
»Ø¸´´ËÂ¥

» ²ÂÄãϲ»¶

» ±¾Ö÷ÌâÏà¹Ø¼ÛÖµÌùÍÆ¼ö£¬¶ÔÄúͬÑùÓаïÖú:

ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû

swustxxl

½ð³æ (ÕýʽдÊÖ)

ajian04:»¶Ó­½»Á÷~ 2010-10-18 13:23:48
ÒýÓûØÌû:
Originally posted by Ïë·ÉµÄÖí at 2010-10-17 14:25:12:
ÎÒÖªµÀÒ»¸öÊýÖµ¼ÆËãÀà¿â¡¶VC++ÊýÖµ¼ÆËãÀà¿â¡·²»´í£¡Äã¿ÉÒÔÊÔÊÔ£¡»¹ÓоÍÊÇÄã¿ÉÒÔÁ¬½ÓMatlab£¡

ÎÒÊDZàдӦÓóÌÐò¸øÓû§Ê¹Óõ쬱¾Éí³ÌÐòÖ»Óм¸Õ×£¬²»¿ÉÄÜ»¹ÈÃÓû§¶îÍâ×°¸ö¼¸°ÙÕ×µÄMATLABÖ§³Ö°É¡£ÄãÍÆ¼öµÄÊéÎÒ»áÈ¥²éÔÄһϣ¬¶àлÁË
7Â¥2010-10-17 18:41:20
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû
²é¿´È«²¿ 10 ¸ö»Ø´ð

magic7004

½ð³æ (Ö°Òµ×÷¼Ò)

¡ï
ÓàÔó³É(½ð±Ò+1):лл²ÎÓëÓ¦Öú£¡ 2010-10-18 10:32:55
Ö±½Óµ÷ÓÃDLLÖеĺ¯Êý£¬ÐèÒªDLLµÄÍ·Îļþ(.h)ºÍ¿âÎļþ(.lib)
Á÷Ã¥²»¿ÉÅ£¬¿ÉŵÄÊÇÁ÷Ã¥ÓÐÎÄ»¯£¬ÓÐÎÄ»¯ÓÖBHµÄÁ÷Ã¥ÎÞµÐ~~£¡
3Â¥2010-10-17 09:27:00
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû

magic7004

½ð³æ (Ö°Òµ×÷¼Ò)

¡ï
ÓàÔó³É(½ð±Ò+1):лл²ÎÓëÓ¦Öú£¡ 2010-10-18 10:33:02
ÁíÍ⣬C++±àÒëÆ÷»á¶Ôº¯Êý¸ÄÃûµÄ¡£Â¥Ö÷¿ÉÒÔÓÃloadlibraryºÍgetprocaddressÀ´µ÷ÓÃDLLÖеĺ¯Êý¡£
Á÷Ã¥²»¿ÉÅ£¬¿ÉŵÄÊÇÁ÷Ã¥ÓÐÎÄ»¯£¬ÓÐÎÄ»¯ÓÖBHµÄÁ÷Ã¥ÎÞµÐ~~£¡
4Â¥2010-10-17 09:29:21
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû

Ïë·ÉµÄÖí

ľ³æ (ÕýʽдÊÖ)

¡ï
ÓàÔó³É(½ð±Ò+1):лл²ÎÓëÓ¦Öú£¡ 2010-10-18 10:33:11
ÎÒÖªµÀÒ»¸öÊýÖµ¼ÆËãÀà¿â¡¶VC++ÊýÖµ¼ÆËãÀà¿â¡·²»´í£¡Äã¿ÉÒÔÊÔÊÔ£¡»¹ÓоÍÊÇÄã¿ÉÒÔÁ¬½ÓMatlab£¡
5Â¥2010-10-17 14:25:12
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû
×î¾ßÈËÆøÈÈÌûÍÆ¼ö [²é¿´È«²¿] ×÷Õß »Ø/¿´ ×îºó·¢±í
[»ù½ðÉêÇë] ·Å°ñǰµÄ²»µ­¶¨ 20+4 snowwithsea 2026-08-19 17/850 2026-08-24 10:20 by echo8914667
[»ù½ðÉêÇë] ¿ÆÑй¶ùÌ«ÄÑÁË +18 ÎÒ4´ó°×²Ë 2026-08-20 19/950 2026-08-24 09:47 by ¿­¶÷¹ãÊ¢´ß»¯·ÖÎ
[»ù½ðÉêÇë] Ã÷ÌìÓ¦¸Ã¿É²éÁË£¡£¿ +4 chengyan1220 2026-08-23 4/200 2026-08-24 08:47 by gloomy6159
[»ù½ðÉêÇë] ʲôʱºò¿ª½±£¿ +10 CrisMessi 2026-08-18 11/550 2026-08-24 06:50 by ¿ªÐĵÄСʨ×Ó
[»ù½ðÉêÇë] ½¨Òé»ù½ð·¢²¼Ìáǰ¸ø³öÃ÷È·µÄʱ¼äµã +11 kulium 2026-08-21 14/700 2026-08-24 02:12 by Á÷Á÷ÉË
[»ù½ðÉêÇë] 2026ÄêµÄ¹ú¼ÒÉç¿Æ»ù½ðÏîĿͨѶÆÀÉóµÄйæÔòÓëж¯Ïò¡¢ÐÂÌôÕ½ +4 process2012 2026-08-23 5/250 2026-08-23 19:58 by jurkat.1640
[½Ìʦ֮¼Ò] Ìø²ÛºóÔÚÑÐÏîÄ¿Ôõô°ì£¿ +5 ¼òµ¥»¯xn 2026-08-22 10/500 2026-08-23 12:38 by ¼òµ¥»¯xn
[»ù½ðÉêÇë] ½ñÌì·Å°ñÂ𣿠+15 ²¼²¼ºÍÒ»¶þ 2026-08-19 16/800 2026-08-23 09:55 by ÕÅ´ºÉú
[»ù½ðÉêÇë] Ö»ÓÐÿÄêÕâÖÖʱºòÀ´¹ä¹äСľ³æ +24 yaoyewhu2008 2026-08-20 26/1300 2026-08-22 17:43 by kammury
[»ù½ðÉêÇë] ÈËÆø²»ÐÐÁË +8 fansofjerry 2026-08-21 8/400 2026-08-22 16:30 by zyqchem
[»ù½ðÉêÇë] ½ñÌì»ù½ð»á³ö½á¹ûÂð£¿20260819 +16 kkkl_v 2026-08-19 17/850 2026-08-22 16:12 by °¢²¼Abu
[»ù½ðÉêÇë] ʱ¼ä´Á½ñÌ죬20ºÅ±äÁË +5 archvillain 2026-08-20 5/250 2026-08-22 06:12 by hui_daxiao
[»ù½ðÉêÇë] ½ñÈÕ²»·Å°ñ£¿Íø´«¹ú×ÔȻԤ¼Æ 8 Ô 27 Èտɲé½á¹û +16 ҽѧÀÏÄк¢ 2026-08-20 20/1000 2026-08-21 21:13 by Ldrop2023
[»ù½ðÉêÇë] ¿´À´½ñÌì²»»á·Å°ñÁË£¿ +8 chengyan1220 2026-08-21 11/550 2026-08-21 17:52 by dcqxinyang
[»ù½ðÉêÇë] Ó¦¸ÃÊÇÏÂÖÜÈý26ÈÕ¹«²¼Á˰ɣ¿ +4 ¹þ¹þ¸ò£¿ 2026-08-21 4/200 2026-08-21 10:58 by Vivilian
[ÂÛÎÄͶ¸å] Ͷ¸å×Éѯ +5 wwm09 2026-08-17 7/350 2026-08-21 10:11 by ÆÚ¿¯ÂÛÎİïÊÖ
[»ù½ðÉêÇë] »ù½ð°¡»ù½ð +4 longfie172 2026-08-20 4/200 2026-08-21 08:58 by mark mao
[»ù½ðÉêÇë] ¹À¼ÆÊÇÖÜËÄ +3 archvillain 2026-08-18 3/150 2026-08-21 01:48 by jnhyjjm
[»ù½ðÉêÇë] ʱ¼ä´Á±äÁË£¬ÄÜ¿´³öʲôÎÊÌ⣿ +18 »ùŵßä¿Í 2026-08-17 23/1150 2026-08-20 17:19 by Godzela
[»ù½ðÉêÇë] Ã÷Ìì·Å°ñ£¿ +5 Shxjjxjkx 2026-08-18 5/250 2026-08-18 18:14 by -´ó´ó´ó´ó´ó-
ÐÅÏ¢Ìáʾ
ÇëÌî´¦ÀíÒâ¼û