Movatterモバイル変換


[0]ホーム

URL:


ContentsMenuExpandLight modeDark modeAuto light/dark mode
Gurobi Example Tour
Light LogoDark Logo
Gurobi
Back to top

Sos Examples#

This section includes source code for all of the Gurobi sos examples.The same source code can be found in theexamples directory of theGurobi distribution.

/* Copyright 2025, Gurobi Optimization, LLC *//* This example creates a very simple Special Ordered Set (SOS) model.   The model consists of 3 continuous variables, no linear constraints,   and a pair of SOS constraints of type 1. */#include<stdlib.h>#include<stdio.h>#include"gurobi_c.h"intmain(intargc,char*argv[]){GRBenv*env=NULL;GRBmodel*model=NULL;interror=0;doublex[3];doubleobj[3];doubleub[3];intsostype[2];intsosbeg[2];intsosind[4];doublesoswt[4];intoptimstatus;doubleobjval;/* Create environment */error=GRBloadenv(&env,"sos.log");if(error)gotoQUIT;/* Create an empty model */error=GRBnewmodel(env,&model,"sos",0,NULL,NULL,NULL,NULL,NULL);if(error)gotoQUIT;/* Add variables */obj[0]=-2;obj[1]=-1;obj[2]=-1;ub[0]=1.0;ub[1]=1.0;ub[2]=2.0;error=GRBaddvars(model,3,0,NULL,NULL,NULL,obj,NULL,ub,NULL,NULL);if(error)gotoQUIT;/* Build first SOS1: x0=0 or x1=0 */sosind[0]=0;sosind[1]=1;soswt[0]=1.0;soswt[1]=2.0;sosbeg[0]=0;sostype[0]=GRB_SOS_TYPE1;/* Build second SOS1: x0=0 or x2=0 */sosind[2]=0;sosind[3]=2;soswt[2]=1.0;soswt[3]=2.0;sosbeg[1]=2;sostype[1]=GRB_SOS_TYPE1;/* Add SOSs to model */error=GRBaddsos(model,2,4,sostype,sosbeg,sosind,soswt);if(error)gotoQUIT;/* Optimize model */error=GRBoptimize(model);if(error)gotoQUIT;/* Write model to 'sos.lp' */error=GRBwrite(model,"sos.lp");if(error)gotoQUIT;/* Capture solution information */error=GRBgetintattr(model,GRB_INT_ATTR_STATUS,&optimstatus);if(error)gotoQUIT;error=GRBgetdblattr(model,GRB_DBL_ATTR_OBJVAL,&objval);if(error)gotoQUIT;error=GRBgetdblattrarray(model,GRB_DBL_ATTR_X,0,3,x);if(error)gotoQUIT;printf("\nOptimization complete\n");if(optimstatus==GRB_OPTIMAL){printf("Optimal objective: %.4e\n",objval);printf("  x=%.4f, y=%.4f, z=%.4f\n",x[0],x[1],x[2]);}elseif(optimstatus==GRB_INF_OR_UNBD){printf("Model is infeasible or unbounded\n");}else{printf("Optimization was stopped early\n");}QUIT:/* Error reporting */if(error){printf("ERROR: %s\n",GRBgeterrormsg(env));exit(1);}/* Free model */GRBfreemodel(model);/* Free environment */GRBfreeenv(env);return0;}

Help and Feedback


[8]
ページ先頭

©2009-2025 Movatter.jp