1_Packages_Variables_And_Functions

  • 每个go程序都是由包构成

  • (1) 同一个目录xx下的所有go文件,开头的package xxx中的xxx必须相同

    (然而神奇的是目录名称xx和package名xxx可以不相同)

    (2) 程序总是从__main package__开始运行,package名不是main的go文件即便定义了func main()也没用

    (3) import的是目录,调用的时候用的是包名

    (4) 同一个目录下,如果package名是main的话,那么只能有一个func main;如果有多个func main,需要在前面加上,并且再空一行再开始其他内容,否则会报错

      // +build ignore
    

    (5) 不同目录下可以建立多个名为package main的func main,分别进行测试(因为go允许目录名和包名不一致,所以可以暂时把包名改成main,测完了再改回来

  • 导入import

    (1) 可以使用多个import

      import "fmt"
      import "math"
    

    (2) 也可以使用分组导入,用括号把它们括起来(推荐

      import (
          "fmt"
          "math"
      )
    

    其中,fmt和math都是C:\Go\src下的包

  • 已导出exported

    (1) 如果一个名字以__大写字母__开头,就是__已导出的__

    (2) 在导入一个包时,只能引用其中__已导出__的名字;

    任何未导出的名字在该包外均无法访问,但是包内是自由访问的

      package main
    
      import (
          "fmt"
          "math"
      )
    
      func main() {
          fmt.Println(math.Pi)   //正确的写法
          fmt.Println(math.pi)   //会报错
      }
    
  • 注释

    (1) 单行注释: //

    (2) 多行注释: /* */

  • 函数

    (1) func开头

    (2) 可以有0个, 1个或多个参数

    (3) 类型在变量名之后

      package main
    
      import "fmt"
    
      func add(x int, y int) int {
          return x + y
      }
    
      func main() {
          fmt.Println(add(42, 13))
      }
    

    (4) 当连续两个或多个函数的已命名形参类型相同时,除最后一个类型以外,其它都可以省略

      package main
    
      import "fmt"
    
      func add(x, y int) int {
          return x + y
      }
    
      func main() {
          fmt.Println(add(42, 13))
      }
    

    (5) 函数可以返回__任意数量的返回值__

    函数返回值类型写在参数后面,大括号前面

      package main
    
      import "fmt"
    
      func swap(x, y string) (string, string) {
          return y, x
      }
    
      func main() {
          a, b := swap("hello", "world")
          fmt.Println(a, b)
      }
    

    (6) 返回值可以被命名,作为__文档__使用

      package main
    
      import "fmt"
    
      func split(sum int) (x, y int) {
    
          x = sum * 4 / 9
          y = sum - x
    
          return x, y
      }
    
      func main() {
    
          fmt.Println(split(17))
      }
    

    (7) 比较特殊的是error接口类型也作为返回值,类似于抛出异常

  • 变量

    (1) var用来声明一个变量(列表)

    (2) 和函数参数列表、返回值列表一样,声明的变量类型放在最后

    (3) var可以出现在包级别或函数级别

      package main
    
      import "fmt"
    
      var c, python, java bool
    
      func main() {
    
          var i int
          fmt.Println(i, c, python, java)
      }
    

    (4) 变量可以赋初值,如果赋初值的话可以不用指定变量类型

      package main
    
      import "fmt"
    
      var i, j int = 1, 2
      var k = "haha"
    
      func main() {
    
          var c, python, java = true, false, "no!"
    
          fmt.Println(i, j, c, python, java)
          fmt.Println(k)
      }
    

    (5) 在函数中,可以__用:=代替var__进行变量简短声明,但是要在类型明确的地方

    函数外声明变量只能用var

      package main
    
      import "fmt"
    
      func main() {
    
          var i, j int = 1, 2
          k := 3
          c, python, java := true, false, "no!"
    
          fmt.Println(i, j, k, c, python, java)
      }
    
  • 基本数据类型

    (1) bool

    (2) string

    (3) int int8 int16 int32 int64

    (4) uint uint8 uint16 uint32 uint64 uintptr

    (5) byte // uint8 的别名

    (6) rune // int32 的别名 // 表示一个 Unicode 码点

    (7) float32 float64

    (8) complex64 complex128

      package main
    
      import (
          "fmt"
          "math/cmplx"
      )
    
      var (       //声明变量也可以使用分组形式
    
          ToBe   bool       = false
          MaxInt uint64     = 1<<64 - 1
          z      complex128 = cmplx.Sqrt(-5 + 12i)
      )
    
      func main() {
    
          fmt.Printf("Type: %T Value: %v\n", ToBe, ToBe)
          fmt.Printf("Type: %T Value: %v\n", MaxInt, MaxInt)
          fmt.Printf("Type: %T Value: %v\n", z, z)
      }
    
  • 基本数据的__零值__

    (1) 没有明确初始值的变量声明会被赋予它们的零值

    (2) 数值类型为 0,布尔类型为 false,字符串为 “”(空字符串),数组、接口之类的是nil

  • (1) Go 在不同类型的项之间赋值时需要__显式转换__,无论是怎么转

    (2) 可以靠var声明的方式转,也可以靠:=的方式转

      package main
    
      import (
          "fmt"
          "math"
      )
    
      func main() {
    
          var x, y int = 3, 4
          var f float64 = math.Sqrt(float64(x*x + y*y))
          var z uint = uint(f)
    
          i := 42
          g := float64(i)
          u := uint(f)
    
          fmt.Println(x, y, z, i, g, u)
      }
    

    (3) 不显式指定变量类型时,可以自动进行__类型推导__

      package main
    
      import "fmt"
    
      func main() {
    
          v := 42.2 + 0.8i // 修改这里!
          fmt.Printf("v is of type %T\n", v)
      }
    
  • 常量

    (1) 使用 const 关键字声明

    (2) 常量可以是字符、字符串、布尔值或数值

    (3) 常量__不能__用 := 语法声明

      package main
    
      import "fmt"
    
      const Pi = 3.14
    
      func main() {
    
          const World = "世界"
    
          fmt.Println("Hello", World)
          fmt.Println("Happy", Pi, "Day")
    
          const Truth = true
          fmt.Println("Go rules?", Truth)
      }
    

    (4) 一个未指定类型的常量由上下文来决定类型

      package main
    
      import "fmt"
    
      const (
          // 将 1 左移 100 位来创建一个非常大的数字
          // 即这个数的二进制是 1 后面跟着 100 个 0
          Big = 1 << 100
          // 再往右移 99 位,即 Small = 1 << 1,或者说 Small = 2
          Small = Big >> 99
      )
    
      func needInt(x int) int { 
          return x*10 + 1 
      }
    
      func needFloat(x float64) float64 {
          return x * 0.1
      }
    
      func main() {
    
          fmt.Println(needInt(Small))
          //fmt.Println(needInt(Big))     //会报错
          fmt.Println(needFloat(Small))
          fmt.Println(needFloat(Big))
      }
    
Epoch 26: val_binary_accuracy improved from 0.88639 to 0.88671, saving model to ./modelsave/SUMIMO_simulation_CDLD_16QAM_MCS10_SNR5_LN_GN_group2_sparse_no_ITP WARNING:absl:Found untraced functions such as complex_conv2d_7_layer_call_fn, complex_conv2d_7_layer_call_and_return_conditional_losses, conv2d_layer_call_fn, conv2d_layer_call_and_return_conditional_losses, _jit_compiled_convolution_op while saving (showing 5 of 232). These functions will not be directly callable after loading. 3375/3375 - 254s - loss: 0.2509 - binary_accuracy: 0.8884 - val_loss: 0.2549 - val_binary_accuracy: 0.8867 - 254s/epoch - 75ms/step Epoch 27/100 Epoch 27: val_binary_accuracy improved from 0.88671 to 0.88770, saving model to ./modelsave/SUMIMO_simulation_CDLD_16QAM_MCS10_SNR5_LN_GN_group2_sparse_no_ITP WARNING:absl:Found untraced functions such as complex_conv2d_7_layer_call_fn, complex_conv2d_7_layer_call_and_return_conditional_losses, conv2d_layer_call_fn, conv2d_layer_call_and_return_conditional_losses, _jit_compiled_convolution_op while saving (showing 5 of 232). These functions will not be directly callable after loading. 2025-11-05 13:33:34.482240: W tensorflow/core/framework/op_kernel.cc:1745] OP_REQUIRES failed at save_restore_v2_ops.cc:282 : NOT_FOUND: ./modelsave/SUMIMO_simulation_CDLD_16QAM_MCS10_SNR5_LN_GN_group2_sparse_no_ITP/variables/variables_temp/part-00000-of-00001.index; No such file or directory Traceback (most recent call last): File "3-train_simulation_CDLD_16QAM_MCS10_SNR5p1_5p4_5p6_LN_GN_group2_sparse_5PRB_no_ITP_ear_stop_clip.py", line 145, in <module> callbacks=callback_list) # list,这个list中的回调函数将会在训练过程中的适当时机被调用,从而实现实时保存训练模型以及训练参数的目的 File "/home/ai/miniconda3/envs/venv/lib/python3.7/site-packages/keras/utils/traceback_utils.py", line 67, in error_handler raise e.with_traceback(filtered_tb) from None File "/home/ai/miniconda3/envs/venv/lib/python3.7/site-packages/tensorflow/python/eager/execute.py", line 55, in quick_execute inputs, attrs, num_outputs) tensorflow.python.framework.errors_impl.NotFoundError: ./modelsave/SUMIMO_simulation_CDLD_16QAM_MCS10_SNR5_LN_GN_group2_sparse_no_ITP/variables/variables_temp/part-00000-of-00001.index; No such file or directory [Op:MergeV2Checkpoints]
11-07
Traceback (most recent call last): File "/home/jfq/anaconda3/envs/pinn/lib/python3.10/site-packages/pinnstf2/utils/utils.py", line 72, in wrap metric_dict, object_dict = task_func( File "/home/jfq/anaconda3/envs/pinn/lib/python3.10/site-packages/pinnstf2/train.py", line 140, in train trainer.fit(model=model, datamodule=datamodule) File "/home/jfq/anaconda3/envs/pinn/lib/python3.10/site-packages/pinnstf2/trainer/trainer.py", line 196, in fit self.train_loop(model, train_dataloader) File "/home/jfq/anaconda3/envs/pinn/lib/python3.10/site-packages/pinnstf2/trainer/trainer.py", line 223, in train_loop loss, extra_variables = model.train_step(train_data) File "/home/jfq/anaconda3/envs/pinn/lib/python3.10/site-packages/tensorflow/python/util/traceback_utils.py", line 153, in error_handler raise e.with_traceback(filtered_tb) from None File "/tmp/__autograph_generated_filerpb2wx2d.py", line 17, in tf__train_step (loss, pred) = ag__.converted_call(ag__.ld(self).model_step, (ag__.ld(batch),), None, fscope) File "/tmp/__autograph_generated_filegbafgunr.py", line 35, in tf__model_step ag__.for_stmt(ag__.converted_call(ag__.ld(batch).items, (), None, fscope), None, loop_body, get_state, set_state, ('loss', 'preds'), {'iterate_names': '(loss_fn_name, data)'}) File "/tmp/__autograph_generated_filegbafgunr.py", line 31, in loop_body (loss, preds) = ag__.converted_call(ag__.ld(self).function_mapping[ag__.ld(loss_fn_name)], (ag__.ld(data), ag__.ld(loss), ag__.ld(self).functions), None, fscope) File "/tmp/__autograph_generated_file6womagev.py", line 49, in tf__loss_fn ag__.if_stmt(ag__.ld(self).collection_points_names, if_body_1, else_body_1, get_state_1, set_state_1, ('outputs',), 1) File "/tmp/__autograph_generated_file6womagev.py", line 44, in if_body_1 ag__.if_stmt(ag__.ld(functions)['extra_variables'], if_body, else_body, get_state, set_state, ('outputs',), 1) File "/tmp/__autograph_generated_file6womagev.py", line 43, in else_body outputs = ag__.converted_call(ag__.ld(functions)['pde_fn'], (ag__.ld(outputs),) + tuple(ag__.ld(x)) + (ag__.ld(t),), None, fscope) File "/tmp/__autograph_generated_filehu__nt1c.py", line 84, in tf__pde_fn ag__.ld(outputs)['e1'] = -ag__.ld(p_x) + ag__.ld(miu) / 3 * (ag__.ld(u_xx) + ag__.ld(v_yx) + ag__.ld(w_zx)) + ag__.converted_call(ag__.ld(miu), (ag__.ld(u_xx) + ag__.ld(u_yy) + ag__.ld(u_zz),), None, fscope) - ag__.converted_call(ag__.ld(rou), (ag__.ld(u_t) + ag__.ld(u) * ag__.ld(u_x) + ag__.ld(v) * ag__.ld(u_y) + ag__.ld(w) * ag__.ld(u_z),), None, fscope) TypeError: in user code: File "/home/jfq/anaconda3/envs/pinn/lib/python3.10/site-packages/pinnstf2/models/pinn_module.py", line 129, in train_step * loss, pred = self.model_step(batch) File "/home/jfq/anaconda3/envs/pinn/lib/python3.10/site-packages/pinnstf2/models/pinn_module.py", line 115, in model_step * loss, preds = self.function_mapping[loss_fn_name](data, loss, self.functions) File "/home/jfq/anaconda3/envs/pinn/lib/python3.10/site-packages/pinnstf2/data/sampler/mesh_sampler.py", line 86, in loss_fn * outputs = functions["pde_fn"](outputs, *x, t) File "/home/jfq/pinns-tf2-main/pinns-tf2-main/examples/yuanzhu/train.py", line 141, in pde_fn * outputs["e1"] = -p_x + (miu / 3) * (u_xx + v_yx + w_zx) + miu(u_xx + u_yy + u_zz) - rou(u_t + u * u_x + v * u_y + w * u_z) TypeError: 'float' object is not callable [2025-09-17 20:55:26,705][pinnstf2.utils.utils][INFO] - Output dir: /home/jfq/pinns-tf2-main/pinns-tf2-main/examples/yuanzhu/examples/yuanzhu/outputs/20-55-16 Error executing job with overrides: [] Traceback (most recent call last): File "/home/jfq/pinns-tf2-main/pinns-tf2-main/examples/yuanzhu/train.py", line 162, in main metric_dict, _ = pinnstf2.train( File "/home/jfq/anaconda3/envs/pinn/lib/python3.10/site-packages/pinnstf2/utils/utils.py", line 84, in wrap raise ex File "/home/jfq/anaconda3/envs/pinn/lib/python3.10/site-packages/pinnstf2/utils/utils.py", line 72, in wrap metric_dict, object_dict = task_func( File "/home/jfq/anaconda3/envs/pinn/lib/python3.10/site-packages/pinnstf2/train.py", line 140, in train trainer.fit(model=model, datamodule=datamodule) File "/home/jfq/anaconda3/envs/pinn/lib/python3.10/site-packages/pinnstf2/trainer/trainer.py", line 196, in fit self.train_loop(model, train_dataloader) File "/home/jfq/anaconda3/envs/pinn/lib/python3.10/site-packages/pinnstf2/trainer/trainer.py", line 223, in train_loop loss, extra_variables = model.train_step(train_data) File "/home/jfq/anaconda3/envs/pinn/lib/python3.10/site-packages/tensorflow/python/util/traceback_utils.py", line 153, in error_handler raise e.with_traceback(filtered_tb) from None File "/tmp/__autograph_generated_filerpb2wx2d.py", line 17, in tf__train_step (loss, pred) = ag__.converted_call(ag__.ld(self).model_step, (ag__.ld(batch),), None, fscope) File "/tmp/__autograph_generated_filegbafgunr.py", line 35, in tf__model_step ag__.for_stmt(ag__.converted_call(ag__.ld(batch).items, (), None, fscope), None, loop_body, get_state, set_state, ('loss', 'preds'), {'iterate_names': '(loss_fn_name, data)'}) File "/tmp/__autograph_generated_filegbafgunr.py", line 31, in loop_body (loss, preds) = ag__.converted_call(ag__.ld(self).function_mapping[ag__.ld(loss_fn_name)], (ag__.ld(data), ag__.ld(loss), ag__.ld(self).functions), None, fscope) File "/tmp/__autograph_generated_file6womagev.py", line 49, in tf__loss_fn ag__.if_stmt(ag__.ld(self).collection_points_names, if_body_1, else_body_1, get_state_1, set_state_1, ('outputs',), 1) File "/tmp/__autograph_generated_file6womagev.py", line 44, in if_body_1 ag__.if_stmt(ag__.ld(functions)['extra_variables'], if_body, else_body, get_state, set_state, ('outputs',), 1) File "/tmp/__autograph_generated_file6womagev.py", line 43, in else_body outputs = ag__.converted_call(ag__.ld(functions)['pde_fn'], (ag__.ld(outputs),) + tuple(ag__.ld(x)) + (ag__.ld(t),), None, fscope) File "/tmp/__autograph_generated_filehu__nt1c.py", line 84, in tf__pde_fn ag__.ld(outputs)['e1'] = -ag__.ld(p_x) + ag__.ld(miu) / 3 * (ag__.ld(u_xx) + ag__.ld(v_yx) + ag__.ld(w_zx)) + ag__.converted_call(ag__.ld(miu), (ag__.ld(u_xx) + ag__.ld(u_yy) + ag__.ld(u_zz),), None, fscope) - ag__.converted_call(ag__.ld(rou), (ag__.ld(u_t) + ag__.ld(u) * ag__.ld(u_x) + ag__.ld(v) * ag__.ld(u_y) + ag__.ld(w) * ag__.ld(u_z),), None, fscope) TypeError: in user code: File "/home/jfq/anaconda3/envs/pinn/lib/python3.10/site-packages/pinnstf2/models/pinn_module.py", line 129, in train_step * loss, pred = self.model_step(batch) File "/home/jfq/anaconda3/envs/pinn/lib/python3.10/site-packages/pinnstf2/models/pinn_module.py", line 115, in model_step * loss, preds = self.function_mapping[loss_fn_name](data, loss, self.functions) File "/home/jfq/anaconda3/envs/pinn/lib/python3.10/site-packages/pinnstf2/data/sampler/mesh_sampler.py", line 86, in loss_fn * outputs = functions["pde_fn"](outputs, *x, t) File "/home/jfq/pinns-tf2-main/pinns-tf2-main/examples/yuanzhu/train.py", line 141, in pde_fn * outputs["e1"] = -p_x + (miu / 3) * (u_xx + v_yx + w_zx) + miu(u_xx + u_yy + u_zz) - rou(u_t + u * u_x + v * u_y + w * u_z) TypeError: 'float' object is not callable Set the environment variable HYDRA_FULL_ERROR=1 for a complete stack trace. training: 0/10000 0%|
09-18
【电动车】基于多目标优化遗传算法NSGAII的峰谷分时电价引导下的电动汽车充电负荷优化研究(Matlab代码实现)内容概要:本文围绕“基于多目标优化遗传算法NSGA-II的峰谷分时电价引导下的电动汽车充电负荷优化研究”展开,利用Matlab代码实现优化模型,旨在通过峰谷分时电价机制引导电动汽车有序充电,降低电网负荷波动,提升能源利用效率。研究融合了多目标优化思想与遗传算法NSGA-II,兼顾电网负荷均衡性、用户充电成本和充电满意度等多个目标,构建了科学合理的数学模型,并通过仿真验证了方法的有效性与实用性。文中还提供了完整的Matlab代码实现路径,便于复现与进一步研究。; 适合人群:具备一定电力系统基础知识和Matlab编程能力的高校研究生、科研人员及从事智能电网、电动汽车调度相关工作的工程技术人员。; 使用场景及目标:①应用于智能电网中电动汽车充电负荷的优化调度;②服务于峰谷电价政策下的需求侧管理研究;③为多目标优化算法在能源系统中的实际应用提供案例参考; 阅读建议:建议读者结合Matlab代码逐步理解模型构建与算法实现过程,重点关注NSGA-II算法在多目标优化中的适应度函数设计、约束处理及Pareto前沿生成机制,同时可尝试调整参数或引入其他智能算法进行对比分析,以深化对优化策略的理解。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值